Typer av grafer i datastruktur med exempel

โšก Smart sammanfattning

Grafer i datastrukturer รคr icke-linjรคra samlingar av noder och kanter klassificerade i familjer sรฅsom riktade, oriktade, viktade, cykliska, acykliska, fullstรคndiga, sammanhรคngande, tvรฅdelade, Euler- och Hamilton-grafer baserat pรฅ struktur.

  • ๐Ÿ“ Definition: En graf G = (V, E) รคr en icke-linjรคr struktur dรคr V รคr nodmรคngden och E รคr kantmรคngden som fรถrbinder par av noder.
  • โžก๏ธ riktning: Riktade grafer anvรคnder pilfรถrsedda kanter med en fast kรคlla och mรฅl, medan oriktade grafer tillรฅter dubbelriktad fรถrflyttning รถver varje kant.
  • โš–๏ธ Vikt: Viktade grafer kopplar en numerisk kostnad till varje kant, medan oviktade grafer behandlar alla kanter som samband med lika kostnad.
  • ๐Ÿ” cykler: Cykliska grafer innehรฅller en eller flera cykler; en riktad acyklisk graf (DAG) fรถrbjuder cykler och mรถjliggรถr schemalรคggning och topologisk sortering.
  • ๐Ÿ”— Fullstรคndighet: Kompletta grafer fรถrbinder varje par av noder, sammanhรคngande grafer tillรฅter en vรคg mellan tvรฅ valfria noder, och nollgrafer har noll kanter.
  • ๐Ÿงฉ Specialtyper: Bipartita, Euler-, Hamilton-, multi-, cykel- och trivialgrafer har var och en en specifik regel fรถr hur noder och kanter รคr ordnade.

Typer av grafer i datastruktur

En graf รคr en icke-linjรคr datastruktur som bestรฅr av noder och kanter. Noderna innehรฅller informationen eller data, och kanterna fungerar som en lรคnk mellan ett par noder.

Grafer kan vara av flera typer, beroende pรฅ nodernas och kanternas position. Hรคr รคr nรฅgra viktiga typer av grafer:

Regisserad graf

Kanterna pรฅ den riktade grafen innehรฅller pilar som anger riktningen. Pilen anger var kanten pekar mot eller slutar. Hรคr รคr ett exempel pรฅ den riktade grafen.

Regisserad graf

Regisserad graf

  • Vi kan gรฅ frรฅn nod A till D.
  • Vi kan dock inte gรฅ frรฅn nod D till nod A, eftersom kanten pekar frรฅn A till D.
  • Eftersom grafen inte har vikter kommer det att kosta samma sak att resa frรฅn vertex A till D som att resa frรฅn D till F.

Oriktad graf

En oriktad graf innehรฅller kanter utan pekare. Det betyder att vi kan rรถra oss tvรคrtom mellan tvรฅ noder. Hรคr รคr ett enkelt exempel pรฅ en oriktad graf.

Oriktad graf

Oriktad graf

I diagrammet ovan,

  • Vi kan fรถrflytta oss frรฅn A till B.
  • Vi kan ocksรฅ gรฅ frรฅn B till A.
  • Kanter innehรฅller inga anvisningar.

Det รคr ett exempel pรฅ en oriktad graf med ett รคndligt antal noder och kanter utan vikter.

Viktad graf

En graf som innehรฅller vikter eller kostnader pรฅ kanterna kallas en viktad graf. Det numeriska vรคrdet representerar generellt den fรถrflyttande kostnaden frรฅn ett hรถrn till ett annat. Bรฅde riktade och oriktade grafer kan ha vikter pรฅ sina kanter. Hรคr รคr ett exempel pรฅ en viktad graf (riktad).

Regisserad graf med vikt

Riktad graf med vikt

  • A till B, det finns en kant, och vikten รคr 5, vilket innebรคr att att flytta frรฅn A till B kommer att kosta oss 5.
  • A pekar mot B, men i den hรคr grafen har B ingen direkt kant รถver A. Sรฅ vi kan inte resa frรฅn B till A.
  • Men om vi vill gรฅ frรฅn A till F finns det flera vรคgar. Vรคgarna รคr ADF och ABF. ADF kostar (10+11) eller 21.
  • Hรคr kommer vรคgen ABF att kosta (5+15) eller 20. Hรคr adderar vi vikten fรถr varje kant i vรคgen.

Hรคr รคr ett exempel pรฅ en oriktad graf med vikter:

Oriktad graf med vikt

Oriktad graf med vikt

Hรคr har kanten vikt men ingen riktning. Sรฅ det betyder att resa frรฅn vertex A till D kommer att kosta 10 och vice versa.

Dubbelriktad graf

Dubbelriktade och oriktade grafer har en gemensam egenskap. Det รคr:

  • Generellt kan en oriktad graf ha en kant mellan tvรฅ noder.

Till exempel:

Dubbelriktad graf

  • Hรคr kommer det att kosta 10 att flytta frรฅn A till D eller D till A.
  • I en dubbelriktad graf kan vi ha tvรฅ kanter mellan tvรฅ hรถrn.

Hรคr รคr ett exempel:

Dubbelriktad graf

Dubbelriktad graf

Att resa frรฅn A till D kostar oss 17, men att resa frรฅn D till A kostar oss 12. Sรฅ vi kan inte tilldela tvรฅ olika vikter om det รคr en oriktad graf.

Oรคndlig graf

Grafen kommer att innehรฅlla ett oรคndligt antal kanter och noder. Om en graf รคr oรคndlig och รคven รคr en sammanhรคngande graf, kommer den ocksรฅ att innehรฅlla ett oรคndligt antal kanter. Hรคr betyder de utรถkade kanterna att fler kanter kan vara sammankopplade med dessa noder via kanter. Hรคr รคr ett exempel pรฅ den oรคndliga grafen:

Oรคndlig graf

Oรคndlig graf

Null graf

En nollgraf innehรฅller endast noder eller noder men utan kanter. Om grafen G = (V, E) ges, dรคr V รคr noder och E รคr kanter, kommer den att vara noll om antalet kanter E รคr noll. Hรคr รคr ett exempel pรฅ en nollgraf:

Null graf

Null graf

Trivial graf

En grafdatastruktur anses trivial om endast en nod eller nod finns utan kanter. Hรคr รคr ett exempel pรฅ en trivialgraf:

Trivial graf

Multi Graph

En graf kallas en multigraf nรคr flera kanter finns mellan tvรฅ noder, eller nรคr noden har en loop. Termen "loop" i grafdatastruktur betyder en kant som pekar mot samma nod eller nod. En multigraf kan vara riktad eller oriktad. Hรคr รคr ett exempel pรฅ en multigraf:

Multi Graph

Det finns tvรฅ kanter frรฅn B till A. Dessutom har hรถrn E en sjรคlvloop. Grafen ovan รคr en riktad graf utan vikter pรฅ kanterna.

Komplett graf

En graf รคr komplett om varje nodpunkt har riktade eller oriktade kanter med alla andra noder. Antag att det finns totalt V noder och varje nodpunkt har exakt V-1 kanter. Dรฅ kommer denna graf att kallas en komplett graf. I denna typ av graf รคr varje nodpunkt fรถrbunden med alla andra noder via kanter. Hรคr รคr ett exempel pรฅ en komplett graf med fem noder:

Komplett graf

Du kan se pรฅ bilden att det totala antalet noder รคr fem, och alla noder har exakt fyra kanter.

Ansluten graf

En graf kallas en sammanhรคngande graf om vi bรถrjar frรฅn en nod eller ett hรถrn och kan fรคrdas till alla noder frรฅn startnoden. Fรถr detta bรถr det finnas minst en kant mellan varje par av noder eller hรถrn. Hรคr รคr ett exempel pรฅ en sammanhรคngande graf:

Ansluten graf

Hรคr รคr en fรถrklaring av ovanstรฅende sammanhรคngande graf:

  • Om vi โ€‹โ€‹antar att det inte finns nรฅgon kant mellan C och F, kan vi inte fรคrdas frรฅn A till G. Kanten C till F gรถr det dock mรถjligt fรถr oss att fรคrdas till vilken nod som helst frรฅn en given nod.
  • En komplett graf รคr en sammankopplad graf eftersom vi kan flytta frรฅn en nod till vilken annan nod som helst i den givna grafen.

Cyklisk graf

En graf sรคgs vara cyklisk om det finns en eller flera cykler i grafen. Hรคr รคr ett exempel pรฅ en cyklisk graf:

Cyklisk graf

Hรคr bildar punkterna A, B och C en cykel. En graf kan ha flera cykler inuti sig.

Regisserad acyklisk graf (DAG)

En graf kallas en riktad acyklisk graf eller DAG om det inte finns nรฅgra cykler inuti grafen. DAG รคr viktig nรคr man utfรถr Topologisk sortering eller hitta exekveringsordningen. DAG รคr ocksรฅ viktigt fรถr att skapa schemalรคggningssystem eller skanna beroenden av resurser, etc. Grafen ovan innehรฅller dock ingen cykel inuti. Hรคr รคr ett enkelt exempel pรฅ en riktad acyklisk graf (DAG):

Regisserad acyklisk graf (DAG)

Cykeldiagram

En cykelgraf รคr inte samma sak som en cyklisk graf. I en cykelgraf har varje nod exakt tvรฅ sammankopplade kanter, vilket innebรคr att varje nod har exakt tvรฅ grader. Hรคr รคr ett exempel pรฅ en cykelgraf:

Cykeldiagram

Bipartitgraf

Dessa typer av Grafer รคr speciella typer av grafer dรคr noder tilldelas tvรฅ mรคngder. En tvรฅdelad graf mรฅste fรถlja regeln:

  • De tvรฅ uppsรคttningarna av noder ska vara distinkta, vilket innebรคr att alla noder mรฅste delas in i tvรฅ grupper eller uppsรคttningar.
  • Samma mรคngd noder bรถr inte bilda nรฅgra kanter.

Bipartitgraf

Euler graf

En grafdatastruktur betraktas som en Eulergraf om alla noder har en jรคmn grad. Termen grad av noder avser antalet kanter som pekar mot eller ut frรฅn ett visst nodpunkt. Hรคr รคr ett exempel pรฅ en Eulergraf:

Euler graf

Alla noder har jรคmna grader. Noderna A, D, E och H har tvรฅ grader. Hรคr har nod C fyra grader, vilket รคr jรคmnt.

Hamilton graf

En Hamiltongraf รคr en sammanhรคngande graf, dรคr du kan besรถka alla noder frรฅn ett givet nodpunkt utan att รฅtervรคnda till samma nod eller anvรคnda samma kant. Denna typ av sammanhรคngande graf kallas "Hamiltongrafen". Den vรคg du besรถker fรถr att verifiera om den givna grafen รคr en Hamiltongraf eller inte kallas Hamiltonbanan. Hรคr รคr ett enkelt grafexempel pรฅ en Hamilton:

Hamilton graf

I den hรคr bilden kan vi besรถka alla hรถrn frรฅn vilken nod som helst i ovanstรฅende graf. En av vรคgarna kan vara ADCHBEDet รคr ocksรฅ mรถjligt att hitta en Hamiltoncykel. En Hamiltoncykel bรถrjar och slutar vid samma hรถrn. Sรฅ Hamiltoncykeln kommer att vara ADCHBEA.

Vanliga frรฅgor

En graf รคr en icke-linjรคr datastruktur som bestรฅr av noder (noder) och kanter (lรคnkar). Noder lagrar data och kanter fรถrbinder par av noder och bildar nรคtverk som anvรคnds fรถr att modellera vรคgar, sociala band, beroenden med mera.

Riktade grafer anvรคnder kanter med pilar som pekar frรฅn en kรคlla till ett mรฅl, vilket begrรคnsar fรถrflyttningen i den riktningen. Oriktade grafer anvรคnder kanter utan pilar, vilket mรถjliggรถr fรถrflyttning mellan de sammankopplade noderna i endera riktningen.

En riktad acyklisk graf, eller DAG, รคr en riktad graf som inte innehรฅller nรฅgra cykler. DAG:er anvรคnds ofta fรถr uppgiftsschemalรคggning, byggsystem, lรถsning av paketberoenden och alla arbetsflรถden som krรคver en giltig topologisk ordning.

En viktad graf fรคster en numerisk vikt pรฅ varje kant, som representerar avstรฅnd, tid eller kostnad. Kortastevรคgsalgoritmer som Dijkstra och nรคtverksroutingprotokoll anvรคnder viktade grafer fรถr att hitta den mest effektiva vรคgen.

En komplett graf har en kant mellan varje par av noder. En sammanhรคngande graf behรถver bara en vรคg mellan varje par. Varje komplett graf รคr sammanhรคngande, men inte varje sammanhรคngande graf รคr komplett.

Tvรฅdelade grafer delar upp noder i tvรฅ disjunkta mรคngder med endast kanter mellan de tvรฅ mรคngderna. De modellerar matchningsproblem som att tilldela arbetare till jobb, studenter till kurser eller att hรคnvisa fรถrare till passagerare.

Grafiska neurala nรคtverk tillรคmpar maskininlรคrning pรฅ grafstrukturerad data fรถr uppgifter som bedrรคgeriupptรคckt, lรคkemedelsutveckling och rekommendationer. Kunskapsgrafer driver AI-frรฅgor, och berรคkningsgrafer beskriver varje framรฅt- och bakรฅtpassage i djupinlรคrning.

Ja. AI Copilot-verktyg som GitHub Copilot och ChatGPT genererar standardinstรคllningar fรถr BFS, DFS, Dijkstra och topologisk sortering i de flesta sprรฅk. Utvecklare behรถver fortfarande verifiera kantfall, cykelhantering och komplexitet fรถr produktionskod.

Sammanfatta detta inlรคgg med: