Reprezentace grafů v paměti

Graf lze v paměti uchovávat třemi základními způsoby. Každý z nich je vhodný pro různé typy úloh a má odlišné nároky na časovou a paměťovou složitost.

Způsoby uložení:

  1. Matice sousednosti
  2. Seznam sousedů
  3. Seznam hran

Příklad grafu

1. Matice sousednosti

Matice sousednosti je čtvercová matice , kde je počet vrcholů grafu.

  • Prvek indikuje existenci hrany mezi vrcholem a .
  • U neorientovaného grafu je matice symetrická, tedy
  • Přítomnost hrany se značí 1 a chybějící hrana se značí 0
  • U ohodnoceného grafu matice obsahuje místo 0/1 přímo váhu hrany - případně 0, pokud hrana neexistuje

Výhody

  • Rychlé ověření existence hrany
  • Jednoduchá implementace

Nevýhody

  • Paměťová náročnost i u řídkých grafů
  • Neefektivní při malém počtu hran vzhledem k počtu vrcholů

Příklad

2. Seznam sousedů

Seznam sousedů ukládá ke každému vrcholu seznam vrcholů, do nichž vedou hrany.

Výhody

  • Paměťová úspora u řídkých grafů , kde je počet hran
  • Snadný průchod sousedy daného vrcholu

Nevýhody

  • Ověření existence hrany může být až
  • Složitější implementace některých algoritmů (např. hledání všech hran)

Příklad

3. Seznam hran

Seznam hran ukládá graf jako prostý seznam dvojic (nebo trojic u ohodnocených grafů) reprezentujících všechny hrany.

Výhody

  • Extrémně úsporný pro ukládání hran
  • Výhodný pro algoritmy, které procházejí všechny hrany (např. Kruskalův algoritmus)

Nevýhody

  • Ověření existence hrany
  • Složitější přístup k sousedům vrcholu

Příklad