Sunteți pe pagina 1din 21

Grafuri euleriene și hamiltoniene

 CUPRINS

1. Grafuri neorientate

2. Lanturi, cicluri

3. Grafuri orientate

4. Drumuri, circuite

5. Exemple și imagini

6. Tipuri particulare de lanțuri și cicluri

7. Graful eulerian

8. Graful hamiltonian
1. Grafuri neorientate

Se numește graf neorientat o pereche ordonată de mulțimi G=(X,U), unde:

 X este o mulțime finită și nevidă de elemente numite vârfuri sau noduri;


 U este o mulțime finită de submulțimi cu două elemente din X, numite muchii.

Vom nota în continuare vârfurile cu valori între 1 și n – unde n este numărul de vârfuri
din graf, iar muchiile cu [x,y] sau (x,y), unde x și y sunt vârfuri și se numesc extremitățile
muchiei.

Un vecin al unui vârf x este orice vârf y cu proprietatea că există muchia [x,y].

Două vârfuri între care există muchie se numesc adiacente.

Două muchii sunt incidente dacă au o o extremitate comună. Un vârf este incident cu o muchie
dacă vârful este extremitate a acelei muchii.

Mulțimea muchiilor are proprietatea de simetrie: dacă [x,y] este muchie, atunci și [y,x] este
muchie.

Conform definiției:

 într-un graf neorientat nu există muchie de la un vârf la el însuși;


 intre două vârfuri distincte există cel mult o muchie.

Exemplu:

Fie G=(X, U), unde:

 X = {1, 2, 3, 4, 5, 6}
 U = {[1, 2], [2, 4], [2, 3], [4, 5], [5, 6], [1, 6]}
Într-un graf neorientat se numește grad al unui vârf numărul de vârful adiacente cu acesta
(sau numărul de muchii incidente cu acesta). Gradul unui vărf x se notează d(x) (degree).

Observații:

 un vârf cu gradul 0 se numește izolat. În graful de mai sus, vârful 6 este izolat.
 un vârf cu gradul 1 se numește terminal. În graful de mai sus, vârful 9 este vârf terminal.
 gradul maxim al unui vârf într-un graf cu n vârfuri este n-1.

Teoremă: Într-un graf neorientat, suma gradelor tuturor vârfurilor este dublul numărului de
muchii.

Consecințe:

 Suma gradelor tuturor vârfurilor este număr par.


 Într-un graf neorientat, numărul de vârfuri de grad impar este întotdeauna par.

Întrebare: Este posibil ca într-un grup de 5 persoane, fiecare persoană să aibă exact 3 prieteni?

Răspuns: Nu, dat fiind graful următor:

Putem observa că nodurile 1, 3, 4, 5 au exact trei


prieteni, însă nodul 2 nu are. Pentru ca nodul 2 sa
aibă exact trei prieteni, acesta ar trebui să fie
conectat de nodul 4 sau 3. Această conexiune va face
ca unul dintre cele două noduri sa aiba patru prieteni.
În concluzie, nu este posibil ca într-un grup de 5
persoane, fiecare să aibă exact 3 prieteni.
Un graf neorientat se numește graf conex dacă pentru oricare două vârfuri x și y diferite ale
sale, există cel puțin un lanț care le leagă, adică x este extremitatea inițială și y este extremitatea
finală.

Un graf cu un singur nod este, prin definiție, conex.

Se numește componentă conexă a unui graf G=(X,U) un subgraf H=(Y, V), conex, al lui G care
are proprietatea că nu există nici un lanț în G care să lege un vârf din Y cu un vârf din X – Y.

Subgraful H este conex și maximal cu această proprietate (dacă s-ar mai adăuga un vârf nu ar
mai fi conex.)

Un graf este conex dacă admite o singură componentă conexă.

Un graf este biconex dacă este conex şi pentru orice vârf eliminat subgraful generat îşi păstrează
proprietatea de conexitate.

Exemple:

Acesta este un graf conex.

G=(X,U), unde:
 U={1, 2, 3, 4, 5, 6, 7}
 X={[1,4], [1,5], [1,3], [2,3], [2,4], [5,7], [5,6], [6,7]}
Observăm că nodul 5 are gradul cel mai mare, respectiv 4.
Analiza despre aceste imagini

Acesta nu este un graf conex și are 4


componente conexe.
Cele 4 componente conexe sunt formate din
nodurile:
(5,6,7), (9,10), (1,2,3,4), (8).
8 fiind nod izolat.

Acesta este un graf biconex, deoarece, dacă


am scoate oricare dintre muchiile grafului,
acesta își păstrează proprietatea de conexitate,
având tot aceleași 2 componente conexe.
Fie G=(X, U) un graf neorientat. Se numeşte graf parțial al grafului G, graful neorientat
G1=(X, U1), unde U1 ⊆ U.

Din definiție rezultă:

 Un graf parțial al unui graf neorientat G=(V,U), are aceeaşi mulțime de vârfuri ca şi G, iar
mulțimea muchiilor este o submulțime a lui U sau chiar U.
 Fie G=(X, U) un graf neorientat. Un graf parțial al grafului G se obține păstrând vârfurile
şi eliminând eventual nişte muchii (se pot elimina şi toate muchiile sau chiar nici una).

Fie G=(X, U) un graf orientat. Se numeşte subgraf al grafului G graful neorientat


G1=(X1,U1) unde X1 ⊆ X iar U1 conține toate arcele din U care au extremitățile în X1.

Din definiție rezultă:

Fie G=(X,U) un graf orientat. Un subgraf al grafului G, se obține ştergând eventual


anumite vârfuri şi odată cu acestea şi muchiile care le admit ca extremitate (nu se pot şterge toate
vârfurile deoarece s-ar obține un graf cu mulțimea vârfurilor vidă).

Exemplu:

S-au eliminat muchiile S-au eliminat vârfurile


[1,2] și [3,1] 3 și 5 și toate muchiile
adiacente cu ele.
2. Lanțuri și cicluri

Se numește lanț o succesiune de vârfuri L=[x1, x2,⋯ xk] cu proprietatea că oricare două
vârfuri consecutive sunt adiacente.

Vârfurile x1 şi xk se numesc extremitățile lanțului. Numărul k-1 se numește lungimea lanțului


și este numărul de muchii din care este format.

Lanțul care conține numai vârfuri distincte, două câte două, este lanț elementar.

Lanțul care conține numai muchii distincte este lanț simplu. Dacă muchiile unui lanț nu sunt
distincte se numește lanț compus.

Exemplu:

 [2,4,1,3,5,7] este un lanț elementar


 [3,5,7,6,5,1] este un lanț neelementar, dar simplu
 [2,3,5,7,6,5,3,1] este un lanț compus
 [2,4,1,3,5,7] este un lanț elementar
 [3,5,7,6,5,1] este un lanț neelementar, dar simplu
 [2,3,5,7,6,5,3,1] este un lanț compus

Se numește ciclu un lanț simplu în care primul vârf este identic cu ultimul. Dacă toate
vârfurile sunt distincte, mai puțin primul și ultimul, se numește ciclu elementar.

Lungimea unui ciclu este egală cu numărul de muchii din ciclu. Lungimea minimă a unui ciclu
este 3.

Un ciclu se numește par dacă lungimea sa este pară, respectiv impar în caz contrar.

Un graf neorientat care nu conține niciun ciclu se numește aciclic.

 [1,5,3,2,4,1] este un ciclu elementar


 [1,4,2,3,1] este un ciclu elementar
 [5,3,2,4,1,5] este un ciclu elementar
 [1,3,5,7,6,5,1] este un ciclu neelementar
3. Grafuri orientate
Se numeşte graf orientat sau digraf o pereche ordonată de mulțimi notată G=(V, U), unde:

 V este o mulțime finită şi nevidă ale cărei elemente se numesc noduri sau vârfuri;
 U este o mulțime de perechi ordonate de elemente distincte din V ale cărei elemente se
numesc arce.

Exemplu:

V = {1,2,3,4,5,6}

U = {(1,6),(2,1),(2,4),(3,2),(4,2),(5,4),(6,1),(6,2),(6,4)}

Observăm că arcele (1,6) și (6,1) sunt distincte.

Noțiuni:

 extremități ale unui arc: pentru arcul u=(x,y), se numesc extremități ale sale nodurile x
şi y;
o x se numeşte extremitate inițială;
o y se numeşte extremitate finală;
o y se numește succesor al lui x;
o x se numește predecesor al lui y.
 vârfuri adiacente: dacă într-un graf există arcul u=(x,y) (sau u=(y,x), sau amândouă), se
spune despre nodurile x şi y că sunt adiacente;
 incidență:
o dacă u1 şi u2 sunt două arce ale aceluiaşi graf, se numesc incidente dacă au o
extremitate comună. Exemplu: u1=(x,y) şi u2=(y,z) sunt incidente;
o dacă u1=(x,y) este un arc într-un graf, se spune despre el şi nodul x, sau nodul y, că
sunt incidente.

Fie G=(V, U) un graf orientat și x un nod al său.

Se numeşte grad exterior al nodului x, numărul arcelor de forma (x,y) (adică numărul
arcelor care ies din x), notat d+(x).

Se numeşte grad interior al nodului x, numărul arcelor de forma (y,x) (adică numărul
arcelor care intră în x), notat d-(x).

Exemplu:

Pentru graful alăturat:

 d+(2)=2
 d-(2)=3

Teoremă: Într-un graf orientat, suma gradelor


exterioare a tuturor nodurilor este egală cu suma
gradelor interioare a tuturor nodurilor și cu numărul
de arce.

Un nod x se numește izolat dacă d+(x)=d-(x)=0 (are


gradul interior și gradul exterior egal cu 0).

Fie G=(V, U) un graf orientat. Se numeşte graf parțial al grafului G, graful orientat G1=(V, U1),
unde U1 ⊆ U.

Din definiție rezultă:

 Un graf parțial al unui graf orientat G=(V,U), are aceeaşi mulțime de vârfuri ca şi G, iar
mulțimea arcelor este o submulțime a lui U sau chiar U.
 Fie G=(V, U) un graf orientat. Un graf parțial al grafului G, se obține păstrând vârfurile şi
eliminând eventual nişte arce (se pot elimina şi toate arcele sau chiar nici unul).
Fie G=(V, U) un graf orientat. Se numeşte subgraf al grafului G graful orientat G1=(V1,U1)
unde V1 ⊆ V iar U1 conține toate arcele din U care au extremitățile în V1.

Din definiție rezultă:

 Fie G=(V,U) un graf orientat. Un subgraf al grafului G, se obține ştergând eventual


anumite vârfuri şi odată cu acestea şi arcele care le admit ca extremitate (nu se pot şterge
toate vârfurile deoarece s-ar obține un graf cu mulțimea vârfurilor vidă).

Exemplu:

S-au eliminat arcele S-au eliminat nodul 6


(1,6), (3,2), (6,4) și toate arcele
incidente cu el

Graful se numește tare conex dacă între oricare două noduri distincte există cel puțin un drum.

Se numește componentă tare conexă un subgraf tare conex și maximal cu această calitate –
dacă am mai adăuga un nod, n-ar mai fi tare conex.
Graful de mai sus nu este tare conex. El conține trei componente tare conexe:

 134
 2
 5678

Observație: Un nod al grafului face parte dintr-o singură componentă tare conexă. Dacă ar face
parte din două compoennte tare conexe, ele s-ar “reuni” prin intermediul acelui nod.
4. Drumuri, circuite

Fie G=(V, U) un graf orientat. Se numește drum în graful G o succesiune de noduri, notată

D = (x1 , x2 ,..., xk), cu proprietatea că pentru orice 1≤i<k, (xi,xi+1) este arc în G.

Exemple în graful alăturat:

L=(5,4,2,6,1) este un lanț elementar, dar nu este drum.

D=(3,2,1,6,4) este drum elementar.

D=(3,2,1,6,2,4) este drum neelementar, dar simplu.

Se numește circuit un drum simplu în care extremitatea inițială


și finală sunt egale. Se

numește circuit elementar un circuit în care, cu excepția extremităților, nu se repetă noduri.

Lungimea unui circuit este reprezentată de numărul de arce din care acesta este alcătuit.

Exemple în graful alăturat:

(1,6,2,1) și (1,6,4,2,1) sunt circuite elementare.


Exemple în graful alăturat:

(0,2,4,5,0) este circuit

elementar.

5. Exemple și imagini

Vom analiza 4 lanțuri


L1 = {1, 2, 3, 7, 4} este elementar, simplu, de lungime 4.
L2 = {6, 5, 3, 5} este neelementar și de lungime 3.
L3 = {3, 4, 7, 3, 2} este neelementar, simplu și de lungime 4.
L4 = {8, 7, 3, 5, 6} este elementar, simplu, de lungime 4.
Analizam 3 cicluri:
C1 = {1, 2, 3, 5, 6, 1} este un ciclu elementar.
C2 = {3, 4, 7, 8, 5, 3, 2, 1, 6, 5, 3} este un ciclu neelementar.
C3 = {3, 4, 7, 8, 5, 3} este un ciclu elementar.

Observăm drumurile:
 (2,3,1,7) – drum elementar
 (4,2,3,1,7) – drum elementar
 (7,3,1,7,3,4) – drum neelementar
Observăm circuitul elementar: (1,2,3,4,6,5,1).

6. Tipuri particulare de lanțuri și cicluri

Problema comis voiajorului este o problemă celebră de informatică: Un comis-voiajor


(agent comercial) trebuie viziteze n orașe. Cunoscându-se șoselele existente între orașe, să se
determine o modalitate (toate modalitățile) prin care comis-voiajorul poate parcurge fiecare oraș
o singură dată și se întoarce în orașul de plecare.

Dacă asociem problemei un graf neorientat, constatăm că trebuie să determinăm un (toate)


ciclu elementar care trece prin toate vârfurile grafului. Un astfel de ciclu se numește ciclu
hamiltonian.

Ciclul marcat cu roșu este un ciclu hamiltonian


deoarece trece prin toate nodurile grafului nostru
fară a traversa de două ori același nod.
Un ciclu eulerian, sau „circuit eulerian” într-un graf neorientat este un ciclu care parcurge
fiecare muchie exact o dată. Dacă un astfel de ciclu există, graficul este numit eulerian sau
unicursal.

Ciclul marcat cu roșu este un ciclu eulerian


deoarece traversează fiecare muchie a grafului
nostru fară ca vreo muchie să se repete.

7. Graful eulerian
Se numește graf eulerian un graf care conține un ciclu eulerian.

Un graf neorientat are un ciclu eulerian dacă și numai dacă fiecare nod are grad par, și toate
nodurile cu grad nenul aparțin unei singure componente conexe.

Un graf neorientat poate fi descompus în cicluri cu muchii disjuncte, dacă și numai dacă toate
nodurile sale au grad par. Deci, un graf are un ciclu eulerian dacă și numai dacă el poate fi
descompus în cicluri cu muchii disjuncte și nodurile sale de grad nenul aparțin unei singure
componente conexe.

Un graf neorientat are un drum eulerian dacă și numai dacă exact zero sau două noduri au
grad impar, și toate nodurile cu grad nenul aparțin unei singure componente conexe.
Exemplu: Graful următor este eulerian. Un ciclu eulerian este: [1,4,2,1,3,2,7,3,5,7,6,5,1]

În graful alăturat, chiar dacă nodul 6 este izolat, am


găsit un ciclu care să conțină toate muchiile grafului,
deci graful este un graf eulerian.

Un graf orientat are un ciclu eulerian dacă și numai dacă fiecare nod are gradul interior și
gradul exterior egale, și toate nodurile cu grad nenul aparțin unei singure componente tare
conexe. Echivalent, un graf orientat are un ciclu eulerian dacă și numai dacă el poate fi
descompus în cicluri orientate cu muchii disjuncte și toate nodurile cu grad nenul aparțin unei
singure componente tare conexe.

Un graf orientat are un drum eulerian dacă și numai dacă cel mult un nod are (gradul
exterior) − (gradul interior) = 1, cel mult un nod are (gradul interior) − (gradul exterior) = 1, iar
celelalte noduri au toate gradul exterior și gradul interior egale, iar toate nodurile cu grad nenul
aparțin unei singure componente conexe a grafului neorientat de bază.
Exemplu: Graful orientat de mai jos este eulerian. Un ciclu eulerian este (1,4,3,2,4,5,6,1).
Observăm că singurul nod cu diferența dintre gradul interior și cel exterior egală cu 1 este nodul
2, iar celelalte au gradele egale.

În C++, codul pentru verificarea unui graf eulerian ar arăta ca în exemplul de mai jos.
8. Graful hamiltoniene
Se numește graf hamiltonian un graf care conține un ciclu hamiltonian. Se numește ciclu
hamiltonian un ciclu elementar care conține toate vârfurile grafului.

Exemplu: Graful neorientat următor este hamiltonian. Un ciclu hamiltonian este: [1,4,2,3,7,6,5,1]

Exemplu: Graful orientat desenat mai jos este hamiltonian, deoarece conține circuitul
hamiltonian (2, 1, 5 , 6, 4, 3, 2).


În C++, codul pentru verificarea unui graf hamiltonian ar arăta ca în exemplul de mai jos.

Bibliografie: https://www.pbinfo.ro/articole/810/grafuri-neorientate

https://www.pbinfo.ro/articole/509/grafuri-orientate

S-ar putea să vă placă și