Graf datastruktur og Algorithms (Eksempel)

โšก Smart opsummering

Grafdatastruktur er en ikke-lineรฆr samling af hjรธrner og kanter, hvor hver kant forbinder et par hjรธrner. Grafer modellerer virkelige netvรฆrk sรฅsom kort, sociale forbindelser og websider og understรธtter mange kraftfulde algoritmer.

  • ๐Ÿ“ Struktur: En graf G = (V, E) parrer et sรฆt af hjรธrner (knuder) med et sรฆt af kanter (forbindelser) mellem dem.
  • ๐Ÿ”ค Terminologi: Nรธglebegreber inkluderer hjรธrne, kant, grad, ingrad, udgrad, selv-lรธkke og adjacens.
  • ๐Ÿ—‚๏ธ Reprรฆsentation: Grafer gemmes ved hjรฆlp af en adjacensmatrix eller en adjacensliste, hver med forskellige rumlige afvejninger.
  • ๐Ÿงญ typer: Retningsbaserede, ikke-rettede, vรฆgtede, cykliske, acykliske, komplette, todelte og mere klassificerer grafer efter struktur.
  • ๐ŸŒ Applikationer: Google Kortrutefรธring, sociale netvรฆrk, webrangering og ressourceafhรฆngighed er alle afhรฆngige af grafer.

Graf datastruktur og Algorithms

Hvad er en graf i datastruktur?

En graf er en ikke-lineรฆr datastruktur, der bestรฅr af hjรธrner og kanter, hvor hjรธrnerne indeholder informationen eller dataene, og kanterne fungerer som et link mellem et par hjรธrner.

Det bruges til at lรธse virkelige problemer, sรฅsom at finde den bedste rute til destinationen og ruten til telekommunikation og sociale netvรฆrk. Brugere betragtes som en node i grafen, og ledningerne er de kanter, der forbinder brugerne.

Hvis kanter er reprรฆsenteret som E og hjรธrner er reprรฆsenteret som V, sรฅ kan grafen G skrives som mรฆngden af โ€‹โ€‹hjรธrner og kanter, som f.eks. G (V, E).

Eksempel pรฅ graf i datastruktur

Her er et simpelt eksempel pรฅ en grafdatastruktur:

Eksempel pรฅ graf i datastruktur

Det er en simpel, urettet graf (รฉn slags graf). Her er sรฆttet af hjรธrner: {A, B, C, D, E, F}. To hjรธrner skaber en kant. For eksempel er A og B forbundet med en kant. A og F er dog ikke forbundet med nogen kanter.

Grafterminologier i datastruktur

Fรธlgende er nogle vigtige termer, der bruges i grafdatastrukturen:

SemesterBeskrivelse
VertexHvert dataelement kaldes et hjรธrne eller en node. I billedet ovenfor er A, B, C, D og E hjรธrnerne.
Kant (bue)Forbindelsesled mellem to knuder eller hjรธrner kaldes en kant (bue). Den har to ender og er reprรฆsenteret som (startknudepunkt, endingknudepunkt).
Udirigeret kantDet er en tovejs kant.
Instrueret EdgeDet er en ensrettet kant.
Vรฆgtet kantEn fordel med en vรฆrdi pรฅ.
DegreeI en graf kaldes antallet af kanter forbundet med et hjรธrne en grad.
IndegreeDet samlede antal indkommende kanter forbundet til et toppunkt.
UdgradeDet samlede antal udgรฅende kanter forbundet til et toppunkt.
SelvlรธkkeEn kant kaldes en selvlรธkke, hvis dens to endepunkter falder sammen.
TilknytningHjรธrner siges at vรฆre tilstรธdende, hvis en kant er forbundet mellem dem.

Typer af grafer i datastruktur

Her er listen over de mest almindelige typer af grafer i datastrukturen:

  • Instrueret graf
  • Udirigeret graf
  • Vรฆgtet graf
  • Tovejs graf
  • Uendelig graf
  • Nul graf
  • Triviel graf
  • Multi graf
  • Komplet graf
  • Forbundet graf
  • Cyklisk graf
  • Instrueret acyklisk graf (DAG)
  • Cyklus graf
  • Bipartitegraf
  • Euler graf
  • Hamilton graf

Hvordan reprรฆsenterer man en graf i en datastruktur?

En graf gemmes normalt i hukommelsen ved hjรฆlp af en af โ€‹โ€‹to reprรฆsentationer. Valget pรฅvirker, hvor meget hukommelse grafen bruger, og hvor hurtigt almindelige operationer kรธrer.

  • Nรฆrliggende matrix: Et todimensionelt V ร— V-array, hvor celle [i][j] er 1 (eller kantvรฆgten), hvis der findes en kant mellem hjรธrne i og hjรธrne j, og 0 ellers. Det tillader O(1) kantopslag, men bruger O(Vยฒ)-rum, hvilket gรธr det bedst til tรฆtte grafer.
  • Liste over tilstรธdende omrรฅder: Et array af lister, hvor hvert hjรธrne gemmer en liste over sine nรฆrliggende hjรธrner. Det bruger O(V + E)-rum og er effektivt til sparse grafer, hvilket er grunden til, at de fleste grafer i den virkelige verden bruger det.

Du kan lรฆse mere om disse i adjacensliste og matrixreprรฆsentation af en graf tutorial.

Anvendelser af grafdatastruktur

En graf har mange anvendelsesmuligheder. Der er mange algoritmer, der bruger grafer. Her er nogle af grafens anvendelser:

  • Google Kort bruger grafer til at finde krydset mellem to veje og beregne afstanden mellem to steder. For eksempel, Dijkstra, for at finde den korteste afstand mellem kilde- og destinationsplacering.
  • Facebook bruger grafer til at finde brugernes fรฆlles venner. Dens algoritme betragter hver bruger som en node i en graf.
  • Til ressourceallokering anvendes en DAG (Directed Acyclic Graph). Den kontrollerer ressourcernes afhรฆngighed.
  • Google Sรธgemaskiner bruger grafer til at lave rangeringen af โ€‹โ€‹hjemmesider.
  • Et kortping Enheden bruger grafdatastrukturen.
  • A router og dens protokol bruger grafen til at lรฆre stien til destinationen.

Ofte Stillede Spรธrgsmรฅl

Grafiske neurale netvรฆrk lรฆrer fra grafstrukturerede data til svindeldetektering, anbefalinger og lรฆgemiddelforskning. Vidensgrafer understรธtter besvarelse af AI-spรธrgsmรฅl, og deep learning-rammer modellerer hver beregning som en graf over operationer.

Ja. AI-assistenter som GitHub Copilot kan generere BFS-, DFS-, Dijkstra- og topologiske sorteringsimplementeringer ud fra en almindelig beskrivelse. Du bรธr stadig teste kanttilfรฆlde sรฅsom frakoblede noder, cyklusser og tomme grafer, fรธr du bruger koden.

Et trรฆ er en sรฆrlig type graf, der er forbundet og ikke har nogen cyklusser, med prรฆcis รฉn sti mellem to vilkรฅrlige noder. En graf er mere generel: den kan indeholde cyklusser, usammenhรฆngende dele og rettede eller vรฆgtede kanter.

De to primรฆre traverseringsmetoder er Breadth-First Search (BFS), som udforsker niveau for niveau ved hjรฆlp af en kรธ, og Depth-First Search (DFS), som udforsker sรฅ dybt som muligt ved hjรฆlp af en stak eller rekursion fรธr tilbagesรธgning.trackonge.

Opsummer dette indlรฆg med: