トポロジカルソートの手順、その正確さの証明


7

定義:状態機械の保存された不変条件は、状態に関する述語、が状態に対して真であり、が何らかの状態である場合、は次のようになります。 。PP(q)qqrrP(r)

定義:折れ線グラフは、エッジがすべて1つのパス上にあるグラフです。

定義:正式には、状態機械は、セットの要素が「状態」と呼ばれ、関係が遷移関係と呼ばれ、遷移関係のグラフの矢印がトランジションと呼ばれます。状態から状態への遷移は、と記述されます。qrqr

DAG:有向アシリックグラフ

次の手順は、任意の有向グラフ適用できます。G

  1. サイクルにあるエッジを削除します。
  2. 削除エッジ頂点からパスがある場合に頂点には含まれていません。<uv>uv<uv>
  3. 頂点と頂点間にどちらの方向にもパスがない場合は、エッジを追加します。<uv>uv

該当するものがなくなるまで、これらの操作を繰り返します。

この手順は、状態マシンとしてモデル化できます。開始状態はであり、状態はすべてと同じ頂点を持つ可能な有向グラフです。GG

(b)プロシージャがダイグラフで終了する場合、はと同じ頂点を持つ折れ線グラフであることを証明します。HHG

ヒント:が折れ線グラフでない場合、何らかの操作が適用可能でなければならないことを示します。H

(c) DAGであることが手順の保存された不変であることを証明します。

(d)そのことを証明するG はDAGであり、手順が終了すると、最終的な折れ線グラフのウォーク関係はトポロジの種類になります。 G

ヒント:述語が P(u,v)::からの有向パスがあります uv 2つの頂点について、手順の保存された不変式です u, v DAGの。

(e)そのことを証明するG が有限の場合、プロシージャは終了します。

ヒント:しましょう s サイクル数 e エッジの数であり、 p頂点の間に(いずれかの方向に)有向パスを持つ頂点のペアの数になります。ご了承くださいpn2 どこ n の頂点の数です G。係数を見つけるa,b,c as + bp + e + cは非負の整数値であり、各遷移で減少します。

私の問題:

問題に悩まされました d そして e しかし、他の問題の解決策も歓迎します。

問題で d私はヒントとそれがなぜ与えられるのか、それがどのように役立つのか理解できませんでした

証明するための私の方法で d、私は与えられた手順が常に開始グラフ上のエッジに関連付けられている頂点の順序を維持することを示すことを試みています G。したがって、頂点の「優先順位」が維持されるため、折れ線グラフは自動的にトポロジカルソートになります。

ただし、手続き番号 3問題があるのですが、それが優先順位を保持していることをどのように示すのですか?

回答:


1

b。操作として1 実行できません、 HDAGである必要があります。のトポロジーの種類を検討してくださいH。なので3 実行できない場合、 u 先行する v トポロジカルソートでは、からのパスがあります uv。ソートの最初の頂点から開始し、複数の出力エッジを持つ頂点が見つかるまで前進し続けます(各頂点に出力が1つしかない場合、それは線グラフです)。しましょうu にエッジがあります v そして w そしてましょう v 先行する w。次に、からのパスがありますvw、からのパスを与える uw それは含まれていません uw、操作としての矛盾 2 ここで実行できます。

c。エッジを削除してもDAGプロパティは変更されないため、確認する必要があるのは3。エッジを追加したときにのみサイクルが形成されますuv、からのパスがあったとき vu既に。なので3 このようなエッジは追加されませんが、DAGは維持されます。

d。しましょうH から得られる G単一の操作で。トポロジカルな種類のH も有効です G(逆は真実である必要はないことに注意してください)。このためには、uvG、次にからのパスがあります uvHあまりにも。一部のパスは、エッジを削除するときにのみ壊れることがあります。明らかに操作3ここでは問題は発生しません。また、2、それらのエッジのみを削除します uv からのパスがすでにある場所 uv。だからからの任意のパスwz、そのエッジを含み、そのエッジをからのパスで置き換えることができます uv、からのパスを維持 wzH。そしてG DAGなので、 1 決して起こらない。

e。まず、それぞれの方法を観察しますse そして p各操作で変更します。操作あり1s 少なくとも減少する 1e 減少する 1 そして p 近くに減少することができます n2(ほとんどすべてのパスが壊れている可能性があります)。と2s 減少するかもしれない 1 (必要はありません)、 e 減少する 1 そして p変更されていません。と3s 変わらない、 e 増加する 1 そして p 少なくとも増加する 1。折れ線グラフに向かっているときに、エッジの数を減らしようとしていることに注意してください(e)、サイクルを削除します(s)増加しながら p。だからas+bp+de+c、 私たちは期待する a そして d ポジティブであることと b否定的です。最悪のケースの変化s,e,p 各操作について

sep1.11n22.0103.011

なので s 決して増加しない、私たちは作ることができます a私たちが好きなだけ大きい。スケーリングできるのでa,b,d 定数により、 d=1。これらの観察により、1つの可能な値のセットを取得できます。a,b,d なので 2n22 そして 1それぞれ。そしてピックc 折れ線グラフの値の負として。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.