Drum (teoria grafurilor)

șir de muchii ce leagă nodurile unui graf, fără noduri repetate

În teoria grafurilor, un drum într-un graf este un șir finit sau infinit de muchii care unesc o succesiune de noduri care, după majoritatea definițiilor, sunt toate distincte (și, deoarece nodurile sunt distincte, la fel și muchiile). Un drum orientat într-un graf orientat este un șir finit sau infinit de arce care unesc o succesiune de noduri distincte, dar cu restricția adăugată ca toate arcele să fie toate orientate în aceeași direcție.

Un graf hipercub⁠(d) tridimensional care prezintă un drum hamiltonian cu roșu și cel mai lung drum indus⁠(d) cu negru aldine.

Drumurile sunt un concept fundamental al teoriei grafurilor, fiind descrise în secțiunile introductive ale majorității textelor de teoria grafurilor. Vezi de ex Bondy și Murty (1976), Gibbons (1985) sau Diestel (2005). Korte și colab. (1990) acoperă subiecte de algoritmi mai avansați referitori la drumurile prin grafuri.

Definiții modificare

Plimbare, traseu și potecă modificare

 
Fie G = (V, E, ϕ) un graf. Un drum finit este o succesiune de muchii (e1, e2, …, en − 1) pentru care există o succesiune de noduri (v1, v2, …, vn) astfel încât ϕ (ei) = { vi, vi + 1 } pentru i = 1, 2, …, n − 1 . (v1, v2, …, vn) este șirul nodurilor din drum. Drumul este închis dacă v1 = vn, iar în caz contrar este deschis. Un drum infinit este un șir de muchii de același tip descris aici, dar fără primul sau ultimul vârf, iar un drum semi-infinit are un prim nod, dar nu și un ultim nod.
  • Un drum simplu este un drum în care toate muchiile sunt distincte.[1]
  • Un drum elementar este un drum în care toate nodurile (și, prin urmare, toate muchiile) sunt distincte.[1]

Dacă w = (e1, e2, …, en − 1) este drumul finit cu șirul de noduri (v1, v2, …, vn) atunci se spune că w este un drum de la v1 la vn. La fel pentru drumurile simple și elementare. Dacă există un drum finit între două noduri distincte, atunci există și un drum elementar finit între ele.

Un graf ponderat asociază o valoare (pondere) fiecărei muchii a grafului. Ponderea unui drum într-un graf ponderat este suma ponderilor muchiilor parcurse. Uneori, cuvintele cost sau lungime sunt folosite în loc de pondere.

Drumuri orientate modificare

  • Un drum orientat este un șir finit sau infinit de arce orientate în aceeași direcție care unesc o succesiune de noduri.[1]
Fie G = (V, E, ϕ) un graf orientat. Un drum orientat finit este o succesiune de arce (e1, e2, …, en − 1) pentru care există o succesiune de noduri (v1, v2, …, vn) astfel încât ϕ(ei) = (vi, vi + 1) pentru i = 1, 2, …, n − 1 . (v1, v2, …, vn) este șirul de noduri al drumului orientat. Drumul orientat este închis dacă v1 = vn, iar în caz contrar este deschis. Un drum orientat infinit este o succesiune de muchii de același tip descris aici, dar fără primul sau ultimul vârf, iar un drum orientat semi-infinit are un prim nod, dar nu un ultim nod.
  • Drumurile orientate elementare și cele simple au definițiile corespunzătoare celor neorientate respective.[1]

Exemple modificare

  • Un graf este conex dacă există drumuri care conțin orice pereche de noduri.
  • Un graf orientat este tare conex dacă există drumuri orientate în ambele direcții între orice pereche de noduri.
  • Un drum cu proprietatea că nicio muchie a grafului nu conectează două noduri neconsecutive din graf se numește drum indus⁠(d).
  • Un drum care cuprinde toate nodurile grafului, fără repetări, este cunoscut ca drum hamiltonian.
  • Două drumuri au noduri interne disjuncte dacă nu au niciun nod intern în comun. În mod similar, două drumuri au muchii disjuncte dacă nu au nicio muchie internă în comun. Două drumuri cu noduri interne disjuncte au și muchii disjuncte, dar inversa nu este neapărat adevărată.
  • Distanța⁠(d) dintre două noduri dintr-un graf este lungimea celui mai scurt drum dintre ele, dacă există unul, iar în caz contrar distanța este infinită.
  • Diametrul unui graf conex este cea mai mare distanță (definită ca mai sus) dintre perechile de noduri ale grafului.

Găsirea drumurilor modificare

Există mai mulți algoritmi pentru găsirea celui mai scurt⁠(d) și a celui mai lung⁠(d) drum în graf, cu distincția importantă că prima problemă este mult mai ușoară din punct de vedere computațional decât cea din urmă.

Algoritmul lui Dijkstra produce o listă cu cele mai scurte drumuri de la un nod sursă la orice alt nod într-un graf orientat sau neorientat cu ponderi nenegative (sau fără ponderi), în timp ce algoritmul Bellman-Ford⁠(d) poate fi aplicat grafurilor orientate cu ponderi negative. Algoritmul Floyd-Warshall⁠(d) poate fi utilizat pentru a găsi cele mai scurte drumuri între toate perechile de noduri din grafurile orientate ponderate.

Note modificare

Bibliografie modificare

  • Bender, Edward A.; Williamson, S. Gill (). Lists, Decisions and Graphs. With an Introduction to Probability. 
  • Bondy, J. A.; Murty, U. S. R. (). Graph Theory with Applications. North Holland. p. 12-21. ISBN 0-444-19451-7. 
  • Diestel, Reinhard (). Graph Theory. Springer-Verlag. pp. 6–9. ISBN 3-540-26182-6. 
  • Gibbons, A. (). Algorithmic Graph Theory. Cambridge University Press. pp. 5–6. ISBN 0-521-28881-9. 
  • Korte, Bernhard; Lovász, László; Prömel, Hans Jürgen; Schrijver, Alexander (). Paths, Flows, and VLSI-Layout. Springer-Verlag. ISBN 0-387-52685-4.