<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Analyse_d%27algorithmes</id>
	<title>Analyse d&#039;algorithmes - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Analyse_d%27algorithmes"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Analyse_d%27algorithmes&amp;action=history"/>
	<updated>2026-05-21T08:42:03Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Analyse_d%27algorithmes&amp;diff=14304&amp;oldid=prev</id>
		<title>Stave le 10 octobre 2022 à 11:20</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Analyse_d%27algorithmes&amp;diff=14304&amp;oldid=prev"/>
		<updated>2022-10-10T11:20:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 octobre 2022 à 11:20&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Responsable &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2021&lt;/del&gt;: Sébastien Tavenas &amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Responsable &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2022 &lt;/ins&gt;: Sébastien Tavenas &amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Adresse courriel : sebastien.tavenas@univ-smb.fr&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Adresse courriel : sebastien.tavenas@univ-smb.fr&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 111 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 111 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  1 4 10 3 5  &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  1 4 10 3 5  &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Partant de la ville V1, on peut aller à la ville V2 et faire le plein (coût 4), puis aller à la ville V4, refaire le plein (coût 3) et on a assez pour arriver à la ville V5. Le coût optimal est donc de 7.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Partant de la ville V1, on peut aller à la ville V2 et faire le plein (coût 4), puis aller à la ville V4, refaire le plein (coût 3) et on a assez pour arriver à la ville V5. Le coût optimal est donc de 7.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!&lt;/del&gt;--En améliorant l&#039;algorithme, on doit pouvoir trouver un algorithme fonctionnant en \(O(n\log n)\). --&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--En améliorant l&#039;algorithme, on doit pouvoir trouver un algorithme fonctionnant en \(O(n\log n)\). --&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Stave</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Analyse_d%27algorithmes&amp;diff=14303&amp;oldid=prev</id>
		<title>Stave : Page créée avec « Responsable 2021: Sébastien Tavenas &lt;br&gt; Adresse courriel : sebastien.tavenas@univ-smb.fr  &lt;!--  == TP == Énoncé du TP : [https://www.lama.univ-savoie.fr/pagesmembres/t... »</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Analyse_d%27algorithmes&amp;diff=14303&amp;oldid=prev"/>
		<updated>2022-10-10T11:19:17Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « Responsable 2021: Sébastien Tavenas &amp;lt;br&amp;gt; Adresse courriel : sebastien.tavenas@univ-smb.fr  &amp;lt;!--  == TP == Énoncé du TP : [https://www.lama.univ-savoie.fr/pagesmembres/t... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Responsable 2021: Sébastien Tavenas &amp;lt;br&amp;gt;&lt;br /&gt;
Adresse courriel : sebastien.tavenas@univ-smb.fr&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
== TP ==&lt;br /&gt;
Énoncé du TP :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/tp.pdf Énoncé]&lt;br /&gt;
&lt;br /&gt;
Des instances d&amp;#039;entrées peuvent être trouvées à :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Cities10 Cities10],&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Cities15 Cities15],&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Cities20 Cities20],&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Cities100 Cities100]&lt;br /&gt;
et un générateur :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/generator_cities.cpp generator_cities.cpp].&lt;br /&gt;
&lt;br /&gt;
Les solutions exactes aux premières instances sont :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Solution10 Solution10],&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Solution15 Solution15],&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Solution20 Solution20].&lt;br /&gt;
Attention, pour le programmes de la partie 1 et 3, c&amp;#039;est normal si vous obtenez des résultats un peu plus grands (je vous rappelle que ces programmes ne calculent que des approximations du résultat, mais devraient être plus rapide à tourner).&lt;br /&gt;
&lt;br /&gt;
Le programme [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/minCouplage.cpp minCouplage.cpp] que vous pouvez utiliser pour la phase 3 de l&amp;#039;algorithme de la section 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problèmes (thème de la programmation dynamique) ==&lt;br /&gt;
&lt;br /&gt;
Templates pour utiliser des fichiers plutôt que l&amp;#039;entrée standard et la sortie standard :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/templateWithFiles.cpp Templates .cpp for files], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/templateWithFiles.py Templates .py for files]&lt;br /&gt;
&lt;br /&gt;
Problème 1 :&lt;br /&gt;
 - Il y a N produits à acheter, chacun ayant un certain prix. Vous avez une somme E d&amp;#039;euros à votre disposition. Le but est d&amp;#039;obtenir le nombre maximum d&amp;#039;objets possible.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs N et E. La ligne suivante contient N entiers: la liste des prix des N produits.&lt;br /&gt;
 - Sortie : Le nombre de produits que l&amp;#039;on peut obtenir à chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : N,E &amp;lt; 10^5.&lt;br /&gt;
 - Fichiers de tests : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb1/small_input small_input], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb1/test100 test100], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb1/test100000 test100000], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb1/solution_small_input solution_small_input], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb1/solution101 solution100]&lt;br /&gt;
 - Exemples de solutions : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb1/gain.py Code python], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb1/gain.cpp Code c++]&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  5 10&lt;br /&gt;
  2 7 4 3 6&lt;br /&gt;
On a assez d&amp;#039;argent pour acheter les produits 1, 3 et 4. On ne peut pas acheter 4 produits. Donc la réponse attendue est 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 2 :&lt;br /&gt;
 - Une échelle à H barreaux. Lorsqu&amp;#039;on se trouve sur un barreau, on peut soit monter au barreau juste au-dessus, soit sauter le prochain barreau pour aller deux crans au-dessus (nos jambes ne sont pas assez longues pour sauter deux barreaux d&amp;#039;un coup). On veut savoir combien il y a de façons d&amp;#039;aller sur le dernier barreau (sans jamais redescendre). &amp;lt;br&amp;gt;Comme ce nombre grossit très vite, on demandera juste le résultat modulo 123456789.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test consiste en 1 ligne qui contient un entier H correspondant au nombre de barreaux de l&amp;#039;échelle. &lt;br /&gt;
 - Sortie : Le nombre de montées possibles pour chaque test (modulo 123456789).&lt;br /&gt;
 - Taille maximale des paramètres : H &amp;lt; 10^8.&lt;br /&gt;
 - Fichiers de tests : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb2/inputs inputs]&lt;br /&gt;
 - Exemples de solutions : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb2/code.py Code python], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb2/code.cpp Code c++]&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  2&lt;br /&gt;
On peut soit monter les deux barreaux d&amp;#039;un coup (en sautant le premier barreaux), soit monter d&amp;#039;abord sur le premier barreau et ensuite sur le second. Donc la réponse attendue est 2. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 3 :&lt;br /&gt;
 - Devant vous, il y a N distributeurs. Chacun contient une pile de M objets. Quand vous mettez 1 euro dans un distributeur, le premier objet (le plus bas) de cette pile tombe et vous l&amp;#039;obtenez (donc si vous souhaitez un objet particulier, il va falloir prendre tous les objets au-dessous). Chaque objet a une certaine valeur. Le but est de maximiser la valeur obtenue avec une certaine somme d&amp;#039;euros E initiale.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs N, M et E. Ensuite on trouve N nouvelles lignes : chacune correspond à un distributeur. Sur ces lignes, on trouve les M valeurs des objets dans ce distributeur (la première valeur correspond au premier objet qui va tomber).&lt;br /&gt;
 - Sortie : La valeur maximale que l&amp;#039;on peut obtenir à chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : valeurs des objets &amp;lt; 100, M &amp;lt; 100, N &amp;lt; 100.&lt;br /&gt;
 - Fichiers de tests : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb3/small_input small_input], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb3/dataDistrib10 dataDistrib10], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb3/dataDistrib50 dataDistrib50], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb3/dataDistrib100 dataDistrib100]&lt;br /&gt;
 - Exemples de solutions : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb3/algoDistrib.py Code python], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Cours_M2/Pb3/algoDistrib.cpp Code c++]&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  2 4 5&lt;br /&gt;
  2 1 10 3&lt;br /&gt;
  9 5 1 7&lt;br /&gt;
Avec 5 euros, on peut acheter les 3 premiers objets du premier distributeur (de valeurs 2, 1 et 10) et les deux premiers du deuxième distributeur de valeurs 9 et 5). Ce qui fait une valeur totale de 27. On ne peut pas obtenir plus. Donc la réponse attendue est 27.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 4 :&lt;br /&gt;
 - Vous vivez dans un quartier de New-York. La carte du quartier correspond à une grille (à coordonnées entières). Vous habitez en position (0,0) de cette grille (au sud-ouest) et vous travaillez en position (X,Y) (au nord-est). Pour changer, chaque matin, vous essayer d&amp;#039;aller au travail avec un nouveau chemin (mais vous avez seulement le temps de prendre un chemin rapide : à tout moment, vous devez vous déplacer soit vers l&amp;#039;est, soit vers le nord.). Vous aimeriez connaitre le nombre de  chemins possibles. Toutefois il y a un soucis, certaines routes sont bloquées. &amp;lt;br&amp;gt;Ce nombre grossissant vite, on s&amp;#039;intéressera au résultat modulo 123456789.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs X,Y et B (le nombre de blocages dans le quartier). Ensuite on trouve B nouvelles lignes : chacune correspond à un blocage et est de la forme : &amp;#039;a b d&amp;#039; où a et b sont des nombres et d (la direction du blocage) est soit &amp;#039;h&amp;#039; (horizontal), soit &amp;#039;v&amp;#039; (vertical). Par exemple, un blocage : &amp;#039;3 5 h&amp;#039; signifie que depuis la position (3,5), la route qui va vers l&amp;#039;est est bloquée.&lt;br /&gt;
 - Sortie : Le nombre de chemins à chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : X &amp;lt; 10000, Y &amp;lt; 10000.&lt;br /&gt;
 - Fichiers de tests : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/small_input small_input], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/quartier10 quartier10], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/quartier100 quartier100], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/quartier1000 quartier1000], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/quartier10000 quartier10000]&lt;br /&gt;
 - Solutions : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/solution10 solution10], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/solution100 solution100], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/solution1000 solution1000], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb4/solution10000 solution10000]&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  2 2 2&lt;br /&gt;
  1 0 &amp;#039;v&amp;#039;&lt;br /&gt;
  1 1 &amp;#039;v&amp;#039;&lt;br /&gt;
On peut vérifier que tous les chemins possibles sont HHVV, VHHV et VVHH (où H correspond à un pas horizontal et V à un pas vertical). Donc la réponse attendue est 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 5 :&lt;br /&gt;
 - Il y a D dés, chacun avec F faces. Nous voulons calculer la probabilité d&amp;#039;obtenir la somme S quand les dés sont lancés. en fait, il suffit de compter combien de fois la somme S peut être obtenue. Par exemple, avec 2 dés de 4 faces, il y a 3 façons d&amp;#039;obtenir la somme 6 : (2,4), (3,3) et (4,2). &amp;lt;br&amp;gt;Ce nombre grossissant vite, on s&amp;#039;intéressera au résultat modulo 123456789.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test correspond à une ligne où apparaissent trois entiers D, F et S.&lt;br /&gt;
 - Sortie : Le nombre de façons d&amp;#039;obtenir S à chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : D &amp;lt; 1000,  F &amp;lt; 1000, S &amp;lt; 500000.&lt;br /&gt;
 - Fichiers de tests :[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/dataDices10 dataDices10], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/dataDices100 dataDices100], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/dataDices1000 dataDices1000], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/dataDices10000 dataDices10000]&lt;br /&gt;
 - Solution :[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/solution10 solution10], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/solution100 solution100], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/solution1000 solution1000]&lt;br /&gt;
 - Template : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/Pb5/TemplateDices Template]&lt;br /&gt;
 - Générateur : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/generator_dices.cpp generatorDices]&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  2 4 6&lt;br /&gt;
Comme expliqué dans l&amp;#039;énoncé, la réponse attendue est 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 6 :&lt;br /&gt;
 - Un camion doit acheminer sa cargaison depuis la ville V1 vers la ville Vn. Lors de ce voyage, il traverse les villes   V1, V2, V3, ..., Vn. À son départ, le camion a le réservoir plein : il contient m gallons d&amp;#039;essence. Pour aller d&amp;#039;une ville à la suivante le camion utilise un gallon d&amp;#039;essence. Toutefois, dans chacune des villes Vi, le camion peut faire le plein en payant un prix Ci (si Ci =0, cela signifie que la ville Vi ne possède pas de station d&amp;#039;essence et donc qu&amp;#039;il n&amp;#039;est pas possible de faire le plein ici). Donnés le nombre de villes n, la taille du réservoir m et le prix du plein dans chacune des villes tabPrix, trouver un algorithme qui identifie le coût minimal d&amp;#039;un tel voyage.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test consiste en 2 lignes. La première contient deux entiers n et m correspondant au nombre de villes et à la capacité du réservoir. La seconde ligne contient n entiers correspondant aux prix du plein dans chaque ville.&lt;br /&gt;
 - Sortie : Le prix minimal à payer lors de chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : n &amp;lt; 1000000, m &amp;lt; 10000, C &amp;lt; 100&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  5 2&lt;br /&gt;
  1 4 10 3 5  &lt;br /&gt;
Partant de la ville V1, on peut aller à la ville V2 et faire le plein (coût 4), puis aller à la ville V4, refaire le plein (coût 3) et on a assez pour arriver à la ville V5. Le coût optimal est donc de 7.&lt;br /&gt;
&amp;lt;!--En améliorant l&amp;#039;algorithme, on doit pouvoir trouver un algorithme fonctionnant en \(O(n\log n)\). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème 7 :&lt;br /&gt;
 - Une suite de nombres est appelée en zig-zag si la différence entre les paires successives de nombres alterne entre positive et négative. Une suite avec au plus deux éléments est trivialement toujours en zig-zag. Par exemple, 1, 7, 4, 9, 2, 5 est une suite en zig-zag car les différences (6,-3,5,-7,3) alternent. Par opposition, les suites 1,4,7,2,5 et 1,7,4,5,5 ne sont pas en zig-zag. Donnée une suite d&amp;#039;entiers, le but est de trouver la longueur de la plus longue sous-suite qui est en zig-zag.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test consiste en 2 lignes. La première contient un entier N correspondant à la taille de la suite. La seconde ligne contient N entiers correspondant aux valeurs de la suite.&lt;br /&gt;
 - Sortie : La longueur de la plus grande sous-suite en zig-zag pour chaque test.&lt;br /&gt;
 - Taille maximale des paramètres : valeurs des objets &amp;lt; 100, M &amp;lt; 40, N &amp;lt; 50.&lt;br /&gt;
Exemple d&amp;#039;un test. Sur l&amp;#039;entrée :&lt;br /&gt;
  10&lt;br /&gt;
  1, 17, 5, 10, 13, 15, 10, 5, 16, 8&lt;br /&gt;
Il y a plusieurs sous-suites en zig-zag de longueur 7, par exemple 1,17,10,13,10,16,8. Aucune n&amp;#039;a longueur 8. Donc la réponse attendue est 7. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problèmes (thème des graphes) ==&lt;br /&gt;
&lt;br /&gt;
Template pour les graphes : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/TemplateGraph.cpp Template]&lt;br /&gt;
&lt;br /&gt;
Générateurs : [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/generator_maze.cpp generator_maze], [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/plot_maze.cpp plot_maze]&lt;br /&gt;
&lt;br /&gt;
Problème Labyrinthe :&lt;br /&gt;
 - Donné un labyrinthe, on aimerait savoir s&amp;#039;il existe un chemin vers la sortie. Le chemin sera basé sur une grille. Entre deux cases adjacentes, on pourra se déplacer s&amp;#039;il n&amp;#039;y a pas de mur entre.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec deux entiers L et H. Le premier est la largeur et le second la hauteur du labyrinthe. Ensuite viennent H lignes (la première correspond au nord). Chacune contient L caractères (le premier caractère correspond au point le plus à l&amp;#039;ouest de cette ligne). Le caractère &amp;#039;E&amp;#039;, signifie que depuis ce point on peut aller à l&amp;#039;est mais qu&amp;#039;il y a un mur en direction du sud, &amp;#039;S&amp;#039;, signifie que l&amp;#039;on peut aller au sud mais pas à l&amp;#039;est, &amp;#039;N&amp;#039; (None) signifie que l&amp;#039;on peut aller ni au sud, ni à l&amp;#039;est et enfin &amp;#039;B&amp;#039; (Both) signifie que l&amp;#039;on peut aller au sud et à l&amp;#039;est. (S&amp;#039;il n&amp;#039;y a pas de mur, on peut bien sûr aussi aller à l&amp;#039;ouest ou au nord).&lt;br /&gt;
 - Sortie : Pour chaque test, dire s&amp;#039;il y a un chemin depuis l&amp;#039;entrée (au nord-ouest) vers la sortie (au sud-est).&lt;br /&gt;
 - Taille maximale des paramètres : L &amp;lt; 1000, H &amp;lt; 1000.&lt;br /&gt;
 - Hint : DFS (voire A*)&lt;br /&gt;
&lt;br /&gt;
Problème Labyrinthe II :&lt;br /&gt;
 - Ce coup-ci est organisée une course de labyrinthes. Donc non seulement, on aimerait trouver un chemin vers la sortie, mais on voudrait que ce chemin soit le plus court !&lt;br /&gt;
 - Entrée : Identique au problème précédent.&lt;br /&gt;
 - Sortie : Pour chaque test, donner la longueur du plus court chemin depuis l&amp;#039;entrée (au nord-ouest) vers la sortie (au sud-est).&lt;br /&gt;
 - Taille maximale des paramètres : L &amp;lt; 1000, H &amp;lt; 1000.&lt;br /&gt;
 - Hint : BFS&lt;br /&gt;
&lt;br /&gt;
Problème Labyrinthe III :&lt;br /&gt;
 - Après avoir beaucoup participé à des expéditions de labyrinthes, nous voilà passés passés de l&amp;#039;autre côté de l&amp;#039;organisation. On voudrait donc créer de superbes labyrinthes. Et on est un peu difficile, on veut que les labyrinthes que l&amp;#039;on fabrique aient un et exactement un chemin qui mène du départ à l&amp;#039;arrivée. Pouvez-vous coder un tel algorithme pour nous aider ?&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test consiste en 1 ligne contenant deux entiers L et H (largeur et hauteur du labyrinthe à fabriquer). &lt;br /&gt;
 - Taille maximale des paramètres : L &amp;lt; 1000, H &amp;lt; 1000.&lt;br /&gt;
 - Hint : Kruskal&lt;br /&gt;
&lt;br /&gt;
Réseau téléphonique : &lt;br /&gt;
 - Dans une compagnie de téléphone, les lignes ont une certaine bande-passante (BW). Nous voulons router les appels téléphoniques via le chemin avec bande-passante maximale. La bande-passante d&amp;#039;un chemin est donnée par sa liaison la plus faible (BW(path) = min_(e in path)(BW(e) ). &lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs V et E (les nombres de sommets et de liaisons). Ensuite on trouve E nouvelles lignes : chacune correspond à une arête (non-orientée) et est de la forme : &amp;#039;a b w&amp;#039; où a et b sont des sommets (0 &amp;lt;= a,b &amp;lt; V) et w est la bande passante de cette liaison.&lt;br /&gt;
 - Sortie : Pour chaque test donner le chemin avec bande-passante maximale.&lt;br /&gt;
 - Taille maximale des paramètres : V &amp;lt; 100000, E &amp;lt; 1000000, BW &amp;lt; 1000. &lt;br /&gt;
 - Hint : Dijkstra&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problème Livraison :&lt;br /&gt;
 - Nous venons de monter une entreprise de skis eléctriques au Bourget-du-Lac, et on aimerait exporter nos produits dans un certain nombres de villes V (par exemple V = [Bourget, Tokyo, Grenoble, Mexico, Brest, Sydney]). On fait affaire avec un prestataire de livraison qui a dans son catalogue un certain nombre de liaisons qu&amp;#039;il est capable de faire (par exemple L = [Mexico -&amp;gt; Sydney, Tokyo-&amp;gt; Mexico, Mexico -&amp;gt; Grenoble, Brest -&amp;gt; Grenoble]). On aimerait s&amp;#039;occuper  du nombre minimal de liaisons à rajouter pour pouvoir être capable de livrer dans toutes les villes.&lt;br /&gt;
 - Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs n et l (les nombres de villes et de liaisons déjà existantes). Sur la ligne suivante, on trouve la liste des n villes. Enfin on trouve l nouvelles lignes : chacune correspond à une liaison effectuée par le prestataire (orientée) et est de la forme : &amp;#039;a -&amp;gt; b&amp;#039; où a et b sont deux villes.&lt;br /&gt;
 - Sortie : Pour chaque test donner le nombre minimal de liaisons à rajouter pour pouvoir livrer toutes les villes.&lt;br /&gt;
 - Taille maximale des paramètres : n &amp;lt; 100000, E &amp;lt; 1000000.&lt;br /&gt;
 - Hint : Tarjan, Kosaraju&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analyse amortie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tas binaires vs. Tas binomiaux vs. Tas de Fibonacci ===&lt;br /&gt;
&lt;br /&gt;
Donner pour chacune de ces structures la complexité (amortie si c&amp;#039;est le cas) des différentes opérations :&lt;br /&gt;
 - ajouter un élément&lt;br /&gt;
 - trouver le plus petit élément&lt;br /&gt;
 - supprimer le plus petit élément&lt;br /&gt;
 - modifier la valeur d&amp;#039;une entrée&lt;br /&gt;
 - supprimer un élément&lt;br /&gt;
 - fusionner deux tas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Union-Find ===&lt;br /&gt;
&lt;br /&gt;
 - Problème de connexité. On cherche une structure qui permet de savoir si deux points dans un graphe sont connexes et qui garde &amp;#039;conserve&amp;#039; les résultats de manière à pouvoir répondre à une longue suite de telles questions de connexité. &lt;br /&gt;
 - Abstraction. On veut identifier (petit à petit, après requêtes) les classes d&amp;#039;équivalence dans l’ensemble {0, 1, 2, . . . , n−1}. Opérations supportées :&lt;br /&gt;
   - find(x) retourne un représentant de la classe de x (chaque classe a un unique représentant). find(x) = find(y) si et seulement si les deux appartiennent dans la même classe (ils sont connexes),&lt;br /&gt;
   - union(x, y)  établit l’équivalence (connexion) entre x et y&lt;br /&gt;
 - Exemple : union(3, 4); union(4, 9); union(8, 0); union(2, 3); union(7, 4); union(6, 4); union(5, 0); find(2); find(6)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donner la complexité des deux opérations (&amp;#039;union&amp;#039; et &amp;#039;find&amp;#039;) dans les quatre structures suivantes :&lt;br /&gt;
 - On stocke dans un tableau T de taille n : T[x] est le représentant de x.&lt;br /&gt;
 - Lors de l&amp;#039;union de u avec v, on stocke dans v un pointeur vers u.&lt;br /&gt;
 - Lors de l&amp;#039;union de u et de v, on dirige la plus petite classe vers l&amp;#039;autre. Plus précisément, on garde en mémoire la taille des classes, et si la classe de u est plus petite que v, on pointe u vers v, sinon on pointe v vers u.&lt;br /&gt;
 - Identique à la précédente mais avec compression de chemin : quand on cherche un représentant, on redirige tous les sommets parcourus directement vers le représentant.&lt;br /&gt;
&lt;br /&gt;
=== Si vous vous ennuyez ===&lt;br /&gt;
&lt;br /&gt;
Coder une structure de donnée qui encode un ensemble d&amp;#039;entiers et qui supporte les deux opérations suivantes :&lt;br /&gt;
 - Ajout(i) : Ajoute un élément i dans la structure.&lt;br /&gt;
 - SuppressionMoitSup() : Supprime les n//2 plus grands entiers de la structure où n est le nombre d&amp;#039;entiers dans la structure.&lt;br /&gt;
&lt;br /&gt;
Le but est d&amp;#039;obtenir une structure pour laquelle les deux opérations ci-dessus sont en temps amorti constant (supposant qu&amp;#039;on parte de la structure vide.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Programmation linéaire ==&lt;br /&gt;
Exemples de programmes utilisant MIP de Python :&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/SacAdos.py SacAdos.py]&lt;br /&gt;
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/Materiel_online/dames.py dames.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
#== Quelques ressources bibliographiques ==&lt;br /&gt;
#&lt;br /&gt;
#Ouvrage de référence :&lt;br /&gt;
## Cormen, Leiserson, Rivest et Stein, Algorithmique, 3e edition (2009). ( Aussi appelé &amp;quot;Introduction à l&amp;#039;algorithmique&amp;quot; pour les deux premières #éditions )&lt;br /&gt;
#&lt;br /&gt;
#Autres références bibliographiques :&lt;br /&gt;
## Wilf, Algorithms and Complexity, (1994). [http://www.math.upenn.edu/%7Ewilf/AlgoComp.pdf Disponible en ligne]&lt;br /&gt;
## Garey et Johnson, Computers and intractability a guide to the theory of NP-completeness. (1979).&lt;br /&gt;
#!-- # Paschos, Complexité et approximation polynomiale, (2004). --&lt;br /&gt;
## Hopcroft et Ullman, Introduction to automata theory, languages, and computation, (1979). &lt;br /&gt;
#&lt;br /&gt;
#== TP ==&lt;br /&gt;
#&lt;br /&gt;
#Dates provisoires : &lt;br /&gt;
# - 22/25 septembre&lt;br /&gt;
# - 9 octobre&lt;br /&gt;
# - 16 octobre&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TP1 les 22/25 septembre : Analyser la complexité d&amp;#039;algorithmes&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/tp1_enonce.pdf Sujet du TP 1]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/fichiersTP1/ Fichiers pour le TP]&lt;br /&gt;
# - Nécessité d&amp;#039;importer la librairie matplotlib&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TP2 le 9 octobre : Problème NP-complet&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/tp-part-1.pdf Sujet du TP 2 (Partie I)]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/instances/ Exemples d&amp;#039;entrée]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/generator.py Générateur aléatoire d&amp;#039;entrées]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TP3 le 16 octobre : Réductions&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/tp-part-2.pdf Sujet du TP 2 (Partie II)]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/solveClique.py Esquisse de résolveur pour Clique]&lt;br /&gt;
# - Nécessité d&amp;#039;importer la librairie pycosat&lt;br /&gt;
#&lt;br /&gt;
#!--- &lt;br /&gt;
#TP les 10 octobre et 6 novembre.&lt;br /&gt;
#&lt;br /&gt;
# - Énoncé du TP, première partie : [https://mycore.core-cloud.net/index.php/s/CmLxKnYRdR3ots9 tp-part-1.pdf]. Plus de détails pour chacuns des #trois sujets :&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/pGWYh5foa81qWMQ tp-part-1-CHO.pdf]&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/28cFgEefXqte4hO tp-part-1-CHNO.pdf]&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/qttUkOHtF6Fawel tp-part-1-3C.pdf]&lt;br /&gt;
#Voici aussi un exemple d&amp;#039;entrée pour chaque sujet :&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/0vzGaxLoTG7ILMV Graphe-vrai-CHO.pdf]&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/QUHwEnb8nlkpFxh Graphe-vrai-CHNO.pdf]&lt;br /&gt;
#   * [https://mycore.core-cloud.net/index.php/s/ItC1deMoQ2dZ1So Graphe-vrai-3C.pdf]&lt;br /&gt;
#-----&lt;br /&gt;
#TP3 le 18 octobre : Réductions polynomiales&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/tp-part-2.pdf Énoncé du TP, deuxième partie].&lt;br /&gt;
# - Documents pour les réductions :&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Avro--Chapter10--ChallengingReductions.pdf Avro #Chapitre 10]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_Coloration.pdf Cormen-Leiserson-Rivest-Stein #Coloration]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO.pdf Cormen-Leiserson-Rivest-Stein HNO]&lt;br /&gt;
#(Attention la figure 34.16 est incorrecte. La remplacer par la figure 34.16 de la [https://www.lama.univ-#savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO_english.pdf Version anglaise])&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cours_Hon_HO2.pdf Hon HO] [https://mycore.core-#cloud.net/index.php/s/eQ1hJsUxci863kx Version francaise]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/garey-HNO.pdf Garey-Johnson HNO]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/wiki_proof.pdf wiki proof]&lt;br /&gt;
# - Voici des exemples d&amp;#039;entrée pour 3SAT et Couverture par Sommets :&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/3sat_vrai 3SAT-vrai]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/CS_vrai CS-vrai]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/3sat_faux 3SAT-faux]&lt;br /&gt;
#   * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/CS_faux CS-faux]&lt;br /&gt;
#&lt;br /&gt;
#--&lt;br /&gt;
#&lt;br /&gt;
#== Déroulement (2020) ==&lt;br /&gt;
#&lt;br /&gt;
#Cours 1 (7 septembre) : Introduction&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/CM1.pdf Introduction]&lt;br /&gt;
# - Exemple de différents tris &lt;br /&gt;
# - Notions d&amp;#039;instance et de problème&lt;br /&gt;
# - Notion de complexité asymptotique&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/grandO.pdf Grand-O de la notation de Landau]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TD 1 (10 septembre) : Analyses d&amp;#039;algorithmes&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/ExoAnalyse.pdf Sujet du TD]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/rappelsLog.pdf Fonctions mathématiques de base : polynômes, #exponentielles et logarithmes]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#Cours 2 (17 septembre) : Algorithmes récursifs (Diviser pour régner)&lt;br /&gt;
# - Présentation des algorithmes Diviser-pour-régner.&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3Cours/fct_rec.pdf Théorème général.]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3Cours/distance_min.pdf distance minimale]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TD 2 (29 septembre) : Exercices d&amp;#039;analyse pour des algos récursifs (&amp;quot;Master Theorem&amp;quot;)&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S4TD/exos_diviser_pour_regner.pdf Exercices, complexité des fonctions #récursives].&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/Solution-TD_operationsEntiers.pdf Solutions des questions 6 et 7].&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/Solution_Question5.pdf Solution de la question 5].&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#Cours 3 (2 octobre) : Programmation dynamique&lt;br /&gt;
# - Algorithme récursif pour les nombres de Fibonacci&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5Cours/decoupe_barre_acompleter.py Programme python pour le problème #de découpe de barres]&lt;br /&gt;
# - Algorithme de [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5Cours/Levenshtein.pdf Levenshtein]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Cours_ProgDyn_Fibo_Levenshtein.pdf Présentation &amp;#039;tablette&amp;#039; vue en #cours]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#TD 3 (5 octobre) : Exercices sur la programmation dynamique&lt;br /&gt;
#&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/exemples_pour_prog_dynamique.pdf Sujet du TD]&lt;br /&gt;
# - Si besoin, problème du sous-tableau de somme maximale.&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Notes_TD_progDyn.pdf Notes lors de la correction]&lt;br /&gt;
#  &lt;br /&gt;
#&lt;br /&gt;
#Cours 4 (13 octobre) : Premières réductions algorithmiques&lt;br /&gt;
# - Un liste de réductions algorithmiques entre différents problèmes&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/Notes_red_3SUM_3Collinear.pdf Note sur les mathématiques derrière la #réduction de 3SUM vers 3COLLINEAR]&lt;br /&gt;
#!-- Réductions de NP-complétude&lt;br /&gt;
#!-- - Problèmes NP-difficiles et NP-complets.&lt;br /&gt;
# - Théorème de Cook-Levin. [https://mycore.core-cloud.net/index.php/s/V9OUMtvnDuezpKl Cook-Levin]&lt;br /&gt;
# - Preuve de NP-Complétude. !-- : Couverture des arêtes et k-coloriage. --&lt;br /&gt;
#--&lt;br /&gt;
#!-- Complexité des problèmes&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/presentation1.0.pdf Introduction aux classes de complexité.]&lt;br /&gt;
#!-- - Complexité d&amp;#039;un problème.&lt;br /&gt;
# - Classe P.&lt;br /&gt;
#!-- - Types de problèmes ( décision, optimisation, existence ). --&lt;br /&gt;
# - Réduction polynomiale.&lt;br /&gt;
# - Algorithme de vérification.&lt;br /&gt;
# - Classe NP.&lt;br /&gt;
#--&lt;br /&gt;
#TD 4 (14 octobre) : Clique et consorts&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Clique-EI-CS.pdf Réductions autour de Clique et NP-complétude de #Clique]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/ProblemeSAT.pdf Notes sur le problème SAT]&lt;br /&gt;
#!-- Programmation dynamique&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/TD-prog_dynamique.pdf Énoncé de TD.]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Levenshtein.pdf Correction sur la distance de Levenshtein.]&lt;br /&gt;
#--&lt;br /&gt;
#&lt;br /&gt;
#Cours 5 (23 octobre, matin) : Classes de complexité et NP-complétude&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/IntroNPcompletude.pdf Petite introduction en survol de la NP-#complétude]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/INFO704-Classes_de_complexite.pdf Notes de cours sur les classes #de complexité]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/VraiFaux-NP-completude.pdf Petit Vrai/Faux sur la NP-complétude]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/Levin-Cook.pdf Hors programme : slides sur les classes de #complexité que j&amp;#039;avais utilisé lors d&amp;#039;une année antérieure quand je faisais la preuve du théorème de Levin-Cook]&lt;br /&gt;
#&lt;br /&gt;
#TD 5 (23 octobre, après-midi) : Classes de complexité et NP-complétude&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/Enonce_TD.pdf Énoncé du TD]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/INFO704-Probleme_sac_a_dos.pdf Problème du sac à dos]&lt;br /&gt;
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/Corrige_exercice3.pdf Corrigé de l&amp;#039;exercice 3 du TD]&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#== Annales Examen ==&lt;br /&gt;
#&lt;br /&gt;
#[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/Examen/examen.pdf Examen 2017]&lt;br /&gt;
#&lt;br /&gt;
#== Historique ==&lt;br /&gt;
#Ce cours était donné précédemment par Xavier Provençal.&lt;br /&gt;
#Ce cours est une refonte de [http://lama.univ-savoie.fr/mediawiki/index.php/INFO724_:_Algorithmique_avanc%C3%A9e,_graphes_et_NP-#Compl%C3%A9tude INFO724 Algorithmique avancée, graphes et NP-complétude].&lt;br /&gt;
#&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stave</name></author>
	</entry>
</feed>