依存関係グラフ

数学コンピュータサイエンスデジタルエレクトロニクスにおいて依存グラフとは、複数のオブジェクト間の依存関係を表す有向グラフです。依存グラフから、与えられた依存関係を尊重する評価順序、あるいは評価順序が存在しないことを導出することができます。

意味

AはBCに依存しBはDに依存する

オブジェクトのセットと、依存関係「a はbに依存」(「a は最初にbを評価する必要がある」) をモデル化し推移関係が与えられた場合、依存関係グラフはR推移的縮小を持つグラフになります

たとえば、簡単な計算機があるとします。この計算機は、変数に定数値を割り当て、2 つの変数の合計を 3 番目の変数に割り当てます。「A = B + C ; B = 5+ D ; C =4; D =2;」のような方程式がいくつかある場合、および となります。この関係を直接導くことができます。A はBCに依存します。これは、2 つの変数を加算できるのは、両方の変数の値を知っている場合のみであるためです。したがって、 A を計算する前に、 Bを計算する必要があります。B を計算するには D に依存しているため AD計算してから計算する必要があります(これが上記の推移的性質です)。一方、CDの値は数値リテラルであるため、すぐにわかります。

不可能な評価を認識する

依存関係グラフにおいて、依存関係の循環(循環依存関係とも呼ばれる)は、循環内のどのオブジェクトも最初に評価されないため、有効な評価順序が存在しない状況につながります。依存関係グラフに循環依存関係がない場合、それは有向非巡回グラフを形成し、位相ソートによって評価順序を見つけることができます。ほとんどの位相ソートアルゴリズムは、入力内の循環を検出することもできますが、検出された循環を適切に処理するために、位相ソートとは別に循環検出を実行することが望ましい場合があります。

先ほどの単純な計算機を例に挙げましょう。方程式系「A = B ; B = D + C ; C = D + A ; D =12; 」には、 ABCによって形成される循環依存関係が含まれています。つまり、 BはAより前に評価されなければならずC はBより前に評価されなければならずA はCより前に評価されなければなりません

評価順序の導出

正しい評価順序とは、依存グラフのノードを形成するオブジェクトに、次の式が成り立つように番号を付けることです。。つまり、番号付けによって2つの要素と が順序付けられの前に評価される場合、 はに依存してはなりません

正しい評価順序は複数存在する可能性があります。実際、正しい番号付けは位相順序であり、任意の位相順序は正しい番号付けです。したがって、正しい位相順序を導出するアルゴリズムは、正しい評価順序も導出します。

先ほどの簡単な計算機をもう一度考えてみましょう。「A = B + C ; B = 5+ D ; C =4; D =2;」という方程式系を考えると、正しい評価順序は ( D , C , B , A )です。しかし、 ( C , D , B , A ) も正しい評価順序です。

モノイド構造

非巡回依存グラフは次のようにトレースモノイドのトレースに対応する: [1] : 12 

  • 関数は各頂点にアルファベットの記号をラベル付けする
  • 依存関係にある場合にのみ、エッジまたはが存在します
  • 2 つのグラフのラベルとエッジが対応している場合、それらのグラフは等しいとみなされます。

すると、正しい評価順序で並べられた頂点ラベルで構成される文字列が、トレースの文字列に対応します。

モノイド演算は、2つのグラフの頂点集合の互いに素な和集合を取り、各グラフの既存の辺を保存し、依存関係が許す限り、最初のグラフから2番目のグラフへ新しい辺を描く。[ 1] : 14 

アイデンティティは空のグラフです。

依存関係グラフは次の場合に使用されます。

依存関係グラフは次の 1 つの側面です。

参照

参考文献

  1. ^ ab Mazurkiewicz, Antoni (1995). 「トレース理論入門」(PDF) . Rozenberg, G.; Diekert, V. (編). 『トレースの書』 シンガポール: World Scientific. ISBN 981-02-2058-8. 2021年4月18日閲覧
  2. ^ Mugilan Mariappan; Keval Vora (2019). 「GraphBolt: ストリーミンググラフの依存関係駆動型同期処理」.ヨーロッパコンピュータシステム会議 (EuroSys'19) . pp. 25:1–25:16. doi :10.1145/3302424.3303974.
  3. ^ Keval Vora、Rajiv Gupta、Guoqing Xu (2017). 「KickStarter: トリム近似によるストリーミンググラフの高速かつ正確な計算」.プログラミング言語とオペレーティングシステムのアーキテクチャサポートに関する国際会議 (ASPLOS'17) . pp.  237– 251. doi : 10.1145/3093337.3037748 .
  4. ^ ギルバート、ロン. 「パズルの依存関係チャート」. Grumpy Gamer . 2020年1月11日閲覧

さらに読む

  • Balmas, Francoise (2001)依存関係グラフの表示:階層的アプローチ Archived 2012-02-11 at the Wayback Machine , [1] wcre, p. 261, 第8回リバースエンジニアリング会議 (WCRE'01)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Dependency_graph&oldid=1321487336"