Graf datastruktur och Algorithms (Exempel)

โšก Smart sammanfattning

Grafdatastruktur รคr en icke-linjรคr samling av noder och kanter dรคr varje kant lรคnkar samman ett par noder. Grafer modellerar verkliga nรคtverk som kartor, sociala kontakter och webbsidor, och stรถder mรฅnga kraftfulla algoritmer.

  • ๐Ÿ“ Strukturera: En graf G = (V, E) parar ihop en uppsรคttning noder (noder) med en uppsรคttning kanter (lรคnkar) mellan dem.
  • ๐Ÿ”ค Terminologi: Nyckeltermer inkluderar vertex, kant, grad, ingrad, utgrad, sjรคlvloop och adjacens.
  • ๐Ÿ—‚๏ธ Representation: Grafer lagras med hjรคlp av en adjacentsmatris eller en adjacentslista, var och en med olika rymdavvรคgningar.
  • ๐Ÿงญ typer: Riktade, oriktade, viktade, cykliska, acykliska, fullstรคndiga, tvรฅdelade och fler klassificerar grafer efter struktur.
  • ๐ŸŒ Program: Google Kartrutning, sociala nรคtverk, webbrankning och resursberoende รคr alla beroende av grafer.

Graf datastruktur och Algorithms

Vad รคr en graf i datastruktur?

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

Det anvรคnds fรถr att lรถsa verkliga problem, som att hitta den bรคsta vรคgen till destinationen och vรคgen fรถr telekommunikation och sociala nรคtverk. Anvรคndare betraktas som en nod i grafen, och ledningarna รคr kanterna som fรถrbinder anvรคndarna.

Om kanter representeras som E och hรถrn representeras som V, sรฅ kan grafen G skrivas som en uppsรคttning av hรถrn och kanter, som t.ex. G (V, E).

Exempel pรฅ graf i datastruktur

Hรคr รคr ett enkelt exempel pรฅ en grafdatastruktur:

Exempel pรฅ graf i datastruktur

Det รคr en enkel oriktad graf (en typ av graf). Hรคr รคr mรคngden av noder: {A, B, C, D, E, F}. Tvรฅ noder skapar en kant. Till exempel รคr A och B lรคnkade med en kant. Dรคremot รคr A och F inte lรคnkade med nรฅgra kanter.

Grafterminologier i datastruktur

Fรถljande รคr nรฅgra viktiga termer som anvรคnds i grafdatastrukturen:

TerminBESKRIVNING
VertexVarje dataelement kallas en nod eller en nod. I bilden ovan รคr A, B, C, D och E noderna.
Kant (bรฅge)Fรถrbindande lรคnkar mellan tvรฅ noder eller noder kallas en kant (Arc). Den har tvรฅ รคndar och representeras som (startingVertex, endingVertex).
Oriktad kantDet รคr en dubbelriktad kant.
Regisserad EdgeDet รคr en enkelriktad kant.
Viktad kantEn fรถrdel med ett vรคrde pรฅ sig.
ExamenI en graf kallas antalet kanter som รคr fรถrbundna med ett hรถrn fรถr en grad.
IndegreeDet totala antalet inkommande kanter kopplade till en vertex.
UtgradigDet totala antalet utgรฅende kanter kopplade till en vertex.
SjรคlvslingaEn kant kallas en sjรคlvslinga om dess tvรฅ รคndpunkter sammanfaller.
NรคrhetNomter sรคgs vara intilliggande om en kant รคr fรถrbunden mellan dem.

Typer av grafer i datastruktur

Hรคr รคr listan รถver de vanligaste typer av grafer i datastrukturen:

  • Regisserad graf
  • Oriktad graf
  • Viktad graf
  • Dubbelriktad graf
  • Oรคndlig graf
  • Null graf
  • Trivial graf
  • Multi Graph
  • Komplett graf
  • Ansluten graf
  • Cyklisk graf
  • Regisserad acyklisk graf (DAG)
  • Cykeldiagram
  • Bipartitgraf
  • Euler graf
  • Hamilton graf

Hur representerar man en graf i en datastruktur?

En graf lagras vanligtvis i minnet med hjรคlp av en av tvรฅ representationer. Valet pรฅverkar hur mycket minne grafen anvรคnder och hur snabbt vanliga operationer kรถrs.

  • Nรคrhetsmatris: En tvรฅdimensionell V ร— V-matris dรคr cell [i][j] รคr 1 (eller kantvikten) om en kant finns mellan hรถrn i och hรถrn j, och 0 annars. Den tillรฅter O(1) kantsรถkning men anvรคnder O(Vยฒ)-utrymme, vilket gรถr den bรคst fรถr tรคta grafer.
  • Angrรคnsande lista: En array av listor dรคr varje nodpunkt lagrar en lista รถver sina angrรคnsande noder. Den anvรคnder O(V + E)-utrymme och รคr effektiv fรถr glesa grafer, vilket รคr anledningen till att de flesta verkliga grafer anvรคnder den.

Du kan lรคsa mer om dessa i adjacenslista och matrisrepresentation av en graf handledning.

Tillรคmpningar av grafdatastruktur

En graf har mรฅnga anvรคndningsomrรฅden. Det finns mรฅnga algoritmer som anvรคnder grafer. Hรคr รคr nรฅgra av grafens tillรคmpningar:

  • Google Maps anvรคnder grafer fรถr att hitta korsningen mellan tvรฅ vรคgar och berรคkna avstรฅndet mellan tvรฅ platser. Till exempel, Dijkstra, fรถr att hitta det kortaste avstรฅndet mellan kรคllan och destinationsplatsen.
  • Facebook anvรคnder grafer fรถr att hitta anvรคndarnas gemensamma vรคnner. Dess algoritm betraktar varje anvรคndare som en nod i en graf.
  • Fรถr resursallokering anvรคnds en DAG (Directed Acyclic Graph). Den kontrollerar resursernas beroende.
  • Ocuco-landskapet Google Sรถkmotorer anvรคnder grafer fรถr att skapa rankningen fรถr webbplatser.
  • En kartaping Enheten anvรคnder grafdatastrukturen.
  • A router och dess protokoll anvรคnder grafen fรถr att lรคra sig vรคgen till destinationen.

Vanliga frรฅgor

Grafiska neurala nรคtverk lรคr sig frรฅn grafstrukturerad data fรถr bedrรคgeriupptรคckt, rekommendationer och lรคkemedelsutveckling. Kunskapsgrafer stรถder AI-frรฅgor och djupinlรคrningsramverk modellerar varje berรคkning som en graf รถver operationer.

Ja. AI-assistenter som GitHub Copilot kan generera BFS-, DFS-, Dijkstra- och topologiska sorteringsimplementeringar frรฅn en enkel beskrivning. Du bรถr fortfarande testa kantfall som frรฅnkopplade noder, cykler och tomma grafer innan du anvรคnder koden.

Ett trรคd รคr en speciell typ av graf som รคr sammanhรคngande och saknar cykler, med exakt en vรคg mellan tvรฅ noder. En graf รคr mer generell: den kan innehรฅlla cykler, frรฅnskilda delar och riktade eller viktade kanter.

De tvรฅ huvudsakliga traverseringsmetoderna รคr Breadth-First Search (BFS), som utforskar nivรฅ fรถr nivรฅ med hjรคlp av en kรถ, och Depth-First Search (DFS), som utforskar sรฅ djupt som mรถjligt med hjรคlp av en stack eller rekursion innan bakรฅtgรฅende sรถkning.trackung.

Sammanfatta detta inlรคgg med: