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: