Algorithme Combinatoire
Décomposition d’un graphe (partie 2)
Les ponts de Königsberg, résolu par Euler
Liens Wikipédia :
Le problème consiste à déterminer s'il existe ou non une promenade dans les
rues de Königsberg permettant, à partir d'un point de départ au choix, de
passer une et une seule fois par chaque pont, et de revenir à son point de
départ, étant entendu qu'on ne peut traverser le Pregel qu'en passant sur les
ponts.
La condition nécessaire pour
satisfaire cet algorithme est d’avoir
un nombre pair de degré entrant et
un nombre pair de degré sortant
pour chaque sommet, afin de
pouvoir partir d’un sommet, passer
par tous les ponts une fois
exactement et revenir au sommet
initial
On veut passer par chaque arrête une seule fois
Pour chaque sommet on regarde le degré : tps
polynomial
Caractérisation des graph eulérien
Schéma eulérien : aller à tous les sommets en
passant une fois exactement par arête : si on a
un nombre d’arête impair on doit le rendre pair
Exemple d’exercice Eulérien
Calcul du temps : on supprime une
arête a chaque sommet :
A : BCDF
B : AC
C : ABDF
D : ACFE
E : DF
F : ACDE
La suppression de chaque arête prends un temps constant, c’est donc un algorithme
super master
Exo 1 : Trouver l’algorithme pour un graph Eulérien (le schéma 3)
   
 
 
 
 
  
 

 
 
 
On a un degré pair pour chaque sommet, une solution
existe donc
Chemin en partant de B : BACB
Ici on est bloqué, on supprime donc et on le met dans
la liste des isolés : B
Si on continu donc : BACBDEFDAFC
Comme C est donc bloqué, on l’ajoute a la liste des
isolés : BC
Et on continue jusqu’à être définitivement bloqué :
Isolées :BCFADFEDCAB
Grâce à ça, on obtient la liste désiré en inversant celle
des isolées : BACDEFDAFCB
On peut donc mettre un sens pour les flèches (en rouge
sur le schéma)
Tri topologique
Exemple : on suit un curseur informatique, chaque étudiant doit connaître java, scheme,
algo, compile, python, lang, OFI, C
On doit avoir des prérequis
Voici le schéma :
On cherche donc à obtenir :
On cherche une arête qui va de gauche à droite
Tri topologique : linéarisé les graphes, donc pas d’arête de droite à gauche :
         
Donc si le tri est cyclique, il ne peut être topologique
Topologique implique acyclique
On a donc que les degrés entrants
Construire l’algorithme du tri topologique :
On utilise un parcourt en profondeur
  
 
 
 
 
 
 

 
if  
 
  
Avec les lignes en rouge ajouté, l’algorithme est super master :
si on retrouve    sinon on a un cycle
Existe-t-il un sommet qui n’a pas de degré entrant ? oui
Si le graphe est acyclique, on supprime un sommet de degré entrant zéro, le graphe en
résultant le sera-t-il ? oui, il prend les propriétés précédentes
Supposons un graphe avec aucun sommet de degré zero, comment est-il ? Il est donc
cyclique
SABDCE
SBACDE
Exemple :
DFS = recherche ne profondeur = depth first search
 
 
 

 
 
Algorithme du dernier schéma : recherche en profondeur
 
 
 
 
 


 
 
 
 

Modifier l’algorithme pour qu’il test si le graph à un cycle ou pas
 
 

 
 

A = BCDE
B = AC
C = ABDE
D =AC
E = AC
-> BACDE -> on obtient une liste
vide = recherche en profondeur
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !