Graf datastruktur og Algorithms (Eksempel)

โšก Smart oppsummering

Grafdatastruktur er en ikke-lineรฆr samling av hjรธrner og kanter der hver kant kobler sammen et par hjรธrner. Grafer modellerer virkelige nettverk som kart, sosiale forbindelser og nettsider, og stรธtter mange kraftige algoritmer.

  • ๐Ÿ“ Struktur: En graf G = (V, E) parer et sett med noder (noder) med et sett med kanter (lenker) mellom dem.
  • ๐Ÿ”ค Terminologi: Nรธkkelbegreper inkluderer toppunkt, kant, grad, ingrad, utgrad, selvlรธkke og tilstรธtende grad.
  • ๐Ÿ—‚๏ธ Representasjon: Grafer lagres ved hjelp av en adjacensmatrise eller en adjacensliste, hver med forskjellige romavveininger.
  • ๐Ÿงญ typer: Rettede, ikke-rettede, vektede, sykliske, asykliske, fullstendige, todelte og mer klassifiserer grafer etter struktur.
  • ๐ŸŒ Bruksomrรฅder: Google Kartruting, sosiale nettverk, nettrangering og ressursavhengighet er alle avhengige av grafer.

Graf datastruktur og Algorithms

Hva er en graf i datastruktur?

En graf er en ikke-lineรฆr datastruktur som bestรฅr av hjรธrner og kanter, der hjรธrnene inneholder informasjonen eller dataene, og kantene fungerer som en kobling mellom et par hjรธrner.

Den brukes til รฅ lรธse problemer i den virkelige verden, som รฅ finne den beste ruten til destinasjonen og ruten for telekommunikasjon og sosiale nettverk. Brukere regnes som en node i grafen, og ledningene er kantene som forbinder brukerne.

Hvis kanter er representert som E og toppunkter er representert som V, sรฅ kan grafen G skrives som sett med toppunkter og kanter, som f.eks. G (V, E).

Eksempel pรฅ graf i datastruktur

Her er et enkelt eksempel pรฅ en grafdatastruktur:

Eksempel pรฅ graf i datastruktur

Det er en enkel, urettet graf (รฉn type graf). Her er mengden av noder: {A, B, C, D, E, F}. To noder danner en kant. For eksempel er A og B koblet sammen med en kant. A og F er imidlertid ikke koblet sammen med noen kanter.

Grafiske terminologier i datastruktur

Fรธlgende er noen viktige begreper som brukes i grafdatastrukturen:

BegrepTekniske beskrivelser
VertexHvert dataelement kalles et hjรธrne eller en node. I bildet ovenfor er A, B, C, D og E hjรธrnene.
Kant (bue)Forbindelsesledd mellom to noder eller hjรธrner kalles en kant (bue). Den har to ender og er representert som (startKnopp, endingKnopp).
Udirigert kantDet er en toveis kant.
Regissert EdgeDet er en ensrettet kant.
Vektet kantEn fordel med en verdi pรฅ seg.
GradI en graf kalles antallet kanter forbundet med et hjรธrne en grad.
IndegreeDet totale antallet innkommende kanter koblet til et toppunkt.
UtgradertDet totale antallet utgรฅende kanter koblet til et toppunkt.
SelvlรธkkeEn kant kalles en selvlรธkke hvis de to endepunktene sammenfaller.
TilstรธtelseNoder sies รฅ vรฆre tilstรธtende hvis en kant er forbundet mellom dem.

Typer grafer i datastruktur

Her er listen over de vanligste typer grafer i datastrukturen:

  • Regissert graf
  • Udirigert graf
  • Vektet graf
  • Toveis graf
  • Uendelig graf
  • Null graf
  • Triviell graf
  • Multi Graph
  • Komplett graf
  • Tilkoblet graf
  • Syklisk graf
  • Regissert syklisk graf (DAG)
  • Syklusgraf
  • Todelt graf
  • Euler graf
  • Hamilton-graf

Hvordan representere en graf i datastruktur?

En graf lagres vanligvis i minnet ved hjelp av รฉn av to representasjoner. Valget pรฅvirker hvor mye minne grafen bruker og hvor raskt vanlige operasjoner kjรธrer.

  • Nรฆrhetsmatrise: En todimensjonal V ร— V-matrise der celle [i][j] er 1 (eller kantvekten) hvis det finnes en kant mellom hjรธrne i og hjรธrne j, og 0 ellers. Den tillater O(1) kantoppslag, men bruker O(Vยฒ)-rom, noe som gjรธr den best for tette grafer.
  • Nรฆrhetsliste: En matrise med lister der hvert hjรธrne lagrer en liste over sine nรฆrliggende hjรธrner. Den bruker O(V + E)-rom og er effektiv for sparsomme grafer, og det er derfor de fleste grafer i den virkelige verden bruker den.

Du kan lese mer om disse i tilstรธtende liste og matriserepresentasjon av en graf opplรฆringen.

Anvendelser av grafdatastruktur

En graf har mange bruksomrรฅder. Det finnes mange algoritmer som bruker grafer. Her er noen av bruksomrรฅdene til grafen:

  • Google Kart bruker grafer for รฅ finne krysset mellom to veier og beregne avstanden mellom to steder. For eksempel, Dijkstra, for รฅ finne den korteste avstanden mellom kilde- og destinasjonsstedet.
  • Facebook bruker grafer for รฅ finne brukernes felles venner. Algoritmen deres betrakter hver bruker som en node i en graf.
  • For ressursallokering brukes en DAG (Directed Acyclic Graph). Den kontrollerer ressursenes avhengighet.
  • Ocuco Google Sรธkemotorer bruker grafer for รฅ lage rangeringen for nettsteder.
  • Et kartping Enheten bruker grafdatastrukturen.
  • A router og protokollen bruker grafen til รฅ lรฆre banen til destinasjonen.

Spรธrsmรฅl og svar

Grafiske nevrale nettverk lรฆrer fra grafstrukturerte data for svindeldeteksjon, anbefalinger og legemiddeloppdagelse. Kunnskapsgrafer stรธtter spรธrsmรฅlssvar basert pรฅ kunstig intelligens, og rammeverk for dyp lรฆring modellerer hver beregning som en graf over operasjoner.

Ja. AI-assistenter som GitHub Copilot kan generere BFS-, DFS-, Dijkstra- og topologiske sorteringsimplementeringer fra en enkel beskrivelse. Du bรธr fortsatt teste kanttilfeller som frakoblede noder, sykluser og tomme grafer fรธr du bruker koden.

Et tre er en spesiell type graf som er sammenkoblet og ikke har noen sykluser, med nรธyaktig รฉn bane mellom to noder. En graf er mer generell: den kan inneholde sykluser, frakoblede deler og rettede eller vektede kanter.

De to viktigste traverseringsmetodene er Breadth-First Search (BFS), som utforsker nivรฅ for nivรฅ ved hjelp av en kรธ, og Depth-First Search (DFS), som utforsker sรฅ dypt som mulig ved hjelp av en stakk eller rekursjon fรธr tilbaketrackonge.

Oppsummer dette innlegget med: