定義:を自己ループのないDAGとし、およびをグラフとします。
入力:。出力:リレーショナル構成リレーショナル構成 in。
- ケース1:。およびに対する2つのforループ:ランタイム。
- ケース2:
- グラフを描く:(。エッジをから黒、赤と呼びます。
- トポロジカルにソートします(Kahn:)。最初のレベルをにすると、エッジはレベルから高いレベルに移動します。
- このグラフを2回描画します。
- 最初のコピーで、偶数レベルで始まるすべての赤いエッジと奇数レベルで始まるすべての黒いエッジを削除します:。
- 2番目のコピーでは、「黒の偶数」と「赤の奇数」をすべて削除します:。
- 最初のコピーの場合:
- レベルすべてのノード
- レベルすべてのノード
- レポートエッジ(実行時)。
- 2番目のコピーの場合: " " についても同じです。
- 報告されたノードを結合し、重複する を破棄します(グラフ表現でこれが可能であることを願っています)。
いくつかの人が私のアルゴリズムを調べて、
- 合ってます
- それはである
正しい場合、私のアルゴリズムはすでに「存在」していますか?そうでない場合、代替案を提供できますか?私は最初の答えを受け入れますが、他にチェックしてくれる人がいる場合は賛成票を投じます。
編集:ステップ6はあるようです。これが本当ではないことを望みます。動作しているアルゴリズムはありますか?