グラフの負の重みエッジの重要性は何ですか?


15

私は動的なプログラミング演習をしていて、Floyd-Warshallアルゴリズムを見つけました。どうやら、負の重みのエッジを持つことができますが、負のサイクルがないグラフのすべてのペアの最短パスを見つけます。

だから、負の重みのエッジの現実世界の重要性は何だろうか?わかりやすい英語の説明が役立つでしょう。


3
エッジの重みは、実世界のすべてを表すことができます。たとえば、ある口座から別の口座に送金される金額は正または負になります。可能な限り低額のお金(最短パス)を失うと、負の重みを考慮することができます。たとえば、いくつかのサンプルを含むこの本の章を参照してください:informit.com/articles/article.aspx?p

a ----(2)----> b ----(-2)----> cおよびa -----(1)----> cからaからc、合計コストが0なのでパスabcを選択する必要がありますか?最短経路だからです。私が間違っているなら私を修正してください!
c2h5oh

たとえば、ジョブを行って状態aからbに行く場合2 ドルかかると仮定します(例:書籍の購入は2 ドルかかります)。その後、何らかのプロジェクトを行うことができます(2 $を獲得し、コスト関数は- 2)その後、目的を達成した(専門職またはc)場合、合計費用は0であり、あなたは州にいます。a-(+ 2)-> b-(-2)-> c:+2-2 = 0(a:初心者からc:プロフェッショナルまでの合計費用)。e(abab2$$$

だから私の仮定は正しいです、もう1つのエッジを移動する必要がある場合でも、ac.amではなくabcを選択しますか?
c2h5oh

はい、正確に、あなたの仮定は正しいです。(私があなたに提供したリンクのように)もっと読んだり、議論によって自分の質問に答えたり、それを受け入れられた答えとしてマークしたりできることに注意してください。

回答:


16

Saeed Amiriはすでにコメントで優れた例を示しています。エッジの重みは、実世界のあらゆるもの、たとえば、あるアカウントから別のアカウントに送金される金額を表すことができます。金額は正でも負でもかまいません。たとえば、グラフのaからbに移動してできるだけ少ないお金(最短パス)を失いたい場合、負の重みを考慮することができます。詳細については、この本の章を参照してください。ab

それとは別に、さらに多くのアプリケーションがあります。負の重みは、モデルの種類によって異なります。たとえば、このグラフを考えます

ここに画像の説明を入力してください

  • 化学:重量は、化学反応中に発生する熱を表すために使用できます。(モード:の化合物は、エッジがの化合物場合:Vは、から)(「化学的に還元」を得ることができるUこのグラフでは:あなたが生じる。4変換するkJのをS -及び2変換するkJのにTあなたが必要。5 tからsを取得するkJ 。eあなたはvvあなたは4sa2at5st

  • 実生活:雇用主をからtに運転するために給料をもらっているがabの間で支払うドライバーを考えてみてください(家と職場の間を旅行するなど)。stab

  • ゲーム:お金のためにじゃんけんをするとします。ノード:じゃんけん。エッジ:任意の関係(クリーク)。ウェイト:賭け。このグラフでは:(忘れ)、ここで、sはビート、ビートT及びTビートS、及び、4,2を獲得-5それぞれ。bsaatts


こんにちは、答えてくれてありがとう。誰かがじゃんけんの例を説明できますか?どのようにしてそれらの重み4、2、-5を思いついたのですか?
Saurabh Goyal氏

3

私は化学の男ではありませんが、それでもこの例は、プロセッサ、ネットワーク理論、および関連するものを考えるのに役立つと思います。

化学反応における分子の振る舞いをシミュレートするグラフを考えてください。すなわち、反応中に取ることができる経路と重量は遷移で吸収または放出されるエネルギーを表すため、反応からエネルギーが必要な場合は、+ ve重量と吸収で放出エネルギーを表します-veを使用したエネルギー。


1

ここに画像の説明を入力してください

負のエッジは、単に負の重みを持つエッジです。グラフとそのエッジが参照しているものに関係するあらゆるコンテキストにある可能性があります。たとえば、上のグラフのエッジCDは負のエッジです。Floyd-Warshallは、可能であればグラフのすべてのペア間の重みを最小化することで機能します。したがって、負の重みについては、正の重みエッジに対して行うのと同じように、単純に計算を実行できます。

問題は負のサイクルがある場合に発生します。上記のグラフをご覧ください。そして、質問を自問してください-AとEの間の最短経路は何ですか?最初はABCEのコストが6(2 + 1 + 3)のように感じるかもしれません。しかし、実際には、さらに詳しく見ると、負のサイクル、つまりBCDが観察されます。BCDの重みは1 +(-4)+2 =(-1)です。AからEに移動する間、BCD内をサイクリングし続けることで、毎回1つずつコストを削減できます。同様に、パスA(BCD)BCEのコストは5(2 +(-1)+ 1 + 3)です。サイクルを無限に繰り返すと、毎回1つずつコストが削減されます。AとEの間の負の無限最短経路を達成できました。

この問題は、グラフ内の負のサイクルで明らかです。したがって、負のサイクルが存在する場合は常に、最小重みが定義されていないか、負の無限大であるため、そのような場合、Floyd-Warshallは機能しません。

さらに、グラフに負のサイクルがあるかどうかを検出し、それ以外の場合は2つのノード間の最短パスを返すBellman-Fordアルゴリズムを調べてください。


4
これで質問に答えられるとは思わない。問題は、「なぜ負のサイクルが問題なのか」ではなく、「実生活で負の重みを持つエッジを持つ理由」です。
ジュホ

0

たとえば、エッジijの重みw(i、j)が頂点iから頂点jに行くコストであるロジスティックネットワークを想像してください。製品を輸送するために他の会社とビジネス契約を結んだ場合、w(i、j)はコストではなく利益になるため、この重量を負のコストとして解釈できます。


-2

地図上の渋滞:

重みをエッジに関連付けるもう1つの実世界の例は、重みがマップ内の交通状況を表す(より否定的で、好ましくない)場合です。この表現を使用して、最適な距離を計算できます。

「重み」の比betweenを実際に使用して、グラフの任意の2点間の正/負の値を表すことができます。


サイトへようこそ!これは非常に良い例ではないと思います。交通渋滞の場合、道路に沿って移動するのにかかる時間までにマップ上のエッジに重みを付ける方が自然であるため、渋滞が高いと重みが大きくなります。結局のところ、目的は通常、目的地に迅速に到達することであり、通常は、より長く混雑していない道路よりも、短いが混雑した道路を取ることを好むでしょう。また、通常、メトリックとして最小コストを使用します。これは、私が提案した重み付けではうまく機能しますが、あなたが提案した重み付けでは非常にひどく機能します。
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.