Typer grafer i datastruktur med eksempler

โšก Smart oppsummering

Grafer i datastruktur er ikke-lineรฆre samlinger av hjรธrner og kanter klassifisert i familier som rettede, urettede, vektede, sykliske, asykliske, komplette, sammenhengende, todelte, Euler- og Hamilton-grafer basert pรฅ struktur.

  • ๐Ÿ“ Definisjon: En graf G = (V, E) er en ikke-lineรฆr struktur der V er toppunktmengden og E er kantmengden som forbinder par av toppunkter.
  • โžก๏ธ Retning: Rettede grafer bruker pilmerkede kanter med en fast kilde og mรฅl, mens ikke-rettede grafer tillater toveis reise over hver kant.
  • ๐Ÿ‡ง๐Ÿ‡ท Vekt: Vektede grafer knytter en numerisk kostnad til hver kant, mens uvektede grafer behandler alle kanter som forbindelser med like kostnader.
  • ๐Ÿ” Sykler: Sykliske grafer inneholder รฉn eller flere sykluser; en rettet asyklisk graf (DAG) forbyr sykluser og muliggjรธr planlegging og topologisk sortering.
  • ๐Ÿ”— fullstendighet: Komplette grafer forbinder hvert par av hjรธrner, sammenkoblede grafer tillater en bane mellom to hjรธrner, og nullgrafer har null kanter.
  • ๐Ÿงฉ Spesielle typer: Todelte, Euler-, Hamilton-, multi-, syklus- og trivialgrafer pรฅlegger hver en spesifikk regel for hvordan hjรธrner og kanter er ordnet.

Typer grafer i datastruktur

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

Grafer kan vรฆre av flere typer, avhengig av plasseringen av nodene og kantene. Her er noen viktige typer grafer:

Regissert graf

Kantene pรฅ den rettede grafen inneholder piler som angir retningen. Pilen bestemmer hvor kanten peker mot eller slutter. Her er et eksempel pรฅ den rettede grafen.

Regissert graf

Regissert graf

  • Vi kan gรฅ fra node A til D.
  • Vi kan imidlertid ikke gรฅ fra node D til node A, ettersom kanten peker fra A til D.
  • Siden grafen ikke har vekter, vil det รฅ reise fra toppunkt A til D koste det samme som รฅ reise fra D til F.

Udirigert graf

En urettet graf inneholder kanter uten pekere. Det betyr at vi kan bevege oss omvendt mellom to hjรธrner. Her er et enkelt eksempel pรฅ en urettet graf.

Udirigert graf

Udirigert graf

I grafen ovenfor,

  • Vi kan bevege oss fra A til B.
  • Vi kan ogsรฅ bevege oss fra B til A.
  • Kanter inneholder ingen retninger.

Det er et eksempel pรฅ en urettet graf med et endelig antall hjรธrner og kanter uten vekter.

Vektet graf

En graf som inneholder vekter eller kostnader pรฅ kantene kalles en vektet graf. Den numeriske verdien representerer vanligvis den bevegelige kostnaden fra ett hjรธrne til et annet. Bรฅde rettede og ikke-rettede grafer kan ha vekter pรฅ kantene sine. Her er et eksempel pรฅ en vektet graf (rettet).

Regissert graf med vekt

Regissert graf med vekt

  • Fra A til B er det en kant, og vekten er 5, som betyr at รฅ flytte fra A til B vil koste oss 5.
  • A peker mot B, men i denne grafen har B ingen direkte kant over A. Sรฅ vi kan ikke reise fra B til A.
  • Men hvis vi รธnsker รฅ gรฅ fra A til F, finnes det flere veier. Veiene er ADF og ABF. ADF vil koste (10+11) eller 21.
  • Her vil banen ABF koste (5+15) eller 20. Her legger vi sammen vekten av hver kant i banen.

Her er et eksempel pรฅ en urettet graf med vekter:

Urettet graf med vekt

Urettet graf med vekt

Her har kanten vekt, men ingen retning. Sรฅ det betyr at รฅ reise fra toppunkt A til D vil koste 10 og omvendt.

Toveis graf

Toveis grafer og ikke-veis grafer har en felles egenskap. Det er:

  • Vanligvis kan en urettet graf ha รฉn kant mellom to hjรธrner.

For eksempel:

Toveis graf

  • Her vil det รฅ flytte fra A til D eller D til A koste 10.
  • I en toveis graf kan vi ha to kanter mellom to hjรธrner.

Her er et eksempel:

Toveis graf

Toveis graf

ร… reise fra A til D vil koste oss 17, men รฅ reise fra D til A vil koste oss 12. Sรฅ vi kan ikke tildele to forskjellige vekter hvis det er en urettet graf.

Uendelig graf

Grafen vil inneholde et uendelig antall kanter og noder. Hvis en graf er uendelig og ogsรฅ er en sammenhengende graf, vil den ogsรฅ inneholde et uendelig antall kanter. Her betyr de utvidede kantene at flere kanter kan vรฆre koblet til disse nodene via kanter. Her er et eksempel pรฅ den uendelige grafen:

Uendelig graf

Uendelig graf

Null graf

En nullgraf inneholder bare noder eller hjรธrner, men uten kanter. Hvis gitt en graf G = (V, E), hvor V er hjรธrner og E er kanter, vil den vรฆre null hvis antallet kanter E er null. Her er et eksempel pรฅ en nullgraf:

Null graf

Null graf

Triviell graf

En grafdatastruktur regnes som triviell hvis bare ett hjรธrne eller รฉn node er tilstede uten kanter. Her er et eksempel pรฅ en triviell graf:

Triviell graf

Multi Graph

En graf kalles en multigraf nรฅr det er flere kanter mellom to hjรธrner, eller nรฅr hjรธrnet har en lรธkke. Begrepet ยซlรธkkeยป i grafdatastruktur betyr en kant som peker mot samme node eller hjรธrne. En multigraf kan vรฆre rettet eller ikke-rettet. Her er et eksempel pรฅ en multigraf:

Multi Graph

Det er to kanter fra B til A. Dessuten har hjรธrne E en selvlรธkke. Grafen ovenfor er en rettet graf uten vekter pรฅ kantene.

Komplett graf

En graf er komplett hvis hvert hjรธrne har rettede eller ikke-rettede kanter med alle andre hjรธrner. Anta at det er totalt V antall hjรธrner, og hvert hjรธrne har nรธyaktig V-1 kanter. Da vil denne grafen bli kalt en komplett graf. I denne typen graf er hvert hjรธrne forbundet med alle andre hjรธrner via kanter. Her er et eksempel pรฅ en komplett graf med fem hjรธrner:

Komplett graf

Du kan se pรฅ bildet at det totale antallet noder er fem, og alle nodene har nรธyaktig fire kanter.

Tilkoblet graf

En graf kalles en sammenhengende graf hvis vi starter fra en node eller et hjรธrne og kan bevege oss til alle nodene fra startnoden. For dette bรธr det vรฆre minst รฉn kant mellom hvert par av noder eller hjรธrner. Her er et eksempel pรฅ en sammenhengende graf:

Tilkoblet graf

Her er en forklaring pรฅ den tilkoblede grafen ovenfor:

  • Forutsatt at det ikke er noen kant mellom C og F, kan vi ikke reise fra A til G. Kanten C til F lar oss imidlertid reise til en hvilken som helst node fra en gitt node.
  • En komplett graf er en koblet graf fordi vi kan flytte fra en node til en hvilken som helst annen node i den gitte grafen.

Syklisk graf

En graf sies รฅ vรฆre syklisk hvis det er รฉn eller flere sykluser tilstede i grafen. Her er et eksempel pรฅ en syklisk graf:

Syklisk graf

Her danner hjรธrnene A, B og C en syklus. En graf kan ha flere sykluser inni seg.

Regissert syklisk graf (DAG)

En graf kalles en rettet asyklisk graf eller DAG hvis det ikke er noen sykluser inni grafen. DAG er viktig nรฅr man gjรธr Topologisk sortering eller finne utfรธrelsesrekkefรธlgen. DAG er ogsรฅ viktig for รฅ lage planleggingssystemer eller skanne avhengigheter av ressurser, osv. Grafen ovenfor inneholder imidlertid ingen syklus inni. Her er et enkelt eksempel pรฅ en rettet asyklisk graf (DAG):

Regissert syklisk graf (DAG)

Syklusgraf

En syklusgraf er ikke det samme som en syklisk graf. I en syklusgraf vil hver node ha nรธyaktig to kanter forbundet, noe som betyr at hver node vil ha nรธyaktig to grader. Her er et eksempel pรฅ en syklusgraf:

Syklusgraf

Todelt graf

Slike grafer er spesielle typer grafer der noder er tilordnet to sett. En todelt graf mรฅ fรธlge regelen:

  • De to settene med hjรธrner skal vรฆre forskjellige, noe som betyr at alle hjรธrnene mรฅ deles inn i to grupper eller sett.
  • Samme mengde hjรธrner skal ikke danne noen kanter.

Todelt graf

Euler graf

En grafdatastruktur regnes som en Euler-graf hvis alle hjรธrnene har en partallsgrad. Begrepet graden av hjรธrner betyr antall kanter som peker mot eller ut fra et bestemt hjรธrne. Her er et eksempel pรฅ en Euler-graf:

Euler graf

Alle hjรธrnene har partallsgrader. Hjรธrnetoppene A, D, E og H har to grader. Her har node C fire grader, som er partallsgrader.

Hamilton-graf

En Hamilton-graf er en sammenhengende graf, hvor du kan besรธke alle hjรธrnene fra et gitt hjรธrne uten รฅ besรธke den samme noden eller bruke den samme kanten. Denne typen sammenhengende graf er kjent som ยซHamilton-grafenยป. Banen du besรธker for รฅ bekrefte om den gitte grafen er en Hamilton-graf eller ikke er kjent som Hamilton-banen. Her er et enkelt grafeksempel pรฅ en Hamilton:

Hamilton-graf

I dette bildet kan vi besรธke alle toppunktene fra hvilken som helst node i grafen ovenfor. En av stiene kan vรฆre ADCHBEDet er ogsรฅ mulig รฅ finne en Hamilton-syklus. En Hamilton-syklus starter og slutter i samme hjรธrne. Sรฅ Hamilton-syklusen vil vรฆre ADCHBEA.

Spรธrsmรฅl og svar

En graf er en ikke-lineรฆr datastruktur laget av noder (noder) og kanter (lenker). Noder lagrer data, og kanter forbinder par av noder og danner nettverk som brukes til รฅ modellere veier, sosiale bรฅnd, avhengigheter og mer.

Rettede grafer bruker kanter med piler som peker fra en kilde til et mรฅl, noe som begrenser bevegelsen i den retningen. Urettede grafer bruker kanter uten piler, noe som tillater bevegelse mellom de tilkoblede hjรธrnene i begge retninger.

En rettet asyklisk graf, eller DAG, er en rettet graf som ikke inneholder sykluser. DAG-er brukes mye til oppgaveplanlegging, byggesystemer, lรธsning av pakkeavhengigheter og enhver arbeidsflyt som krever en gyldig topologisk rekkefรธlge.

En vektet graf legger en numerisk vekt til hver kant, som representerer avstand, tid eller kostnad. Korteste-vei-algoritmer som Dijkstra og nettverksrutingsprotokoller bruker vektede grafer for รฅ finne den mest effektive banen.

En komplett graf har en kant mellom hvert par av noder. En sammenhengende graf trenger bare en bane mellom hvert par. Enhver komplett graf er sammenhengende, men ikke enhver sammenhengende graf er komplett.

Todelte grafer deler hjรธrner i to disjunkte sett med bare kanter mellom de to settene. De modellerer samsvarsproblemer som รฅ tildele arbeidere til jobber, studenter til kurs eller รฅ henge sjรฅfรธrer til passasjerer.

Grafiske nevrale nettverk bruker maskinlรฆring pรฅ grafstrukturerte data for oppgaver som svindeldeteksjon, legemiddeloppdagelse og anbefalinger. Kunnskapsgrafer driver spรธrsmรฅlssvar med AI, og beregningsgrafer beskriver hver fremover- og bakoverpassering i dyp lรฆring.

Ja. AI Copilot-verktรธy som GitHub Copilot og ChatGPT genererer standardversjon for BFS, DFS, Dijkstra og topologisk sortering pรฅ de fleste sprรฅk. Utviklere mรฅ fortsatt verifisere kanttilfeller, syklushรฅndtering og kompleksitet for produksjonskode.

Oppsummer dette innlegget med: