Structura datelor grafice și Algorithms (Exemplu)

⚡ Rezumat inteligent

Structura de date a unui graf este o colecție neliniară de vârfuri și muchii, unde fiecare muchie leagă o pereche de vârfuri. Grafurile modelează rețele din lumea reală, cum ar fi hărți, conexiuni sociale și pagini web, și suportă mulți algoritmi puternici.

  • 📐 Structura: Un graf G = (V, E) împerechează o mulțime de vârfuri (noduri) cu o mulțime de muchii (legături) între ele.
  • 🔤 Terminologie: Termenii cheie includ vârf, muchie, grad, grad interior, grad exterior, auto-buclă și adiacență.
  • 🗂️ Reprezentare: Graficele sunt stocate folosind o matrice de adiacență sau o listă de adiacență, fiecare cu compromisuri spațiale diferite.
  • 🧭 tipuri: Grafurile clasifică după structură: direcționate, nedirecționate, ponderate, ciclice, aciclice, complete, bipartite și altele.
  • 🌐 Aplicații: Google Rutarea hărților, rețelele sociale, clasamentul web și dependența de resurse se bazează pe grafuri.

Structura datelor grafice și Algorithms

Ce este un grafic în structura datelor?

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

Este folosit pentru a rezolva probleme din lumea reală, cum ar fi găsirea celei mai bune rute către locația de destinație și a rutei pentru telecomunicații și rețele sociale. Utilizatorii sunt considerați un nod în Graf, iar firele sunt muchiile care conectează utilizatorii.

Dacă muchiile sunt reprezentate ca E și vârfurile sunt reprezentate ca V, atunci graficul G poate fi scris ca mulțime de vârfuri și muchii, cum ar fi G (V, E).

Exemplu de grafic în structura datelor

Iată un exemplu simplu de structură de date de tip graf:

Exemplu de grafic în structura datelor

Este un graf simplu neorientat (un tip de graf). Aici, mulțimea vârfurilor este: {A, B, C, D, E, F}. Două vârfuri creează o muchie. De exemplu, A și B sunt legate printr-o muchie. Cu toate acestea, A și F nu sunt legate de nicio muchie.

Terminologii grafice în structura datelor

Următorii sunt câțiva termeni importanți utilizați în structura de date a grafului:

TermenDescriere
CulmeFiecare element de date se numește vârf sau nod. În imaginea de mai sus, A, B, C, D și E sunt vârfurile.
Marginea (Arc)Legăturile dintre două noduri sau vârfuri se numesc muchie (arc). Aceasta are două capete și este reprezentată ca (vârfDeÎnceput, VârfDeFinal).
Marginea nedirecționatăEste o margine bidirecțională.
Marginea DirijatăEste o margine unidirecțională.
Marginea ponderatăO margine cu valoare pe ea.
GradÎntr-un graf, numărul de muchii conectate la un vârf se numește grad.
IndegreeNumărul total de muchii de intrare conectate la un vârf.
OutdegreeNumărul total de muchii de ieșire conectate la un vârf.
Auto-buclăO muchie se numește auto-buclă dacă cele două puncte finale coincid.
AdiacentaVârfurile se spun adiacente dacă între ele există o muchie conectată.

Tipuri de grafice în structura datelor

Iată lista celor mai comune tipuri de grafice din structura datelor:

  • Graficul Dirijat
  • Grafic nedirecționat
  • Graficul ponderat
  • Grafic bidirecțional
  • Grafic infinit
  • Grafic nul
  • Grafic trivial
  • Grafic multiplu
  • Graficul complet
  • Graficul conectat
  • Graficul ciclic
  • Grafic aciclic direcționat (DAG)
  • Graficul ciclului
  • Graficul bipartit
  • Graficul Euler
  • Graficul Hamilton

Cum se reprezintă un graf în structura datelor?

Un grafic este de obicei stocat în memorie folosind una dintre cele două reprezentări. Alegerea afectează câtă memorie utilizează graficul și cât de repede se execută operațiile comune.

  • Matricea adiacentei: Un tablou bidimensional V × V unde celula [i][j] este 1 (sau ponderea muchiei) dacă există o muchie între vârful i și vârful j și 0 în caz contrar. Permite căutarea muchiilor O(1), dar folosește spațiul O(V²), fiind ideal pentru grafuri dense.
  • Listă de adiacență: O matrice de liste în care fiecare vârf stochează o listă cu vârfurile sale vecine. Folosește spațiul O(V + E) și este eficient pentru grafurile rare, motiv pentru care majoritatea grafurilor din lumea reală o utilizează.

Puteți citi mai multe despre acestea în lista de adiacență și reprezentarea matricială a unui graf tutorial.

Aplicații ale structurii de date grafice

Un graf are multe cazuri de utilizare. Există mulți algoritmi care utilizează grafuri. Iată câteva dintre aplicațiile grafurilor:

  • Google Hărțile folosesc grafice pentru a găsi intersecția a două drumuri și a calcula distanța dintre două locații. De exemplu, dijkstra, pentru a găsi cea mai scurtă distanță dintre locația sursă și cea de destinație.
  • Facebook folosește grafuri pentru a găsi prietenii comuni ai utilizatorilor. Algoritmul său consideră fiecare utilizator ca un nod al unui graf.
  • Pentru alocarea resurselor, se utilizează un DAG (Directed Acyclic Graph - Grafic Aciclic Direcționat). Acesta verifică dependența resurselor.
  • Google Motoarele de căutare folosesc grafice pentru a crea clasamentul site-urilor web.
  • O hartăping Dispozitivul utilizează structura de date grafică.
  • A Router iar protocolul său folosește Graful pentru a învăța calea către destinație.

Întrebări frecvente

Rețelele neuronale grafice învață din date structurate în grafuri pentru detectarea fraudelor, recomandări și descoperirea de medicamente. Grafurile de cunoștințe acceptă răspunsuri la întrebări prin inteligență artificială, iar cadrele de învățare profundă modelează fiecare calcul ca un graf al operațiilor.

Da. Asistenții AI precum GitHub Copilot pot genera implementări BFS, DFS, Dijkstra și sortare topologică dintr-o descriere simplă. Ar trebui să testați în continuare cazuri limită, cum ar fi nodurile deconectate, ciclurile și grafurile goale, înainte de a utiliza codul.

Un arbore este un tip special de graf conectat și fără cicluri, cu exact o singură cale între oricare două noduri. Un graf este mai general: poate conține cicluri, părți deconectate și muchii direcționate sau ponderate.

Cele două metode principale de traversare sunt Căutarea în Lățime (BFS), care explorează nivel cu nivel folosind o coadă, și Căutarea în Profunditate (DFS), care explorează cât mai adânc posibil folosind o stivă sau recursiune înainte de a reveni.tracrege.

Rezumați această postare cu: