La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées.

Présentations similaires


Présentation au sujet: "Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées."— Transcription de la présentation:

1 Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées

2 10 janvier 2007Cours d'algorithmique 12 / Intranet2 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track, solutions approchées Le back-track, solutions approchées Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Divide and conquer, algorithmes gloutons Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion NP-complétude, Branch-and-Bound NP-complétude, Branch-and-Bound Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours

3 10 janvier 2007Cours d'algorithmique 12 / Intranet3 Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : « n » villes, « n » villes, un réseau routier complet entre ces villes avec les distances, un réseau routier complet entre ces villes avec les distances, La question : La question : Quel est le coût du circuit (point de départ Quel est le coût du circuit (point de départ = point darrivée) le moins cher qui visite = point darrivée) le moins cher qui visite chaque ville une et une seule fois ? chaque ville une et une seule fois ? TSP

4 10 janvier 2007Cours d'algorithmique 12 / Intranet4 Exemple : Exemple : A B C D TSP Un tour à coût 110 ! Un tour à coût 87 ! Il suffit dun inspecter tous les circuits ! Seulement, il y en a n ! pour n villes !

5 10 janvier 2007Cours d'algorithmique 12 / Intranet5 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D Par symétrie ! 45 TSP

6 10 janvier 2007Cours d'algorithmique 12 / Intranet6 Pour avoir un circuit il faut sélectionner « n » arêtes ! Pour avoir un circuit il faut sélectionner « n » arêtes ! La représentation du problème : La représentation du problème : – « c » est le nombre darêtes déjà choisies, – « E » est lensemble de ces arêtes, – « s » est la somme des longueurs des arêtes de « E », – « M » est la matrice courante avec les arêtes interdites ou déjà choisies mises à +. Le principe du back-track : Le principe du back-track : – Nous choisissons une arête pour limposer ou linterdire ! TSP

7 10 janvier 2007Cours d'algorithmique 12 / Intranet7 Lorsque nous avons sélectionné « n » arêtes, Lorsque nous avons sélectionné « n » arêtes, – il faut rendre « s » comme résultat ! Sinon, Sinon, – nous choisissons une arête ( a, b ) de poids fini ! – Si ce nest pas possible, nous sommes dans une impasse et nous rendons + (pas de circuit !). Si larête ( a, b ) ferme le circuit trop tôt, Si larête ( a, b ) ferme le circuit trop tôt, – nous ne pouvons que linterdire ! TSP

8 10 janvier 2007Cours d'algorithmique 12 / Intranet8 TSP Les arêtes sélectionnées ! Nous pouvons compléter vers un circuit ! a b Nous ne pouvons plus compléter vers un circuit !

9 10 janvier 2007Cours d'algorithmique 12 / Intranet9 Interdire une arête revient à : Interdire une arête revient à : – garder le même nombre « c » darêtes sélectionnées, – le même ensemble « E », – la même somme « s », – mettre lentrée ( a, b ) de « M » à +. Notation : Notation : – M [ ( a, b ) < - v, ( c, d ) < - w ] : 2 entrées sont changées. – M [ ( a, _ ) < - v ] : une ligne est modifiée. TSP

10 10 janvier 2007Cours d'algorithmique 12 / Intranet10 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – e < - E v { ( a, b ) } – s < - s + M( a, b ) – M < - M[ ( a, _ ) < - +, ( _, b ) < - + ] – Ensuite, nous continuons lexploration et nous rendons la meilleure des deux solutions ! TSP

11 10 janvier 2007Cours d'algorithmique 12 / Intranet11 Lidée est la suivante : Lidée est la suivante : – Si les arêtes que nous avons déjà choisies sont très chères, – alors, même en continuant de la meilleure manière, notre solution sera très chère, – et même plus chère quune solution complète déjà connue ! Branch and Bound

12 10 janvier 2007Cours d'algorithmique 12 / Intranet12 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous espérons que opt( A ) soit meilleure que opt*. Nous espérons que opt( A ) soit meilleure que opt*. Avant dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Avant dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Branch and Bound lb( A ) <= opt( A )

13 10 janvier 2007Cours d'algorithmique 12 / Intranet13 Nous allons comparer lb( A ) à opt* : Nous allons comparer lb( A ) à opt* : Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( A ). Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( A ). – Ce nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – Tout bénef ! Si opt* > lb( A ) alors on ne peut rien en déduire. Si opt* > lb( A ) alors on ne peut rien en déduire. – En effet, lb( A ) <= opt( A ) et lb( A ) < opt*, mais... ? ? ? – Le calcul lb( A ) ne sert à rien ! Branch and Bound

14 10 janvier 2007Cours d'algorithmique 12 / Intranet14 Principe du Branch-and-Bound ( Séparer et évaluer ) : Principe du Branch-and-Bound ( Séparer et évaluer ) : Nous connaissons opt* ! Nous connaissons opt* ! Nous calculons lb( A ) en « temps raisonnable » ! Nous calculons lb( A ) en « temps raisonnable » ! Si opt* <= lb( A ), nous pouvons éliminer A ! Si opt* <= lb( A ), nous pouvons éliminer A ! Si opt* > lb( A ), nous explorons A normalement ! Si opt* > lb( A ), nous explorons A normalement ! Branch and Bound

15 10 janvier 2007Cours d'algorithmique 12 / Intranet15 Le calcul spéculatif : Le calcul spéculatif : Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Tout est une question dexpérience, purement empirique ! Tout est une question dexpérience, purement empirique ! Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs résultats, si n est grand. Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs résultats, si n est grand. Branch and Bound

16 10 janvier 2007Cours d'algorithmique 12 / Intranet16 Pour notre TSP : Pour notre TSP : Nous avons « c », « E », « s » et « M ». Nous avons « c », « E », « s » et « M ». Donc, il y a « c » lignes complètement remplies avec +. Donc, il y a « c » lignes complètement remplies avec +. Il y a « n - c » lignes contenant des valeurs finies ! Il y a « n - c » lignes contenant des valeurs finies ! Dans chaque ligne, il faut choisir une valeur. Dans chaque ligne, il faut choisir une valeur. Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne. Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Branch and Bound

17 10 janvier 2007Cours d'algorithmique 12 / Intranet17 Exemple : Exemple : Branch and Bound ( ) s = 42 Lidée : Il faudra bien partir de la seconde ville et cela coûtera au moins 15, de même pour les autres villes ! Notre raisonnement reste incomplet car il ne tient pas compte du fait que nous ne pourrons pas aller deux fois vers la première ville !

18 10 janvier 2007Cours d'algorithmique 12 / Intranet18 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 =

19 10 janvier 2007Cours d'algorithmique 12 / Intranet19 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes ! lb ( A ) = 109 = Cette borne inférieure correspond par chance à la longueur du plus court circuit : A – C – B – D – A

20 10 janvier 2007Cours d'algorithmique 12 / Intranet20 Principe du Branch-and-Bound ( Séparer et évaluer ) : Principe du Branch-and-Bound ( Séparer et évaluer ) : Nous connaissons opt* ! Nous connaissons opt* ! Nous calculons lb( A ) en « temps raisonnable » ! Nous calculons lb( A ) en « temps raisonnable » ! Si opt* <= lb( A ), nous pouvons éliminer A ! Si opt* <= lb( A ), nous pouvons éliminer A ! Si opt* > lb( A ), nous explorons A normalement ! Si opt* > lb( A ), nous explorons A normalement ! Branch and Bound

21 10 janvier 2007Cours d'algorithmique 12 / Intranet21 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal !

22 10 janvier 2007Cours d'algorithmique 12 / Intranet22 Solutions approchées Il nest pas complet, mais ce nest pas grave ! Nous relions tout le monde au coût minimal ! 9 11

23 10 janvier 2007Cours d'algorithmique 12 / Intranet23 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal ! Cest un « arbre de recouvrement minimal » (ARM) ! Cest un « arbre de recouvrement minimal » (ARM) ! Son calcul est en O( n^2 ). Son calcul est en O( n^2 ). Nous allons en déduire un circuit, peut-être pas optimal ! Nous allons en déduire un circuit, peut-être pas optimal ! Mais, notre solution sera rapide à calculer ! Mais, notre solution sera rapide à calculer !

24 10 janvier 2007Cours d'algorithmique 12 / Intranet24 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

25 10 janvier 2007Cours d'algorithmique 12 / Intranet25 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

26 10 janvier 2007Cours d'algorithmique 12 / Intranet26 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

27 10 janvier 2007Cours d'algorithmique 12 / Intranet27 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( SOL ) <= coût( CIRC ) = 2*coût( ARM ) Si linégalité triangulaire est vérifiée le circuit SOL que nous trouvons est plus court que CIRC ! ! !

28 10 janvier 2007Cours d'algorithmique 12 / Intranet28 Solutions approchées Nous obtenons un circuit en temps O( n^2 ) ! Nous obtenons un circuit en temps O( n^2 ) ! Notre solution est au pire deux fois plus longue que le circuit optimal ! Notre solution est au pire deux fois plus longue que le circuit optimal ! Cest en fait très mauvais, dans le pire des cas ! Cest en fait très mauvais, dans le pire des cas ! En moyenne, nous sommes à 5% ou 10% de loptimum ! En moyenne, nous sommes à 5% ou 10% de loptimum ! Il y a des algorithmes approchés meilleurs que celui-ci. Il y a des algorithmes approchés meilleurs que celui-ci.

29 10 janvier 2007Cours d'algorithmique 12 / Intranet29 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track, solutions approchées Le back-track, solutions approchées Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Divide and conquer, algorithmes gloutons Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion NP-complétude, Branch-and-Bound NP-complétude, Branch-and-Bound Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Nous avons parlé de tout ceci :

30 10 janvier 2007Cours d'algorithmique 12 / Intranet30 Langages objets Langages objets Nous navons pas parlé de :

31 10 janvier 2007Cours d'algorithmique 12 / Intranet31 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Nous navons pas parlé de :

32 10 janvier 2007Cours d'algorithmique 12 / Intranet32 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Nous navons pas parlé de :

33 10 janvier 2007Cours d'algorithmique 12 / Intranet33 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Nous navons pas parlé de :

34 10 janvier 2007Cours d'algorithmique 12 / Intranet34 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Nous navons pas parlé de :

35 10 janvier 2007Cours d'algorithmique 12 / Intranet35 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Nous navons pas parlé de :

36 10 janvier 2007Cours d'algorithmique 12 / Intranet36 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Nous navons pas parlé de :

37 10 janvier 2007Cours d'algorithmique 12 / Intranet37 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Nous navons pas parlé de :

38 10 janvier 2007Cours d'algorithmique 12 / Intranet38 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Nous navons pas parlé de :

39 10 janvier 2007Cours d'algorithmique 12 / Intranet39 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Nous navons pas parlé de :

40 10 janvier 2007Cours d'algorithmique 12 / Intranet40 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Nous navons pas parlé de :

41 10 janvier 2007Cours d'algorithmique 12 / Intranet41 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Tests de programmes Tests de programmes Nous navons pas parlé de :

42 10 janvier 2007Cours d'algorithmique 12 / Intranet42 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Tests de programmes Tests de programmes... et bien dautres !... et bien dautres ! Nous navons pas parlé de :


Télécharger ppt "Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées."

Présentations similaires


Annonces Google