0% ont trouvé ce document utile (0 vote)
57 vues2 pages

Algorithmes de graphes : TP Paris Dauphine

Transféré par

consciousnesscollapse
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
57 vues2 pages

Algorithmes de graphes : TP Paris Dauphine

Transféré par

consciousnesscollapse
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Paris Dauphine Algorithmes dans les graphes

Licence Informatique des Organisations - 3ème année 2022-2023

TP noté
Durée : 1h30
Soit le graphe G valué suivant :
8

0 2 1 4 5

2 6
3 6 −1 1
3 11 2
−3
1 −1
3 1 5
−6
7
15

10

1. Déterminer un plus court chemin allant de 0 à 7 dans G à l’aide de l’algorithme de général. Pour
cela, vous ferez appel à la fonction algoGeneral() disponible dans la section TPnote sur moodle
dans le fichier [Link]. Ce fichier contient également une description de G sous la forme d’une
liste d’arcs. Les arguments de la fonction algoGeneral() sont un graphe G de type DiGraph de
networkx et un sommet i0. Cette fonction détermine les plus courts chemins issus de i0 en appliquant
l’algorithme général de Ford-Bellman et renvoie une liste de listes : la sous-liste k contient les marques
(λk (i), pk (i)) obtenues à l’itération k. Afficher la valeur du plus court chemin allant de 0 à 7 dans G
ainsi que le nombre d’arcs nbA qu’il contient.
2. Afficher les plus courts chemins allant de 0 à 7 et leur valeur (lorsqu’ils existent) :
- comportant au plus nbA arcs,
- comportant au plus nbA-1 arcs,
- ...
- comportant au plus 2 arcs,
- comportant au plus 1 arcs.

Indication : Après avoir appliqué l’algorithme général, on dispose des marques (λk (i), pk (i)) pour tout
i et pour tout k allant de 1 à nbA. Pour déterminer un plus court chemin allant de 0 à 7 comportant au
plus t arcs, on récupère le prédécesseur du sommet 7 contenu dans pt (7) et noté s, puis on récupère le
prédécesseur de s contenu dans pt−1 (s)... jusqu’à atteindre le sommet 0.
3. Un arc est dit vital si sa suppression entraîne une augmentation de la longueur du plus court chemin
allant de i0 à j0. Ecrire une fonction appelée detVital() qui prend en argument un graphe G,
un sommet origine i0, un sommet destination j0, un plus court chemin µ∗ allant de i0 à j0 et sa
valeur v(µ∗ ). Cette fonction renvoie la liste des arcs vitaux. Pour savoir si un arc (i, j) de µ∗ est vital,
il suffit de le supprimer de G avant de calculer la valeur v d’un plus court chemin allant de i0 à j0 : si
v > v(µ∗ ) l’arc (i, j) est vital.
4. Afficher à l’écran une représentation graphique de G (aussi proche que possible de celle de l’énoncé)
en coloriant en rouge les arcs vitaux pour aller de 0 à 7.

1
5. Un arc vital est maximal si sa suppression engendre la plus grande augmentation de la longueur du plus
court chemin allant de i0 à j0. Afficher l’arc vital maximal pour aller de 0 à 7 dans G.
6. Proposer une variante de la fonction algoGeneral() permettant de trouver tous les plus courts
chemins partant de i0. Représenter graphiquement l’ensemble des plus courts chemins allant de 0 à 7.
7. Déposer votre programme (nommé votreNom_votrePré[Link]) sous moodle dans la section TPnoté.

Vous aimerez peut-être aussi