Typer af grafer i datastruktur med eksempler

Typer af grafer i datastruktur

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

Grafer kan vรฆre af flere typer, afhรฆngigt af positionen af โ€‹โ€‹noderne og kanterne. Her er nogle vigtige typer grafer:

Instrueret graf

Kanterne pรฅ den rettede graf indeholder pile, der betyder retningen. Pilen bestemmer, hvor kanten peger pรฅ eller ender.

Her er et eksempel pรฅ den rettede graf.

Instrueret graf
Instrueret graf
  • Vi kan gรฅ fra Node A til D.
  • Vi kan dog ikke gรฅ fra node D til node A, da kanten peger fra A til D.
  • Da grafen ikke har vรฆgte, vil det at rejse fra toppunkt A til D koste det samme som at rejse fra D til F.

Udirigeret graf

Udirigeret graf indeholder kanter uden pegepinde. Det betyder, at vi kan rejse omvendt mellem to hjรธrner.

Her er et simpelt eksempel pรฅ den urettede graf.

Udirigeret graf
Udirigeret graf

I ovenstรฅende graf,

  • Vi kan flytte fra A til B
  • Vi kan ogsรฅ flytte fra B til A
  • Kanter indeholder ingen retninger.

Det er et eksempel pรฅ en urettet graf med et begrรฆnset antal hjรธrner og kanter uden vรฆgt.

Vรฆgtet graf

Graf, der indeholder vรฆgte eller omkostninger pรฅ kanterne, kaldes en vรฆgtet graf. Den numeriske vรฆrdi reprรฆsenterer generelt de flytteomkostninger fra et toppunkt til et andet toppunkt. Bรฅde Directed og Undirected Graph kan have vรฆgte pรฅ deres kanter.

Her er et eksempel pรฅ en vรฆgtet graf (rettet).

Instrueret graf med vรฆgt
Instrueret graf med vรฆgt
  • A til B, der er en kant, og vรฆgten er 5, hvilket betyder, at flytning fra A til B vil koste os 5.
  • Et punkt til B, men i denne graf har B ingen direkte kant over A. Sรฅ vi kan ikke rejse fra B til A.
  • Men hvis vi รธnsker at flytte fra A til F, er der flere veje. Stierne er ADF, ABF. ADF vil koste (10+11) eller 21.
  • Her vil stien ABF koste (5+15) eller 20. Her tilfรธjer vi vรฆgten af โ€‹โ€‹hver kant i stien.

Her er et eksempel pรฅ en udirigeret graf med vรฆgte:

Udirigeret graf med vรฆgt
Udirigeret graf med vรฆgt

Her har kanten vรฆgt, men ingen retning. Sรฅ det betyder at rejse fra toppunkt A til D vil koste 10 og omvendt.

Tovejs graf

Tovejs- og urettede grafer har en fรฆlles egenskab. Det er

  • Generelt kan den urettede graf have en kant mellem to toppunkter.

For eksempel:

Tovejs graf

  • Her vil det koste 10,- at flytte fra A til D eller D til A.
  • I en tovejsgraf kan vi have to kanter mellem to hjรธrner.

Her er et eksempel:

Tovejs graf
Tovejs graf

At rejse fra A til D vil koste os 17, men at rejse fra D til A vil koste os 12. Sรฅ vi kan ikke tildele to forskellige vรฆgte, hvis det er en urettet graf.

Uendelig graf

Grafen vil indeholde et uendeligt antal kanter og noder. Hvis en graf er uendelig, og den ogsรฅ er en forbundet graf, vil den ogsรฅ indeholde et uendeligt antal kanter. Her betyder de forlรฆngede kanter, at flere kanter kan forbindes til disse noder via kanter.

Her er et eksempel pรฅ den uendelige graf:

Uendelig graf
Uendelig graf

Nul graf

Null Graph indeholder kun noder eller hjรธrner, men uden kanter. Hvis der gives en graf G = (V, E), hvor V er hjรธrner og E er kanter, vil den vรฆre nul, hvis antallet af kanter E er nul.

Her er et eksempel pรฅ en null-graf:

Nul graf
Nul graf

Triviel graf

En grafdatastruktur betragtes som triviel, hvis kun et toppunkt eller en knude er til stede uden kanter.

Her er et eksempel pรฅ en trivial graf:

Triviel graf

Multi graf

En graf kaldes en multigraf, nรฅr der er flere kanter mellem to spidser, eller spidsen har en lรธkke. Udtrykket "lรธkke" i Graph Data Structure betyder en kant, der peger pรฅ den samme knude eller vertex. Multigraf kan vรฆre instrueret eller urettet.

Her er et eksempel pรฅ en multigraf:

Multi graf

Der er to kanter fra B til A. Desuden har toppunktet E en selvlรธkke. Ovenstรฅende graf er en rettet graf uden vรฆgt pรฅ kanter.

Komplet graf

En graf er komplet, hvis hvert toppunkt har rettede eller urettede kanter med alle andre toppunkter.

Antag, at der er et samlet V-antal af hjรธrner, og hvert hjรธrne har nรธjagtig V-1 kanter. Sรฅ vil denne graf blive kaldt en komplet graf. I denne graftype er hvert hjรธrne forbundet med alle andre hjรธrner via kanter.

Her er et eksempel pรฅ en komplet graf med fem hjรธrner:

Komplet graf

Du kan se pรฅ billedet, at det samlede antal noder er fem, og alle noder har prรฆcis fire kanter.

Forbundet graf

En graf kaldes en forbundet graf, hvis vi starter fra en knude eller et toppunkt og rejser alle knudepunkter fra startknuden. Til dette skal der vรฆre mindst รฉn kant mellem hvert par knudepunkter eller knudepunkter.

Her er et eksempel pรฅ en Connected Graph:

Forbundet graf

Her er en forklaring pรฅ ovenstรฅende "komplet grafeksempel"-graf:

  • Hvis vi antager, at der ikke er nogen kant mellem C og F, kan vi ikke rejse fra A til G. Men kanten C til F gรธr os i stand til at rejse til en hvilken som helst knude fra en given knude.
  • En komplet graf er en forbundet graf, fordi vi kan flytte fra en node til en hvilken som helst anden node i den givne graf.

Cyklisk graf

En graf siges at vรฆre cyklisk, hvis der er en eller flere cyklusser til stede i grafen.

Her er et eksempel pรฅ en cyklisk graf:

Cyklisk graf

Her danner toppunkt A, B og C en cyklus.

En graf kan have flere cyklusser inde i den.

Instrueret acyklisk graf (DAG)

En graf kaldes Directed Acyclic Graph eller DAG, hvis der ikke er nogen cyklusser inde i en graf. DAG er vigtig, mens du gรธr Topologisk sortering eller finde fuldbyrdelsesordren. DAG er ogsรฅ vigtig for at skabe planlรฆgningssystemer eller scanningsafhรฆngighed af ressourcer osv. Ovenstรฅende graf indeholder dog ingen cyklus inde.

Her er et simpelt eksempel pรฅ en rettet acyklisk graf (DAG):

Instrueret acyklisk graf (DAG)

Cyklus graf

Cyklusgraf er ikke det samme som den cykliske graf. I Cycle Graph vil hver node have nรธjagtigt to kanter forbundet, hvilket betyder, at hver node vil have prรฆcis to grader.

Her er et eksempel pรฅ en cyklusgraf:

Cyklus graf

Bipartitegraf

Disse slags Grafer er specielle slags grafer, hvor toppunkter er tildelt to sรฆt.

Bipartite Graph skal fรธlge reglen:

  • To sรฆt knudepunkter skal vรฆre adskilte, hvilket betyder, at alle knudepunkter skal opdeles i to grupper eller sรฆt.
  • Samme sรฆt Hjรธrner bรธr ikke danne nogen kanter.

Bipartitegraf

Euler graf

Grafdatastrukturer betragtes som en Euler-graf, hvis alle hjรธrnerne har en lige-nummereret grad. Udtrykket grad af toppunkter betyder antallet af kanter, der peger pรฅ eller peger ud fra et bestemt toppunkt.

Her er et eksempel pรฅ en Euler-graf:

Euler graf

Alle hjรธrner har lige grader. Toppunkt A, D, E og H har to grader. Her har node C fire grader, hvilket er lige.

Hamilton graf

Hamilton Graph er en Connect Graph, hvor du kan besรธge alle toppunkter fra et givet toppunkt uden at gรฅ tilbage til den samme node eller bruge den samme kant. Denne form for forbundet graf er kendt som "Hamilton-grafen". Stien, du besรธger for at kontrollere, om den givne graf er Hamilton-graf eller ej, er kendt som Hamilton-sti.

Her er et simpelt grafeksempel pรฅ en Hamilton:

Hamilton graf

Pรฅ dette billede kan vi besรธge alle hjรธrnerne fra enhver knude i ovenstรฅende graf. En af stierne kan vรฆre ADCHBE. Det er ogsรฅ muligt at finde en Hamilton Cycle. Hamilton-cyklus starter og slutter ved samme toppunkt. Sรฅ Hamilton Cycle vil vรฆre ADCHBEA.

Opsummer dette indlรฆg med: