NPでのスーパーマリオフロー?


15

max-flow問題の古典的な拡張の1つは、「max-flow over time」問題です。2つのノードがソースとシンクとして区別される有向グラフが与えられます。 -単位時間と遅延。時間範囲も与えられます。目標は、時間ソースからシンクへの材料の最大量を取得する経時的なフローを計算することです。最大値のフローは、min-cost max-flowへの巧妙な古典的還元により、多項式時間で計算できます。TTT

エッジに3番目の「寿命」パラメータがあるこのモデルの拡張に興味があります。アークに寿命があり、がアークを通して正のフローが送信される最も早い時間である場合、時間アークを破壊します。これは、スーパーマリオブラザーズの踏み台のように考えることができます。踏みつけた直後に落下するか破壊されるか、電源を入れると電源を切ることのできないエッジの電源に必要なバッテリーと考えることができます。 。(編集 :)決定問題は、フロー値の下限も与えられた場合、時間範囲の上限とフロー値の下限の両方を満たすフローをスケジュールできるかどうかです。TのT + ℓのBtt+B

これまでのところ、この問題はNP困難であることがわかります(3パーティション経由)。しかし、私はそれがNPにあるかどうか実際にはわかりません:ソリューションをコンパクトに表現する方法の保証はありますか?古典的なバージョンでは、この問題を回避するために、いくつかの特別なタイプの最適なフローが使用されます。

注:上記のモデルは、ノードでのフローの備蓄を許可または禁止する場合があり、離散時間モデルまたは連続モデルを持つ場合があるため、少し仕様が不十分です。これらのモデルのいずれかの問題を解決することは素晴らしいことです。


1
私は上手く理解できていない気がします。特定のフロープランをコンパクトに表現し、総フローがpoly timeで少なくともFであることを検証することに問題があるのはなぜですか?
スレシュVenkatさん

3
出力が時限フローである最適化問題の出力が、ポリタイムで最適性をチェックできることを証明する方法を考えているかもしれません。ただし、yes / no回答のみの決定問題はNPにあり、フローのような関数を最大化する最適化問題は、通常、入力に下限値Bを追加することにより決定問題になり、決定問題は「少なくともBの値を持つソリューションはありますか?」
andy_fingerhut

Suresh:離散モデルでは、フロープランを表現する自然な方法は各アークに対して整数を使用しますが、これは多項式ではなく、入力サイズの擬似多項式にすぎません。同様に、連続モデルでは、これを圧縮する方法がわかりません。T
-daveagp

Andy:あなたは正しいです。形式的に言えば、時間の範囲に加えて値の下限を設定することにより、これを決定問題として述べる方が良いでしょう。
daveagp

1
@daveagp:たとえば、QBFを問題に減らすなど、PSPACEの難しさを試しましたか?
岡本芳雄

回答:


13

久しぶりですが、この問題はPにあると確信しています。

1995年にこれについて博士論文を書きました。CornellCS deptに提出されたBruce Hoppeによる「Efficient Dynamic Network flow algorithm」を参照してください。オンラインhttp://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

「モータルエッジ」については、第8章「拡張機能」セクション8.1を参照してください。


3
「それは暗い嵐の夜だったジャックは彼の小屋に動かを築く- 。怒っカーニバルに乗るような彼の腸内で旋回された彼の胃を除いて、動かない...」(著者は実用的なアプリケーションを説明しxiiiページ)。
ニールヤング

ニール!:) BTW daveagpは、決定の質問に答える「フロー」を保存するために疑似多項式空間が必要であることについて良い点を示しています。最適なフローを見つけるだけでなく、Pのフローが私の論文の第1章から第7章であることを表す方法
ブルースホッペ

優秀な!私は最終的にこれをすべて読みました。フローが最初にエッジに達すると、開始時刻と終了時刻が結果として得られるネットワークの実行可能性がP(ホールドオーバーが許可されていると仮定)であることが判明したため、元の問題はNPにあります:多項式サイズの証明書には開始時刻がリストされています各エッジ。したがって、スーパーマリオはNPを完全に流れます。ランダムな質問:ホールドオーバーの禁止は何かを変えますか?適切な近似アルゴリズムはありますか?
daveagp

2

編集:答えは間違っています。パスフローが時刻sで開始し、時刻tで終了し、エッジeを通過すると、この期間エッジeをブロックするという(愚かな)暗黙の仮定を立てました。ただし、これは正しくありません。見る *。

注:おそらく、このアプローチは不必要に複雑または不正確です。私は検証しようとしましたが、慎重に書き留めましたが、膨大な時間を費やしませんでした。

「備蓄」が許可されていないと仮定すると、たとえば、フローをすぐに転送する必要があります。ましょ表すエッジの数及びN入力長。私はそれを考慮しなかったので、連続時間または離散時間を指定しませんでした。断続的な思考のために機能するはずです。mN

その後、ソースからシンクへの「パスフロー」のセットとしてソリューションを説明できます。パスフローは四重である以下からなる:単純なパスPソースからシンクへ; パスフローsの開始時間。パスaを通る流量。スループット・レートRPsarPsar

解決策はパスフローの集合によって与えられます。これらのパスフローによって与えられた解が|の時間多項式で正しいかどうかを検証できますF | およびNF|F|N

  • すべてのエッジについてと時間の瞬間トン、すべてのパス-流れが上に行くのスループット・レートまで追加の電子時間でトンを。すべてのパスフローには開始時刻と終了時刻があるため、パスフローが開始または終了する時点のみを考慮する必要があります(これらの時点の間、エッジeを超えるパスフローに関しては何も変化しません)。etete
  • すべてのパスフローについて、すべてのフローが時間前にシンクに到着するかどうかを確認できます。T
  • すべてのエッジについて、パスフローが破壊された後に通過するかどうかを確認できます。
  • フロー下限は、フローパスのフロー量を合計することで簡単に確認できます。B

ここで、パスフローの数が多項式であることを示す必要があります。N

特定のソリューションに対して、フローがエッジを通過した時間とエッジが破壊された時間を判断できます。これを同等の解決策で問題に変換します。各エッジが使用できる場合と使用できない場合-開始時刻と終了時刻にそれぞれの境界に強い境界があります。してみましょうはこれらすべての時間のセットを示します。{t1tk}

いくつかの非コンパクトなソリューションと(最初は)空のパスフローセットを検討してください。アイデアは、非コンパクトなソリューションでパスフローを繰り返し見つけ、それを削除して、パスフローのセットに保存するというものです。

間その開始と終了をパスは、フロー検索およびTのJI < Jが、いずれかの間で終わらないのt PTのqは、このようなこと[ トンのPTのQ ] [ T ITのJ ]。LET F 、I Jは、一連の間の経路は、流れて示したT JおよびTのjを上記のような特性を有します。ttj<jtptq[tptq][ttj]Fjtjtj

よりも短い間隔のすべてのパスフローを既に削除したと仮定します。[ t it j ]で開始および終了するパスフローを貪欲に見つけます。見つかったら、このフローをソリューションから削除し、それに応じて頂点のスループットレートを調整し、ソースからシンクに送信されるフローの量も調整します。このパスフローでは、スループットを最大化します。これは、少なくとも1つのエッジが最大スループットレートに達しているか、このパスフローを削除した後、このエッジを超えるフローがなくなったことを意味します。これは期間[ t i + 1t j[j][ttj]。どちらの場合も、このエッジを通るフローはこれ以上ありませんF s t | M[t+1tj1]|Fst|m

(*)なぜ以前の主張が真実なのですか?さて、における他のすべてのパスフローt jt i + 1の前に始まり、t j 1の後に終わります。したがって、特定のエッジを使用する時間内にオーバーラップする必要があります。パスフローのスループットが最大化されるため、タイトなエッジが必要です。Fttjt+1tj1

j[k]|Fj|cm3c


私には、分解限界に欠陥があるように思えるので、例示的な反例を挙げようとします。ネットワークが容量100、遅延0、寿命100の1つのソース->シンクエッジだけであると仮定します。次に、このフロースケジュールを検討します。[1、2)で2のレートで、[99、100)でレート100まで。分解には、100以上のパスフローが必要です。これは、私が理解しているとおり、あなたの主張と矛盾しています。フォードとフルカーソンは、任意のソリューションではなく、特定のタイプの最適なソリューションを検討することで、従来のソリューション(寿命なし)でこの障害を回避していることに言及する必要があります。
-daveagp

これはおそらくフローの「寿命」を最大化することでも回避できますが、プルーフには別の問題があります。明確にするために編集しました。
ルーブ

1

私がそれを理解する方法では、アークを介してフローが送信され始める瞬間を表す、アークごとに1つの数値のみを格納する必要があります。それは、その後、アークが使用不能にされると仮定しています。それ以外の場合、アークが使用を停止した後に再び使用できる場合は、時間の経過とともに最大フローのソリューションに任意に近いソリューションが必要です(フローが任意の短い時間送信されなくなり、再びポンプが開始される可能性があるため) )。


私はあなたの主張が何であるか理解できません。
伊藤剛

これは正しいとは思いません。たとえば、3つのノード、ソースs、ターミナルt、および3つのアークa1 =(s、v)、a2 =(s、v)、a3 =(v、t)を持つ3つのノードを持つネットワークを想像してください。アークの容量はすべて1であり、移動時間はa1およびa3では0、a2では100に設定されます。寿命は、a1の場合は1、a2およびa3の場合は1000です。次に、時間0で、a1とa3を介してsからtに1単位のフローを送信し、a2を介して1単位のフローの送信を開始できます。時間1から99の間、a1はなくなったため、a3はフローを伝送しませんが、時間100では、a2を通るフローがvに到達し、a3が再び使用されます。
岡本芳雄

私が正しく理解していれば、エッジの誕生/死時間が修正されると、残りの問題は古典的なmax-flow over timeアプローチを使用して解決できると部分的に主張しますが、これがどのようであるかはわかりません。
-daveagp

@Yoshio:その場合、a2に沿って1単位のフローをすぐに送信し始めるのではなく、任意の短い時間a1をもう一度使用できるようになった後、フローの送信を完全に停止すると、より良いソリューションが得られます。
レアンドロM.

@デイブ:いいえ、それは私が主張するものではありません。私が言っているのは、各アークが有限回数しか使用できないか、問題の解決策が任意の最大フロー時間の解決策を任意に近似する必要があるということです。要するに、問題の定義の詳細が心配です。
レアンドロM.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.