Documente Academic
Documente Profesional
Documente Cultură
Fisa 09 Teorie Grafuri PDF Free
Fisa 09 Teorie Grafuri PDF Free
Terminologie Grafuri
Graf = o mulțime finită V care are asociată o relație binară internă L. Graful se va nota G = (V, L).
G – graful, V – mulțimea vârfurilor, L – mulțimea legăturilor între vârfuri.
Exemplu: G = (V, L), V = {1, 2, 3, 4} L = { (1,2) , (1,3) , (1,4) , (2,3), (2,4) }
Graf neorientat = un graf în care mulțimea legăturilor L este simetrică – dacă elementul (p, q)
aparține L atunci și elementul (q, p) aparține L.
1 2
G1 = (V, L)
V = {1, 2, 3, 4}
L = { (1,2), (2,1), (1,3), (3,1), (1,4), (4,1), (2,3), (3,2)}
3 4
1 2
G2 = (V, L)
V = {1, 2, 3, 4}
L = { (1,2), (1,3), (1,4), (2,3), (3,2)}
3 4
Muchie = element al mulțimii L (legătură între Arc = element al mulțimii L (legătură între două
două noduri). Se poate parcurge în vârfuri). Se poate parcurge numai în
ambele sensuri. sensul indicat de săgeată.
Lanț simplu = lanț în care nu se repetă muchii. Drum simplu = drum în care nu se repetă arce.
Exemplu: în G1 {1, 2, 3} și {1, 3, 2, 1, 4} sunt Exemplu: în G2 {1, 2, 3} și {1, 3, 2} sunt drumuri
lanțuri simple. simple.
Lanț compus = lanț în care se repetă muchii. Drum compus = drum în care se repetă arce.
Lanț elementar = lanț în care nu se repetă Drum elementar = drum în care nu se repetă
noduri. vârfuri.
neelementar.
Ciclu = lanț în care primul nod coincide cu Circuit = drum în care primul vârf coincide cu
ultimul. Este elementar dacă nodurile nu ultimul. Este elementar dacă vârfurile nu
se repetă (cu excepția primului și se repetă (cu excepția primului și
ultimului). ultimului).
Bucla = ciclu format dintr-o singură muchie (se Bucla = circuit format dintr-un singur arc (se
întâlnește rar). întâlnește rar).
Exemplu: Exemplu:
2 2
1 1
3 3
Subgraf = graf care se obține din alt graf eliminând noduri / vârfuri și toate muchiile / arcele
incidente cu acestea.
Exemplu:
1 1
5
2 2
4 4
3 3
G3 = (V3, L3) G’3 = (V’3, L’3) subgraf al lui G3
Observație: V’3 este submulțime a lui V3 și L’3 este submulțime a lui L3.
Graf parțial = graf care se obține din alt graf eliminând muchii / arce.
Exemplu:
1 1
5 5
2 2
4 4
3 3
G4 = (V4, L4) G’4 = (V4, L’4) graf parțial al lui G4
Graf conex = graf în care între oricare două Graf tare conex = graf în care între oricare
noduri există cel puțin un lanț care le două vârfuri există cel puțin un drum care
unește. le unește.
(sau) Grup de noduri astfel încât există lanț (sau) Grup de vârfuri astfel încât există drum
între oricare două noduri din grup (grupul între oricare două vârfuri din grup (grupul
este conex) dar nu există muchii de la este conex) dar nu există arce de la
nodurile din grup la celelalte noduri ale vârfurile din grup la celelalte vârfuri ale
grafului (grupul este „izolat” de restul grafului (grupul este „izolat” de restul
grafului). grafului).
Exemplu: Exemplu:
1 1
2
6 5
5 2
4
4 3 3
Graful are două componente conexe Graful are trei componente
{1, 4, 5} și {2, 3} tari conexe {1, 2, 4, 6} , {3} , {5}
Lanț hamiltonian = lanț elementar care Drum hamiltonian = drum elementar care
conține toate nodurile unui graf. conține toate vârfurile unui graf.
Ciclu hamiltonian = ciclu elementar care Circuit hamiltonian = circuit elementar care
conține toate nodurile unui graf. conține toate vârfurile unui graf.
Lanț eulerian = lanț simplu care conține toate Drum eulerian = drum simplu care conține
muchiile unui graf. toate arcele unui graf.
Ciclu eulerian = ciclu simplu care conține Circuit eulerian = circuit simplu care conține
toate muchiile unui graf. toate arcele unui graf.
Exemple:
1 1 1 1
2 2 2 2
5 5 5 5
3 3 3 3
4 4 4 4
nici hamiltonian nu este hamiltonian este hamiltonian și
hamiltonian nici eulerian este eulerian nu este
eulerian și eulerian
Arbori
Exemple:
1 = rădăcină
2,3,4,5 = descendenții lui 1
3 1
2,5 = fii lui 3
2
1,3 = ascendenții lui 2
3 4
3 = tatăl lui 2
1 4 3, 4 = frați
5 2
2,4,5 = frunze
arbore cu rădăcină 1 = nivelul 0
5
3,4 = nivelul 1
arbore fără rădăcină 2,5 = nivelul 2
Înălțimea unui arbore: lungimea celui mai lung lanț de la rădăcină la o frunză; nivelul maxim.
Arbore multicăi = arbore cu rădăcină în care nodurile pot avea mai mult de doi fii.
Arbore binar = arbore cu rădăcină în care orice nod are cel mult doi fii.
Observație: într-un arbore binar, dacă nivelul k este complet (conține toate nodurile posibile) atunci pe
nivelul k vor fi 2k noduri.
Arbore binar complet = arbore cu rădăcină în care toate nivele sunt complete (au 2k noduri, unde k
este numărul nivelului).
Observație: într-un arbore binar complet cu n nivele sunt 2n+1-1 noduri ( 20 + 21 + 22 + … + 2n ).
Arbore binar aproape complet = arbore binar care are toate nivelele complete cu excepția ultimului
care este incomplet. Nodurile de pe ultimul nivel vor fi grupate la stânga sau la dreapta.
Exemple:
1
1
3 4
3 4
5 2
5 2 6 7
Arbore binar
aproape complet Arbore binar complet
Arbore binar echilibrat = arbore binar în care, pentru orice nod, înălțimea arborelui format de
descendenții din stânga diferă cu cel mult 1 de înălțimea arborelui format de descendenții din
dreapta. Graful din stânga în figura de mai sus este un exemplu de astfel de arbore.
Arbore binar perfect echilibrat = arbore binar în care, pentru orice nod, înălțimea arborelui format
de descendenții din stânga este egală cu înălțimea arborelui format de descendenții din dreapta.
Graful din dreapta în figura de mai sus este un exemplu de astfel de arbore.
Arbore de căutare = arbore binar în care, pentru orice nod, descendenții din stânga sunt mai mici și
cei din dreapta sunt mai mari decât el. Exemplu:
4
2 6
1 3 7
Arbore binar de căutare
Heap = arbore binar aproape complet în care fiecare pereche tată – fiu respectă o condiție dată.
De exemplu orice tată este mai mare decât fii lui:
7
5 6
4 1 3
Heap
Arbore parțial = arbore care este graf parțial al unui graf dat.
Toate noțiunile de mai sus referitoare la arbori sunt valabile pentru grafuri neorientate. În cazul
grafurilor orientate se mai adaugă noțiunea de arborescență:
Arborescență = graf orientat care este arbore și admite rădăcină. Un graf orientat admite vârful x
ca rădăcină dacă pentru oricare alt vârf y al grafului există un drum care merge de la x la y
(există drumuri de la x la toate celelalte vârfuri).
Observație: dacă un arbore orientat admite rădăcină atunci aceasta este unică. [dacă ar admite două
rădăcini x și y atunci există drum de la x la y și de la y la x. Cele două drumuri formează un circuit deci
graful nu este arbore – graful trebuie să fie conex și fără cicluri]
1 0 1 0
0 1
2 1 0 1
1 0
MA 0 1 0
5 0 1
0 1 0
0 1
1 0
3 1 0
4 1
Observație 1: dacă graful este neorientat matricea este simetrică față de diagonala principală.
Observație 2: diagonala principală conține numai valori de 0.
Observație 3: pentru grafuri neorientate numărul de valori de 1 de pe linia sau coloana i reprezintă
gradul nodului i.
Observație 4: pentru grafuri orientate numărul de valori de 1 de pe linia i reprezintă gradul exterior al
vârfului i (numărul de arce care ies). Numărul de valori de 1 de pe coloana i reprezintă gradul interior al
vârfului i (numărul de arce care intră).
Liste de adiacență
Listele de adiacență rețin pentru fiecare nod vecinii lui (nodurile adiacente cu el).
1 1: 2 , 5
2 2: 1 , 3 , 4
5 3: 2 , 4 , 5
4: 2 , 3 , 5
3
4 5: 1 , 3 , 4
Pentru arborii binari există și posibilitatea de a memora arborele sub forma unei structuri
înlănțuite. Fiecare element al structurii va avea trei câmpuri: un câmp pentru informația utilă din nod,
un câmp pentru adresa fiului din stânga și un câmp pentru adresa fiului din dreapta.
Exemple:
2 6
4 10 3 7 8
9 5
(0,1,2,2,7,1,6,6,7,2)
0 1 0 0 0 1 0 0 0 0 1: 2,6
1
0 1 1 0 0 0 0 0 1 2: 3, 4, 10 Vectorul taților
0 1 0
0 0 0 0 0 0 0 3:
1 0
0 0 0 0 0 0 0 0 4:
0 0 0
0 0 0 1 0 0 0 5:
1 0 0 0 0 0 1 1 0 0 6: 7 , 8
0 0 0
0 1 1 0 0 1 0 7: 5 , 9
0 0 0
0 0 1 0 0 0 0 8:
0 0 0 0 0 0 1 0 0 0 9:
0 1 0 0 0 0 0 0 0 0 10:
Liste de descendenți
Matricea de adiacență