Terminologie

Definiție

Graf neorientat = un graf în care relația binară este simetrică:

Nod

Nod = element al mulțimii , unde este un graf neorientat

Nod izolat

Un nod cu gradul 0

Nod terminal

Un nod cu gradul 1

Muchie

Muchie = element al mulțimii ce descrie o relație existentă între două noduri, unde este un graf neorientat Muchiile sunt considerate ca neavând direcție deci pot fi parcurse în ambele sensuri.

Adiacența

Vârfurile și sunt adiacente dacă . În cazul grafurilor neorientate această relație este bidirecțională deci adiacent cu adiacent cu .

Incidența

O muchie este incidentă cu un nod dacă îl are pe acesta ca extremitate. Muchia este incidentă cu respectiv .

Grad

Gradul unui nod , dintr-un graf neorientat, este numărul natural ce reprezintă numărul de noduri adiacente cu acesta, sau numărul de muchii incidente.

Lanț

Lanțul este o serie de noduri dintr-un graf neorientat cu proprietatea ca între oricare 2 noduri sunt adiacente (există o muchie). cu proprietatea că Proprietățile lanțurilor și tipurile lor sunt similare cu cele ale drumurilor.

Lungimea unui lanț

Lungimea unui lanț este numărul de muchii (sau ) din care acesta este format.

Lanț simplu

Lanțul simplu este lanțul care conține numai muchii distincte.

Lanț compus

Lanțul compus este lanțul care nu este format numai din muchii distincte. Practic, dacă un lanț nu este simplu, este compus.

Lanț elementar

Este un lanț în care nu se repetă niciun nod, și implicit nicio muchie. Deci practic un lanț elementar este un lanț simplu, dar nu și invers. Lanțul este simplu dar nu este elementar, dar lanțul este atât simplu cât și elementar.

Ciclu

Un ciclu este un lanț în care primul nod coincide cu ultimul.

Lungimea unui ciclu

Lungimea unui ciclu, la fel ca lungimea unui lanț este egală cu numărul de muchii. Lungimea unui ciclu nu poate fi 2.

Ciclu simplu

Un ciclu simplu, la fel ca un lanț simplu este un ciclu în care nu se repetă nici o muchie.

Ciclu compus

Ciclul compus este ciclul care nu este format numai din muchii distincte. Practic, dacă un ciclu nu este simplu, este compus. Ciclul este compus deoarece se repetă muchia

Ciclu elementar

Un ciclu este elementar dacă este format doar din noduri distincte, excepție făcând primul și ultimul. Implicit asta înseamnă că nu se repetă nici o muchie. Deci orice ciclu elementar este implicit și ciclu simplu, dar nu și invers. Ciclul este simplu dar nu este și elementar, dar ciclul este atât simplu cât și elementar.

Tipuri de grafuri neorientate

Graf regulat

Graful regulat este graful în care toate nodurile au același grad. Deci și un graf fără muchii este graf regulat.

Graf complet

Graful complet este un graf în care există o muchie între oricare 2 noduri. Numărul de muchii ale unui graf complet este , unde este numărul de muchii.

Graf nul

Graful nul este graful în care nu există muchii/arce, sau în care mulțimea muchiilor este vidă . A nu fi confundat cu cu graful vid. Graful complementar al grafului nul este graful complet

Graf complementar

Fie un graf. Se numește graf complementar al grafului , graful cu proprietatea că două noduri și sunt adiacente în dacă și numai dacă nu sunt adiacente în . Cu alte cuvinte, dacă am considera graful complet ,

Graf regulat

Un graf neorientat este numit regulat dacă toate nodurile au același grad.

Graf bipartit

Un graf este numit bipartit dacă există 2 mulțimi nevide, și astfel încât și orice muchie a lui are o extremitate în , iar cealaltă în . Mulțimile și formează o partiție a lui . Exemplu: Graful următor este bipartit: și

Graf bipartit complet

Un graf bipartit este numit bipartit complet dacă pentru oricare 2 noduri există în graf muchia . Exemplu: graful următor este bipartit complet.

Arbore

Se numește arbore un graf conex și aciclic.

Graf neorientat hamiltonian

  • Lanțul elementar care conține toate nodurile se numește hamiltonian.
  • Ciclul elementar care conține toate nodurile se numește hamiltonian.
  • Graful care conține un ciclu hamiltonian se numește hamiltonian.

Condiție de suficiență

Dacă este un graf cu noduri astfel încât gradul oricărui nod verifică inegalitatea rezultă că este graf hamiltonian. Este foarte rar folosită, nu se întâmplă des ca un graf hamiltonian să îndeplinească această condiție (este suficientă, nu necesară)

Graf neorientat eulerian

  • Lanțul simplu care conține toate muchiile se numește eulerian.
  • Ciclul simplu care conține toate muchiile se numește eulerian.
  • Graful care conține un ciclu eulerian se numește eulerian.

Condiție necesară și suficientă

Un graf neorientat este eulerian dacă și numai dacă:

Reprezentarea grafurilor neorientate

Matricea de adiacență

Pentru un graf neorientat cu noduri, matricea de adiacență este o matrice cu  linii și  coloane și elemente din (este booleană), cu Exemplu: Pentru graful neorientat de mai jos avem următoarea matrice de adiacență:

Observații

  • matricea de adiacență este simetrică față de diagonala principală;
  • elementele de pe diagonala principală sunt 0;
  • gradul unui nod x este egal cu numărul de elemente 1 de pe linia (sau coloana) x;
  • suma tuturor elementelor din matricea de adiacență a unui graf neorientat este egală cu dublul numărului de muchii din graf.

Lista de muchii

Lista de muchii a unui graf neorientat reprezintă o mulțime ce conține toate muchiile din graf.

Pentru graful de mai jos, lista de muchii este: Atenție: în lista de muchii nu sunt reprezentate nodurile izolate.

Reprezentare în memorie

Pentru reprezentarea în memorie putem folosi:

  • un tablou unidimensional cu elemente de tip struct {int I,J;}
  • două tablouri unidimensionale cu elemente de tip int
  • o listă alocată dinamic
  • etc.

Liste de adiacențe

Pentru un graf neorientat cu  se va memora numărul de noduri  și apoi, pentru fiecare nod , lista vârfurilor adiacente cu , adică a nodurilor  cu proprietatea că există muchia .

Pentru graful de mai jos, listele de adiacență sunt:

1: 2 5
2: 1 5
3: vidă
4: 5
5: 1 2 4

Reprezentarea în memorie

La reprezentarea în memorie trebui avut în vedere că dimensiunile listelor de vecini sunt variabile. De aceea, este ineficientă (dar posibilă cu o matrice de n linii și n-1 coloane) utilizarea unor tablouri alocate static. Astfel, putem folosi:

  • un șir de n tablouri unidimensionale alocate dinamic;
  • un șir de n vectori din STL;
  • un șir de n liste simplu (dublu) înlănțuite alocate dinamic.