Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

29
Algorithmes et structures de données avancées Cours 4 Patrick Reuter http://www.labri.fr/~preuter

Transcript of Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Page 1: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Algorithmes et structures de données

avancées

Cours 4 Patrick Reuter

http://www.labri.fr/~preuter

Page 2: Algorithmes et structures de données avancées Cours 4 Patrick Reuter 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

Page 3: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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+*

Page 4: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

• 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;

Page 5: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.
Page 6: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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?

Page 7: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Abstraction

Page 8: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Les graphes

• Sommets (« nœuds »)

• Arêtes (« arcs »)

Page 9: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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 ..

Page 10: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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)

Page 11: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Les graphes

• On peut distinguer deux types de graphes

– les graphes non orientés. – les graphes orientés

Page 12: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Graphe non orienté

• est cousin de (relation symétrique)

Page 13: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemples

Page 14: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Graphe orienté

• est fils de

Page 15: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemples

Page 16: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemples

Page 17: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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.

Page 18: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Définitions

• Attention :Il existe pleines de définitions différentes,

attention à la nomenclature utilisée

Page 19: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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

Page 20: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemple de degré

Page 21: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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.

Page 22: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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.

Page 23: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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.

Page 24: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemple

Page 25: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemple

Graphe

Page 26: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemple

Clique

Sous-graphe

Ni sous-graphe,Ni clique

Page 27: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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.

Page 28: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

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

Page 29: Algorithmes et structures de données avancées Cours 4 Patrick Reuter preuter.

Exemple

u A B C D E

f(u) 4 3 5 2 1

A B

C

D

E4 3

5

2

1