Struktura dat grafu a Algorithms (Příklad)

⚡ Chytré shrnutí

Datová struktura grafu je nelineární soubor vrcholů a hran, kde každá hrana spojuje dvojici vrcholů. Grafy modelují sítě reálného světa, jako jsou mapy, sociální spojení a webové stránky, a podporují mnoho výkonných algoritmů.

  • 📐 Struktura: Graf G = (V, E) spáruje množinu vrcholů (uzlů) s množinou hran (vazeb) mezi nimi.
  • 🔤 Terminologie: Klíčové pojmy zahrnují vrchol, hranu, stupeň, vnitřní stupeň, vnější stupeň, smyčku po sobě a sousednost.
  • 🗂️ Zastoupení: Grafy se ukládají pomocí matice sousednosti nebo seznamu sousednosti, přičemž každá z nich má jiné prostorové kompromisy.
  • 🧭 druhy: Orientované, neorientované, vážené, cyklické, acyklické, úplné, bipartitní a další klasifikují grafy podle struktury.
  • 🌐 Aplikace: Google Směrování map, sociální sítě, webové hodnocení a závislost na zdrojích – to vše se spoléhá na grafy.

Struktura dat grafu a Algorithms

Co je to graf v datové struktuře?

Graf je nelineární datová struktura, která se skládá z vrcholů a hran, kde vrcholy obsahují informace nebo data a hrany fungují jako spojení mezi dvojicí vrcholů.

Používá se k řešení reálných problémů, jako je nalezení nejlepší trasy k cílovému místu a trasy pro telekomunikace a sociální sítě. Uživatelé jsou v grafu považováni za uzel a vodiče jsou hrany spojující uživatele.

Pokud jsou hrany reprezentovány jako E a vrcholy jsou reprezentovány jako V, pak lze graf G zapsat jako množinu vrcholů a hran, jako např. G (V, E).

Příklad grafu v datové struktuře

Zde je jednoduchý příklad datové struktury grafu:

Příklad grafu v datové struktuře

Jedná se o jednoduchý neorientovaný graf (jeden druh grafu). Zde je množina vrcholů: {A, B, C, D, E, F}. Dva vrcholy tvoří hranu. Například A a B jsou spojeny hranou. A a F však nejsou spojeny žádnými hranami.

Terminologie grafů v datové struktuře

Následuje několik důležitých termínů používaných v datové struktuře grafu:

ObdobíDescription
VrcholKaždý datový prvek se nazývá vrchol nebo uzel. Na obrázku výše jsou vrcholy A, B, C, D a E.
Hrana (oblouk)Spojovací články mezi dvěma uzly nebo vrcholy se nazývají hrana (oblouk). Má dva konce a je reprezentována jako (počátečníVrchol, koncovýVrchol).
Neorientovaný okrajJe to obousměrná hrana.
Režie EdgeJe to jednosměrná hrana.
Zatížená hranaHrana s hodnotou.
StupeňV grafu se počet hran spojených s vrcholem nazývá stupeň.
IndegreeCelkový počet příchozích hran připojených k vrcholu.
OutdegreeCelkový počet odchozích hran připojených k vrcholu.
Vlastní smyčkaHrana se nazývá vlastní smyčka, pokud se její dva koncové body shodují.
SousedstvíVrcholy se nazývají sousední, pokud je mezi nimi spojena hrana.

Typy grafů v datové struktuře

Zde je seznam těch nejběžnějších typy grafů v datové struktuře:

  • Režírovaný graf
  • Neorientovaný graf
  • Vážený graf
  • Obousměrný graf
  • Nekonečný graf
  • Null Graph
  • Triviální graf
  • Více grafů
  • Kompletní graf
  • Připojený graf
  • Cyklický graf
  • Řízený acyklický graf (DAG)
  • Graf cyklu
  • Bipartitní graf
  • Eulerův graf
  • Hamiltonův graf

Jak reprezentovat graf v datové struktuře?

Graf se obvykle ukládá do paměti pomocí jedné ze dvou reprezentací. Volba ovlivňuje, kolik paměti graf využívá a jak rychle se běžné operace provádějí.

  • Matice sousednosti: Dvourozměrné pole V × V, kde buňka [i][j] má hodnotu 1 (nebo váhu hrany), pokud mezi vrcholem i a vrcholem j existuje hrana, a 0 v opačném případě. Umožňuje vyhledávání hran v O(1), ale používá prostor O(V²), takže je nejvhodnější pro husté grafy.
  • Seznam sousedství: Pole seznamů, kde každý vrchol ukládá seznam svých sousedních vrcholů. Využívá prostor O(V + E) a je efektivní pro řídké grafy, což je důvod, proč ho používá většina reálných grafů.

Více si o nich můžete přečíst v seznam sousedností a maticová reprezentace grafu výukový program.

Aplikace grafové datové struktury

Graf má mnoho případů použití. Existuje mnoho algoritmů, které grafy používají. Zde jsou některé z aplikací grafů:

  • Google Mapy používají grafy k nalezení průsečíku dvou silnic a k výpočtu vzdálenosti mezi dvěma místy. Například Dijkstra, pro nalezení nejkratší vzdálenosti mezi zdrojovým a cílovým místem.
  • Facebook používá grafy k nalezení společných přátel uživatelů. Jeho algoritmus považuje každého uživatele za uzel grafu.
  • Pro alokaci zdrojů se používá DAG (Directed Acyclic Graph). Ten kontroluje závislosti zdrojů.
  • Jedno Google Vyhledávače používají grafy k vytváření pozic webových stránek.
  • Mapaping Zařízení používá datovou strukturu grafu.
  • A router a jeho protokol používá graf k naučení cesty k cíli.

Nejčastější dotazy

Grafové neuronové sítě se učí z grafově strukturovaných dat pro detekci podvodů, doporučení a objevování léků. Znalostní grafy podporují odpovídání na otázky s využitím umělé inteligence a frameworky pro hluboké učení modelují každý výpočet jako graf operací.

Ano. Asistenti umělé inteligence, jako je GitHub Copilot, dokáží generovat implementace BFS, DFS, Dijkstrova a topologického řazení z prostého popisu. Před použitím kódu byste měli otestovat okrajové případy, jako jsou odpojené uzly, cykly a prázdné grafy.

Strom je speciální typ grafu, který je souvislý a nemá žádné cykly, s přesně jednou cestou mezi libovolnými dvěma uzly. Graf je obecnější: může obsahovat cykly, nesouvislé části a orientované nebo vážené hrany.

Dvě hlavní metody procházení jsou prohledávání do šířky (BFS), které prozkoumává úroveň po úrovni pomocí fronty, a prohledávání do hloubky (DFS), které prozkoumává co nejhlouběji pomocí zásobníku nebo rekurze před návratem zpět.trackrál.

Shrňte tento příspěvek takto: