Algorithmes et structures de données
avancées
Cours 4 Patrick Reuter
http://www.labri.fr/~preuter
• function calculer(noeud : p_t_noeud) : integer;• begin• if (noeud^.contenu = '+') then• result := calculer(noeud^.gauche) + calculer(noeud^.droite)• else if (noeud^.contenu = '-') then• result := calculer(noeud^.gauche) - calculer(noeud^.droite)• else if (noeud^.contenu = '*') then• result := calculer(noeud^.gauche) * calculer(noeud^.droite)• else if (noeud^.contenu = '/') then• result := calculer(noeud^.gauche) DIV calculer(noeud^.droite)• else• result := StrToInt(noeud^.contenu);• end;
+
* 6
2 3
Attention :
• Pour la notation infix, il faut des parenthèses…
+
* 6
2 3
+
*
6
2
3
Infix : 2*3+6(resultat : 12)
Prefix : +*236Postfix 23*6+
Infix : 2*3+6(resultat : 18)
Prefix: *2+36Postfix: 236+*
• procedure infixparentheses(noeud : p_t_noeud);• begin
• if (noeud^.gauche <> NIL) then• begin• Write(' ( ');• infixparentheses (noeud^.gauche);• end;• Write(noeud^.contenu);• if (noeud^.droite <> NIL) then• begin• infixparentheses (noeud^.droite);• Write(' ) ');• end;
• end;
Graphe eulérien
Peut-on commencer une promenade sur une île ou une rive, terminer la promenade sur n'importe quelle autre (ou la même) île ou rive en passant exactement une fois sur chacun des ponts?
Abstraction
Les graphes
• Sommets (« nœuds »)
• Arêtes (« arcs »)
Motivation
• Illustration des objets et leurs relations entre eux
• Une des structures de données les plus importantes
• Applications dans d’autres disciplines– Chimie– Économie– Sociologie ..
Les graphes
• Un graphe G = (V,E) un couple de deux ensembles
– Un ensemble V(G) = {v1, v2, …, vn} de sommets (anglais : one vertex, two vertices)
– Un ensemble E(G) V x V d’arêtes (anglais : edges)
Les graphes
• On peut distinguer deux types de graphes
– les graphes non orientés. – les graphes orientés
Graphe non orienté
• est cousin de (relation symétrique)
Exemples
Graphe orienté
• est fils de
Exemples
Exemples
Exemple
• Le graphe du web peut être modélisé par un graphe orienté (V,E) de la manière suivante: – les sommets sont des pages web– étant données 2 pages web a et b, il existe
une arête (a,b) dans E si et seulement s'il existe un lien hypertexte dans la page a qui pointe vers la page b.
Définitions
• Attention :Il existe pleines de définitions différentes,
attention à la nomenclature utilisée
Degré d’un sommet
• Le degré d’un sommet, noté d(s) avec s V, est le nombre de brins ayant s comme extrémité
• Une boucle compte deux fois
Exemple de degré
Définitions
• Adjacence et Voisinage– Deux sommets sont dits adjacents lorsqu'ils
sont reliés par une arête
– On dit aussi que ces sommets sont voisins.
– Le voisinage d'un sommet dans un graphe est l'ensemble de ses voisins.
Définitions
• Un sommet est dit isolé lorsqu’il est du degré 0
• Parité des sommets– un sommet est pair si son degré est pair. – un sommet est impair si son degré est impair.
Définitions
• Soit G = (V,E) un graphe. Un sous-graphe de G est un graphe G' = (V',E') tel que:
• V’ V
• E’ E on dit donc G' G
• Une clique dans un graphe G est un sous-graphe de G qui est complet.
Exemple
Exemple
Graphe
Exemple
Clique
Sous-graphe
Ni sous-graphe,Ni clique
Définitions
• Un graphe régulier est un graphe où chaque sommet est de degré k.
• Un graphe complet est un graphe dont tous les sommets sont reliés deux à deux.
Isomorphisme
• Deux graphes G1 = (V1,E1) et G2 = (V2,E2) sont dites isomorphe s’il existe au moins une fonction bijective f telle que
(u, v) E1 (f(u), f(v)) E2
Exemple
u A B C D E
f(u) 4 3 5 2 1
A B
C
D
E4 3
5
2
1
Top Related