Typer af grafer i datastruktur med eksempler

⚡ Smart opsummering

Grafer i datastrukturer er ikke-lineære samlinger af hjørner og kanter klassificeret i familier såsom rettede, urettede, vægtede, cykliske, acykliske, komplette, sammenhængende, todelte, Euler- og Hamilton-grafer baseret på struktur.

  • 📐 Definition: En graf G = (V, E) er en ikke-lineær struktur, hvor V er toppunktsmængden og E er kantmængden, der forbinder par af toppunkter.
  • ➡️ retning: Retningsrettede grafer bruger pilede kanter med en fast kilde og et fast mål, mens ikke-rettede grafer tillader tovejsbevægelse på tværs af hver kant.
  • ⚖️ Vægt: Vægtede grafer tillægger en numerisk omkostning til hver kant, hvorimod uvægtede grafer behandler alle kanter som forbindelser med samme omkostninger.
  • 🔁 Cykler: Cykliske grafer indeholder en eller flere cyklusser; en rettet acyklisk graf (DAG) forbyder cyklusser og muliggør planlægning og topologisk sortering.
  • 🔗 Fuldstændighed: Komplette grafer forbinder hvert par af hjørner, forbundne grafer tillader en sti mellem to vilkårlige hjørner, og nulgrafer har nul kanter.
  • 🧩 Særlige typer: Todelte, Euler-, Hamilton-, multi-, cyklus- og trivialgrafer pålægger hver især en specifik regel for, hvordan hjørner og kanter er arrangeret.

Typer af grafer i datastruktur

En graf er en ikke-lineær datastruktur, der består af hjørner og kanter. Hjørnpunkterne indeholder informationen eller dataene, og kanterne fungerer som et forbindelsesled mellem et par hjørner.

Grafer kan være af flere typer, afhængigt af placeringen af ​​knuder og kanter. Her er nogle vigtige typer grafer:

Instrueret graf

Kanterne af den rettede graf indeholder pile, der angiver retningen. Pilen bestemmer, hvor kanten peger på eller slutter. 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

En urettet graf indeholder kanter uden pointere. Det betyder, at vi kan bevæge os omvendt mellem to hjørner. Her er et simpelt eksempel på en urettet graf.

Udirigeret graf

Udirigeret graf

I ovenstående graf,

  • Vi kan bevæge os fra A til B.
  • Vi kan også bevæge os fra B til A.
  • Kanter indeholder ingen retninger.

Det er et eksempel på en urettet graf med et endeligt antal hjørner og kanter uden vægte.

Vægtet graf

En graf, der indeholder vægte eller omkostninger på kanterne, kaldes en vægtet graf. Den numeriske værdi repræsenterer generelt de bevægelige omkostninger fra et hjørne til et andet. Både rettede og ikke-rettede grafer 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 det vil koste os 5 at flytte fra A til B.
  • A peger på B, men i denne graf har B ingen direkte kant over A. Så vi kan ikke rejse fra B til A.
  • Men hvis vi vil gå fra A til F, er der flere veje. Vejene er ADF og ABF. ADF koster (10+11) eller 21.
  • Her vil stien ABF koste (5+15) eller 20. Her lægger vi vægten af ​​hver kant i stien sammen.

Her er et eksempel på en urettet 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

Tovejsgrafer og ikke-vejsgrafer har en fælles egenskab. Det er:

  • Generelt kan en urettet graf have én kant mellem to hjørner.

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

Det koster os 17 at rejse fra A til D, men 12 at rejse fra D til A. 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 knuder. Hvis en graf er uendelig og også er en sammenhængende graf, vil den også indeholde et uendeligt antal kanter. Her betyder de udvidede kanter, at flere kanter kan være forbundet til disse knuder via kanter. Her er et eksempel på den uendelige graf:

Uendelig graf

Uendelig graf

Nul graf

En nulgraf indeholder kun noder eller hjørner, men uden kanter. Hvis grafen 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 nulgraf:

Nul graf

Nul graf

Triviel graf

En grafdatastruktur betragtes som triviel, hvis kun ét hjørne eller én node er til stede uden kanter. Her er et eksempel på en triviel graf:

Triviel graf

Multi graf

En graf kaldes en multigraf, når der er flere kanter mellem to hjørner, eller når hjørnet har en løkke. Udtrykket "løkke" i grafdatastruktur betyder en kant, der peger på den samme node eller hjørne. En multigraf kan være rettet eller urettet. Her er et eksempel på en multigraf:

Multi graf

Der er to kanter fra B til A. Desuden har hjørne E en selvløkke. Ovenstående graf er en rettet graf uden vægte på kanterne.

Komplet graf

En graf er komplet, hvis hvert hjørne har rettede eller ikke-rettede kanter med alle andre hjørner. Antag, at der er et samlet antal hjørner på V, og hvert hjørne har præcis V-1 kanter. Så vil denne graf blive kaldt en komplet graf. I denne type graf 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 sammenhængende graf, hvis vi starter fra en node eller et hjørne og kan bevæge os til alle noderne fra startnoden. For at opnå dette skal der være mindst én kant mellem hvert par af noder eller hjørner. Her er et eksempel på en sammenhængende graf:

Forbundet graf

Her er en forklaring af ovenstående sammenhængende graf:

  • Hvis der ikke er nogen kant mellem C og F, kan vi ikke rejse fra A til G. Kanten C til F gør det dog muligt for os at rejse til enhver node fra en given node.
  • 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 punkterne A, B og C en cyklus. En graf kan have flere cyklusser indeni.

Instrueret acyklisk graf (DAG)

En graf kaldes en rettet acyklisk graf eller DAG, hvis der ikke er nogen cyklusser i grafen. DAG er vigtig, når man udfører Topologisk sortering eller finde udførelsesrækkefølgen. DAG er også vigtig for at oprette planlægningssystemer eller scanne afhængigheder af ressourcer osv. Grafen ovenfor indeholder dog ingen cyklus. Her er et simpelt eksempel på en rettet acyklisk graf (DAG):

Instrueret acyklisk graf (DAG)

Cyklus graf

En cyklusgraf er ikke det samme som en cyklisk graf. I en cyklusgraf vil hver knude have præcis to forbundet kanter, hvilket betyder, at hver knude vil have præcis to grader. Her er et eksempel på en cyklusgraf:

Cyklus graf

Bipartitegraf

Disse slags Grafer er særlige typer grafer, hvor hjørner er tildelt to sæt. En todelt graf skal følge reglen:

  • De to sæt af hjørner skal være forskellige, hvilket betyder, at alle hjørner skal opdeles i to grupper eller sæt.
  • Samme mængde hjørner bør ikke danne nogen kanter.

Bipartitegraf

Euler graf

En grafdatastruktur betragtes som en Euler-graf, hvis alle hjørner har en lige grad. Udtrykket grad af hjørner betyder antallet af kanter, der peger på eller ud fra et bestemt hjørne. Her er et eksempel på en Euler-graf:

Euler graf

Alle hjørnerne har lige grader. Hjørner A, D, E og H har to grader. Her har knudepunkt C fire grader, hvilket er lige.

Hamilton graf

En Hamilton-graf er en sammenhængende graf, hvor du kan besøge alle hjørnerne fra et givet hjørne uden at besøge den samme node eller bruge den samme kant igen. Denne type sammenhængende graf er kendt som "Hamilton-grafen". Den sti, du besøger for at verificere, om den givne graf er en Hamilton-graf eller ej, er kendt som Hamilton-stien. 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 ADCHBEDet er også muligt at finde en Hamilton-cyklus. En Hamilton-cyklus starter og slutter ved samme hjørne. Så Hamilton-cyklussen vil være ADCHBEA.

Ofte Stillede Spørgsmål

En graf er en ikke-lineær datastruktur lavet af hjørner (noder) og kanter (forbindelser). Hjørner lagrer data, og kanter forbinder par af hjørner og danner netværk, der bruges til at modellere veje, sociale bånd, afhængigheder og mere.

Retningsbaserede grafer bruger kanter med pile, der peger fra en kilde til et mål, hvilket begrænser bevægelsen i den retning. Urettede grafer bruger kanter uden pile, hvilket tillader bevægelse mellem de forbundne hjørner i begge retninger.

En rettet acyklisk graf, eller DAG, er en rettet graf, der ikke indeholder cyklusser. DAG'er bruges i vid udstrækning til opgaveplanlægning, byggesystemer, løsning af pakkeafhængigheder og enhver arbejdsgang, der kræver en gyldig topologisk rækkefølge.

En vægtet graf tillægger en numerisk vægt til hver kant, der repræsenterer afstand, tid eller omkostninger. Korteste-vejsalgoritmer såsom Dijkstra og netværksroutingprotokoller bruger vægtede grafer til at finde den mest effektive vej.

En komplet graf har en kant mellem hvert par af hjørner. En sammenhængende graf behøver kun en sti mellem hvert par. Enhver komplet graf er forbundet, men ikke enhver sammenhængende graf er komplet.

Todelte grafer opdeler hjørner i to adskilte sæt med kun kanter mellem de to sæt. De modellerer matchningsproblemer såsom at tildele arbejdere til job, studerende til kurser eller transport af chauffører til passagerer.

Grafiske neurale netværk anvender maskinlæring på grafstrukturerede data til opgaver som svindeldetektering, lægemiddelforskning og anbefalinger. Vidensgrafer driver besvarelse af AI-spørgsmål, og beregningsgrafer beskriver hver fremadgående og bagudgående passage i deep learning.

Ja. AI Copilot-værktøjer som GitHub Copilot og ChatGPT genererer standardtekster til BFS, DFS, Dijkstra og topologisk sortering i de fleste sprog. Udviklere skal stadig verificere kanttilfælde, cyklushåndtering og kompleksitet for produktionskode.

Opsummer dette indlæg med: