TD2 - LIFL

publicité
Algorithmique Avancée et Complexité
UFR IEEA
20052006
Master 1 d'Informatique
Fiche TD: Graphes 2
Exercice 1 : Chemins Maximaux
Soit un graphe orienté pondéré. On cherche à calculer les chemins de valeur maximale entre une source et tous
les sommets.
Q 1. A quelle condition a-t-on un chemin de valeur maximale entre une source et un sommet quelconque?
Q 2. Comment peut-on transformer le problème de recherche de chemins de valeur maximale en celui de
recherche de chemins de valeur minimale?
Q 3. On suppose que les poids sont non négatifs. Peut-on adapter l'algorithme de Dijkstra pour calculer les
chemins de valeur maximale entre une source et tous les sommets?
Q 4. Peut-on adapter l'algorithme de Bellman-Ford pour calculer les chemins de valeur maximale entre une
source et tous les sommets?
Exercice 2 : Des variantes...
Probabilités Soit un graphe pondéré dirigé comportant éventuellement des circuits. Les valeurs des arcs
représentent des probabilités. On cherche à calculer un chemin de plus grande probabilité entre un sommet et
tous les autres sommets du graphe , sachant que la probabilité d'un chemin est le produit de celles des arcs qui
le composent.
Comment faire?
Q 1.
Débits
Q 2.
Soit un graphe pondéré dirigé comportant éventuellement des circuits. Les valeurs des arcs représentent
maintenant des débits maxiamux. On cherche à calculer un chemin de débit maximal entre un sommet et
tous les autres sommets du graphe , sachant que le débit d'un chemin est le minimum de ceux des arcs qui le
composent. Quel algorithme peut-on utiliser?
Exercice 3 : Tri topologique
Soit un graphe orienté G = (S, A). Un tri topologique est une énumération des sommets s1 , ..., sn qui respecte
l'ordre de précédence du graphe, c.à.d. que si (si , sj ) est un arc, on doit avoir i < j .
Q 1. Soit le graphe avec 6 sommets A, B, C, D, E, F et les arcs suivants:
(A, B), (A, D), (B, C), (D, C), (D, E), (C, F ), (E, F ) .
Proposer un tri topologique pour ce graphe.
Q 2. A quelle condition sur G une telle énumération existe-t-elle?
Q 3. Comment peut-on utiliser le parcours en profondeur du graphe pour réaliser un tri topolgique?
Q 4. Proposer un autre algorithme pour réaliser un tri topologique.
Exercice 4 : Chemin critique
Un projet est un ensemble de tâches avec leurs dépendances, qu'on peut voir comme un graphe orienté G = (S, A)
où les sommets sont les tâches.
On suppose qu'on dispose pour chaque tâche d'une durée (≥ 0). Les tâches sont numérotées de 1 à n. Donc
un arc (i, j) indique la tâche j ne peut être commencée avant que la tâche i ne soit nie. On cherche donc à
eectuer les tâches en respectant bien sûr les dépendances.
Une programmation consiste donc à attribuer à chaque tâche une date de début deb(i), la date de n étant
deb(i) + duree(i). On supppose que des tâches indépendantes peuvent être exécutées en parallèle. La durée de
l'exécution correspondante sera alors le maximum des deb(i) + duree(i) (on suppose que la plus petite date de
début est 0).
Par exemple, supposons qu'on ait 6 tâches A, ..., F avec comme dépendances:
(A, B), (A, D), (B, C), (D, C), (D, E), (C, F ), (E, F )
et comme durées
1
durée A: 2, durée B: 1, durée C: 4, durée D: 1, durée E: 3, durée F: 2.
Q 1. A quelle condition une programmation est-elle correcte, i.e. respecte-t-ellle les dépendances? Donnez une
programmation correcte des tâches sur l'exemple.
Q 2. A quelle condition sur G une telle programmation existe-t-elle?
Q 3.Donnez une programmation correcte de durée minimale des tâches sur l'exemple.
Q 4. Quel lien voyez-vous entre ce problème et celui du plus long chemin? Comment calculeriez-vous la durée
minimale d'une programmation correcte et une programmation correspondante?
Exercice 5 : Bellman-Ford: le cas acyclique
Implémenter l'algorithme de Bellman-Ford de façon dynamique itérative dans le cas d'un graphe acyclique.
Exercice 6 : Horaires
Supposions que vous disposiez des horaires de vol (ou de bus, de train, de bateau..) direct entre n villes. Vous
voulez programmer une application qui cherche le plus court chemin entre deux villes à une heure donnée. On
supposera dans un premier temps qu'on néglige le temps de transfert entre deux vols.
Donc:
Donnée: les horaires des vols directs entre les villes une heure de départ, une ville de départ, une ville
d'arrivée
Sortie: l'heure d'arrivée au plus tôt dans la ville d'arrivée et le plan de vol.
Sur quel algorithme baseriez-vous votre implémentation? Comment? Justier.
Comment prendriez-vous en compte dans votre calcul les temps nécessaires pour les correspondances?
2
Téléchargement