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.

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:
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:
| Semester | Beskrivelse |
|---|---|
| Vertex | Hvert 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 kant | Det er en tovejs kant. |
| Instrueret Edge | Det er en ensrettet kant. |
| Vรฆgtet kant | En fordel med en vรฆrdi pรฅ. |
| Degree | I en graf kaldes antallet af kanter forbundet med et hjรธrne en grad. |
| Indegree | Det samlede antal indkommende kanter forbundet til et toppunkt. |
| Udgrade | Det samlede antal udgรฅende kanter forbundet til et toppunkt. |
| Selvlรธkke | En kant kaldes en selvlรธkke, hvis dens to endepunkter falder sammen. |
| Tilknytning | Hjรธ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.

