Graf závislosti - Dependency graph

V matematice , informatice a digitální elektroniky , je závislost graf je orientovaný graf představující závislostí několika objektů vůči sobě navzájem. Z grafu závislostí je možné odvodit pořadí hodnocení nebo absenci pořadí hodnocení, které respektuje dané závislosti.

Definice

Dependencygraph.png

Vzhledem k tomu, soubor objektů a tranzitivní vztah s modelováním závislost „ závisí na b “ ( „ jen potřebuje b hodnocena jako první“), závislost graf je graf s k tranzitivní redukce z výzkumu .

Předpokládejme například jednoduchou kalkulačku. Tato kalkulačka podporuje přiřazení konstantních hodnot k proměnným a přiřazení součtu přesně dvou proměnných ke třetí proměnné. Vzhledem k několika rovnicím jako „ A = B + C ; B = 5+ D ; C = 4; D = 2;“ pak a . Tuto relaci můžete odvodit přímo: A závisí na B a C , protože můžete přidat dvě proměnné právě tehdy, pokud znáte hodnoty obou proměnných. Tak, B musí být vypočtena před lze vypočítat. Hodnoty C a D jsou však známy okamžitě, protože se jedná o číselné literály.

Uznání nemožných hodnocení

V grafu závislostí vedou cykly závislostí (nazývané také kruhové závislosti ) do situace, ve které neexistuje žádný platný pořadí vyhodnocení, protože žádný z objektů v cyklu nelze vyhodnotit jako první. Pokud závislostní graf nemá žádné kruhové závislosti, vytvoří směrovaný acyklický graf a pořadí hodnocení lze najít topologickým tříděním . Většina topologických třídicích algoritmů je také schopna detekovat cykly ve svých vstupech; může však být žádoucí provádět detekci cyklu odděleně od topologického třídění, aby bylo zajištěno vhodné zpracování detekovaných cyklů.

Předpokládejme jednoduchou kalkulačku dříve. Systém rovnic " A = B ; B = D + C ; C = D + A ; D = 12;" obsahuje některá kruhová závislost tvořený A , B a C , jak B, musí být vyhodnocen před A , C , musí být vyhodnocen před B a musí být vyhodnocen před C .

Odvození hodnotící objednávky

Správné vyhodnocení pořadí je číslování objektů, které tvoří uzlové body na grafu závislosti, takže následující rovnice platí: s . To znamená, že pokud číslování objednává dva prvky a tak, že budou vyhodnoceny dříve , pak nesmí záviset na .

Může existovat více než jedna správná objednávka hodnocení. Ve skutečnosti je správné číslování topologické pořadí a jakékoli topologické pořadí je správné číslování. Jakýkoli algoritmus, který odvozuje správné topologické pořadí, tedy odvozuje správné pořadí vyhodnocení.

Předpokládejme ještě jednou jednoduchou kalkulačku shora. Vzhledem k systému rovnic „ A = B + C ; B = 5+ D ; C = 4; D = 2;“ by bylo správné pořadí vyhodnocení ( D , C , B , A ). ( C , D , B , A ) je však také správné pořadí hodnocení.

Monoidní struktura

Acyklický graf závislosti odpovídá stopě stopového monoidu takto:

  • Funkce označí každý vrchol symbolem z abecedy
  • Existuje hrana nebo pokud a pouze pokud je v relaci závislosti .
  • Dva grafy se považují za rovnocenné, pokud si jejich popisky a okraje odpovídají.

Řetězec skládající se ze štítků vrcholů seřazených podle správného pořadí vyhodnocení odpovídá řetězci stopy.

Monoidal operace trvá nesouvislý unii z vrcholů sad dva grafy, zachovává stávající hrany v každém grafu, a čerpá nové hrany z první do druhé, kde je vztah závislost umožňuje,

Identita je prázdný graf.

Příklady

Grafy závislosti se používají v:

  • Automatizovaní instalátoři softwaru : Procházejí graf a hledají softwarové balíčky, které jsou vyžadovány, ale ještě nejsou nainstalovány. Závislost je dána spojením balíků.
  • Softwarové skripty jako Unix Make , Node npm install, php composer, Twitter bower install nebo Apache Ant . Potřebují vědět, jaké soubory se změnily, takže je třeba překompilovat pouze správné soubory.
  • V technologii kompilátoru a implementaci formálního jazyka :
    • Plánování instrukcí : Závislostní grafy se počítají pro operandy montážních nebo přechodných instrukcí a používají se k určení optimálního pořadí instrukcí.
    • Odstranění mrtvého kódu : Pokud na straně proměnné nezávisí žádná vedlejší operace, je tato proměnná považována za mrtvou a může být odstraněna.
  • Dynamická analýza grafů: GraphBolt a KickStarter zachycují závislosti hodnot pro přírůstkové výpočty při změně struktury grafu.
  • Tabulkové kalkulačky. Musí odvodit správné pořadí výpočtu podobné tomu v příkladu použitém v tomto článku.
  • Standardy webových formulářů, jako je XForms, aby věděly, jaké vizuální prvky se mají aktualizovat, pokud se data v modelu změní.
  • Videohry, zejména logické a dobrodružné videohry , které jsou často koncipovány jako graf závislých vztahů mezi akcemi ve hře.

Závislostní grafy jsou jedním aspektem:

Viz také

Reference