Université d’Orléans Faculté des Science Département Mathématiques Licence STIC, Semestre 4 Graphes et Algorithmes Année 2005-2006 Plus court chemin. Exercice 1. (1) Existe-t-il une arborescence A à 8 sommets numérotés 1 à 8 de façons à ce que, dans un parcours en profondeur, l’ordre de visite soit 1, 2, 3, 4, 5, 6, 7, 8 et l’ordre de post-visite soit (a) 5, 3, 2, 4, 7, 6, 8, 1 ? (b) 4, 3, 5, 2, 7, 6, 8, 1 ? S’il y a une solution, est-elle unique ? (2) De façon plus générale, si on se donne deux permutaions de 1 à n, à quelle condition existe-t-il un arborescence de n sommets dont les permutations sont les ordres de visites et de post-visite ? S’il y a une solution, est-elle unique ? Exercice 2. Trois couples au bod d’une rivière disposent d’un bateau pouvant transporter 2 personnes au plus. Sachant que chacun des maris est trop jaloux pour accepter que sa femme se trouve sans lui en compagnie d’un autre homme, est-il possible de faire traverser les six personnes ? Exercice 3. P aris − mM ontparnasse 1h P aris − 55 Lyon mm m 55 m m 55 mmm 2h m m 55 mm m m m 55 mmm 55 N antes 55 WWWW WWWW 554, 5h WWWW 3, 5h WWWW 55 WWWW 55 WWWW 7h WWWW 55 WWWW 55 WWWW WWWW 55 WWWW WWWW 5 WWWW 1h Lyon Grenoble 4, 5h 3h M arseille (1) Indiquer l’ordre de visite lors d’un parcours en largeur du graphe (le début est le sommet le plus haut et le plus à gauche parmi les sommets les plus haut). (2) Indiquer l’ordre de visite lors d’un parcours en profondeur du graphe (même début) et l’ordre de postvisite. (3) Déterminer la longueur du plus court chemin de Nantes à Grenoble en utilisant l’algorithme de Floyd (On indiquera les différentes étapes de l’algorithme). (4) Déterminer la longueur du plus court chemin de Nantes à Grenoble en utilisant l’algorithme de Dijkstra (On indiquera les différentes étapes de l’algorithme). Exercice 4. Soit G un graphe orienté valué, s0 un sommet de G. On cherche à déterminer le poids minimal des chemin reliant s0 aux autres sommets en utilisant l’algorithme suivant : on pose d(s0 ) = 0 et d(s) = +∞ pour s 6= s0 . On visite alors le sommet s0 au moyen de la procédure suivante : visiter un sommet s si s n’a pas encore \’et\’e visit\’e soit s’ le successeur de s le plus proche de s d(s’)=d(s)+poids(s,s’) visiter s’ fin si Quelle est la complexité de l’algorithme ? Pourquoi est-il incorrect (il y a plusieurs raison, trouver des contre-exemples pour chacune).