Tipuri de grafice în structura datelor cu exemple

⚡ Rezumat inteligent

Grafurile în structura datelor sunt colecții neliniare de vârfuri și muchii clasificate în familii precum grafuri direcționate, nedirecționate, ponderate, ciclice, aciclice, complete, conexe, bipartite, Euler și Hamilton, bazate pe structură.

  • 📐 Definiție: Un graf G = (V, E) este o structură neliniară unde V este mulțimea vârfurilor, iar E este mulțimea muchiilor care conectează perechile de vârfuri.
  • ➡️ direcţia: Grafurile orientate utilizează muchii săgețite cu o sursă și o țintă fixe, în timp ce grafurile neorientate permit deplasarea bidirecțională pe fiecare muchie.
  • 🇧🇷 Greutate: Grafurile ponderate atribuie un cost numeric fiecărei muchii, în timp ce grafurile neponderate tratează toate muchiile ca conexiuni cu cost egal.
  • 🔁 Cicluri: Grafurile ciclice conțin unul sau mai multe cicluri; un graf aciclic direcționat (DAG) interzice ciclurile și permite planificarea și sortarea topologică.
  • 🔗 Exhaustivitate: Grafurile complete conectează fiecare pereche de vârfuri, grafurile conectate permit o cale între oricare două vârfuri, iar grafurile nule au muchii zero.
  • 🧩 Tipuri speciale: Graficele bipartite, Euler, Hamilton, Multi, Cycle și Trivial impun fiecare o regulă specifică privind modul în care sunt aranjate vârfurile și muchiile.

Tipuri de grafice în structura datelor

Un graf este o structură de date neliniară care constă din vârfuri și muchii. Vârfurile conțin informațiile sau datele, iar muchiile funcționează ca o legătură între o pereche de vârfuri.

Grafurile pot fi de mai multe tipuri, în funcție de poziția nodurilor și a muchiilor. Iată câteva tipuri importante de grafuri:

Graficul Dirijat

Muchiile grafului orientat conțin săgeți care indică direcția. Săgeata determină unde este indicată muchia sau unde se termină. Iată un exemplu de graf orientat.

Graficul Dirijat

Graficul Dirijat

  • Putem merge de la Nodul A la D.
  • Totuși, nu putem merge de la nodul D la nodul A, deoarece marginea indică de la A la D.
  • Deoarece Graficul nu are ponderi, călătoria de la vârful A la D va costa la fel ca și călătoria de la D la F.

Grafic nedirecționat

Un graf neorientat conține muchii fără pointeri. Aceasta înseamnă că putem călători invers între două vârfuri. Iată un exemplu simplu de graf neorientat.

Grafic nedirecționat

Grafic nedirecționat

În graficul de mai sus,

  • Putem trece de la A la B.
  • De asemenea, putem trece de la B la A.
  • Marginile nu conțin direcții.

Este un exemplu de graf neorientat având un număr finit de vârfuri și muchii fără ponderi.

Graficul ponderat

Un graf care conține ponderi sau costuri pe muchii se numește graf ponderat. Valoarea numerică reprezintă, în general, costul deplasării de la un vârf la altul. Atât grafurile orientate, cât și cele neorientate pot avea ponderi pe muchiile lor. Iată un exemplu de graf ponderat (orientat).

Grafic direcționat cu greutate

Grafic direcționat cu greutate

  • De la A la B, există o muchă, iar ponderea este 5, ceea ce înseamnă că trecerea de la A la B ne va costa 5.
  • A indică B, dar în acest grafic, B nu are o muchă directă peste A. Deci, nu putem călători de la B la A.
  • Totuși, dacă vrem să trecem de la A la F, există mai multe căi. Căile sunt ADF și ABF. ADF va costa (10+11) sau 21.
  • Aici, calea ABF va costa (5+15) sau 20. Aici adăugăm ponderea fiecărei muchii din cale.

Iată un exemplu de graf neorientat cu ponderi:

Grafic nedirecționat cu greutate

Grafic nedirecționat cu greutate

Aici, marginea are greutate, dar nu are direcție. Deci, înseamnă că călătoria de la vârful A la D va costa 10 și invers.

Grafic bidirecțional

Grafurile bidirecționale și neorientate au o proprietate comună. Și anume:

  • În general, un graf neorientat poate avea o muchă între două vârfuri.

De exemplu:

Grafic bidirecțional

  • Aici, mutarea de la A la D sau D la A va costa 10.
  • Într-un grafic bidirecțional, putem avea două muchii între două vârfuri.

Iată un exemplu:

Grafic bidirecțional

Grafic bidirecțional

Călătoria de la A la D ne va costa 17, dar călătoria de la D la A ne va costa 12. Deci, nu putem atribui două ponderi diferite dacă este un graf neorientat.

Grafic infinit

Graful va conține un număr infinit de muchii și noduri. Dacă un graf este infinit și este, de asemenea, un graf conex, atunci va conține și un număr infinit de muchii. Aici, muchiile extinse înseamnă că mai multe muchii ar putea fi conectate la aceste noduri prin muchii. Iată un exemplu de graf infinit:

Grafic infinit

Grafic infinit

Grafic nul

Un graf nul conține doar noduri sau vârfuri, dar fără muchii. Dacă i se dă un graf G = (V, E), unde V reprezintă vârfurile și E sunt muchiile, acesta va fi nul dacă numărul de muchii E este zero. Iată un exemplu de graf nul:

Grafic nul

Grafic nul

Grafic trivial

O structură de date a unui graf este considerată trivială dacă este prezent un singur vârf sau nod fără muchii. Iată un exemplu de graf trivial:

Grafic trivial

Grafic multiplu

Un graf se numește multigraf atunci când există mai multe muchii între două vârfuri sau vârful are o buclă. Termenul „Buclă” în structura datelor grafurilor înseamnă o muchie care indică același nod sau vârf. Un multigraf poate fi direcționat sau nedirecționat. Iată un exemplu de multigraf:

Grafic multiplu

Există două muchii de la B la A. Mai mult, vârful E are o auto-buclă. Graful de mai sus este un graf orientat fără ponderi pe muchii.

Graficul complet

Un graf este complet dacă fiecare vârf are muchii orientate sau neorientate cu toate celelalte vârfuri. Să presupunem că există un total de V vârfuri și fiecare vârf are exact V-1 muchii. Atunci, acest graf va fi numit graf complet. În acest tip de graf, fiecare vârf este conectat la toate celelalte vârfuri prin muchii. Iată un exemplu de graf complet cu cinci vârfuri:

Graficul complet

Puteți vedea în imagine că numărul total de noduri este cinci și toate nodurile au exact patru muchii.

Graficul conectat

Un graf se numește graf conectat dacă pornim de la un nod sau vârf și putem ajunge la toate nodurile de la nodul de pornire. Pentru aceasta, ar trebui să existe cel puțin o muchie între fiecare pereche de noduri sau vârfuri. Iată un exemplu de graf conectat:

Graficul conectat

Iată câteva explicații pentru graficul conectat de mai sus:

  • Presupunând că nu există o muchie între C și F, nu putem călători de la A la G. Cu toate acestea, muchia de la C la F ne permite să călătorim către orice nod dintr-un nod dat.
  • Un graf complet este un graf conectat deoarece ne putem muta de la un nod la orice alt nod din graficul dat.

Graficul ciclic

Un graf se numește ciclic dacă există unul sau mai multe cicluri prezente în graf. Iată un exemplu de graf ciclic:

Graficul ciclic

Aici, vârfurile A, B și C formează un ciclu. Un graf poate avea mai multe cicluri în interiorul său.

Grafic aciclic direcționat (DAG)

Un graf se numește graf aciclic direcționat sau DAG dacă nu există cicluri în interiorul grafului. DAG este important atunci când se face... Sortare topologică sau găsirea ordinii de execuție. DAG este important și pentru crearea sistemelor de planificare sau scanarea dependenței de resurse etc. Cu toate acestea, graficul de mai sus nu conține niciun ciclu în interior. Iată un exemplu simplu de grafic aciclic direcționat (DAG):

Grafic aciclic direcționat (DAG)

Graficul ciclului

Un graf ciclic nu este același lucru cu un graf ciclic. Într-un graf ciclic, fiecare nod va avea exact două muchii conectate, ceea ce înseamnă că fiecare nod va avea exact două grade. Iată un exemplu de graf ciclic:

Graficul ciclului

Graficul bipartit

Aceste tipuri de graficele sunt tipuri speciale de grafuri în care vârfurile sunt atribuite la două mulțimi. Un graf bipartit trebuie să respecte regula:

  • Cele două seturi de vârfuri ar trebui să fie distincte, ceea ce înseamnă că toate vârfurile trebuie împărțite în două grupuri sau seturi.
  • Vârfurile de același set nu ar trebui să formeze nicio muchie.

Graficul bipartit

Graficul Euler

O structură de date de tip graf este considerată un graf Euler dacă toate vârfurile au un grad par. Termenul „gradul vârfurilor” înseamnă numărul de muchii care indică spre sau dinspre un anumit vârf. Iată un exemplu de graf Euler:

Graficul Euler

Toate vârfurile au grade pare. Vârfurile A, D, E și H au două grade. Aici, nodul C are patru grade, ceea ce este par.

Graficul Hamilton

Un graf Hamilton este un graf conectat, în care poți vizita toate vârfurile dintr-un anumit vârf fără a revizita același nod sau a utiliza aceeași muchie. Acest tip de graf conectat este cunoscut sub numele de „graf Hamilton”. Calea pe care o vizitezi pentru a verifica dacă graful dat este sau nu un graf Hamilton este cunoscută sub numele de Cale Hamiltoniană. Iată un exemplu simplu de graf Hamiltonian:

Graficul Hamilton

În această imagine, putem vizita toate nodurile din orice nod din graficul de mai sus. Una dintre căi poate fi ADCHBEDe asemenea, este posibil să se găsească un ciclu Hamilton. Un ciclu Hamilton începe și se termină în același vârf. Deci, ciclul Hamilton va fi ADCHBEA.

Întrebări frecvente

Un graf este o structură de date neliniară formată din vârfuri (noduri) și muchii (legături). Vârfurile stochează date, iar muchiile conectează perechi de vârfuri, formând rețele folosite pentru a modela drumuri, legături sociale, dependențe și multe altele.

Grafurile orientate utilizează muchii cu săgeți care indică de la o sursă la o țintă, restricționând deplasarea în acea direcție. Grafurile neorientate utilizează muchii fără săgeți, permițând deplasarea între vârfurile conectate în ambele direcții.

Un graf aciclic direcționat, sau DAG, este un graf direcționat care nu conține cicluri. DAG-urile sunt utilizate pe scară largă pentru programarea sarcinilor, construirea sistemelor, rezolvarea dependențelor de pachete și orice flux de lucru care necesită o ordine topologică validă.

Un graf ponderat atribuie o pondere numerică fiecărei muchii, reprezentând distanța, timpul sau costul. Algoritmii de cale cea mai scurtă, cum ar fi Dijkstra și protocoalele de rutare a rețelei, utilizează grafuri ponderate pentru a găsi cea mai eficientă cale.

Un graf complet are o muchie între fiecare pereche de vârfuri. Un graf conectat are nevoie doar de o cale între fiecare pereche. Fiecare graf complet este conectat, dar nu fiecare graf conectat este complet.

Grafurile bipartite împart vârfurile în două mulțimi disjuncte cu muchii doar între cele două mulțimi. Acestea modelează probleme de potrivire, cum ar fi atribuirea lucrătorilor la locuri de muncă, a studenților la cursuri sau a șoferilor de ridesharing la pasageri.

Rețelele neuronale grafice aplică învățarea automată la date structurate în grafuri pentru sarcini precum detectarea fraudelor, descoperirea de medicamente și recomandarea de metode. Grafurile de cunoștințe alimentează răspunsurile la întrebări prin inteligență artificială, iar graficele de calcul descriu fiecare trecere înainte și înapoi în deep learning.

Da. Instrumentele AI Copilot, cum ar fi GitHub Copilot și ChatGPT, generează exemple standard pentru BFS, DFS, Dijkstra și sortare topologică în majoritatea limbajelor de programare. Dezvoltatorii trebuie în continuare să verifice cazurile limită, gestionarea ciclurilor și complexitatea codului de producție.

Rezumați această postare cu: