重み付きグラフで、エッジの重みとしてゼロを使用できますか?


60

ランダムグラフを生成するスクリプトを作成しようとしていますが、重み付きグラフのエッジが0の値を持つ可能性があるかどうかを知る必要があります。

実際、0をエッジの重みとして使用できることは理にかなっていますが、ここ数日でグラフを操作しており、その例を見たことはありません。

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


28
負の値が「許可」されている場合、なぜゼロではないのですか?:)
デレク朕會功夫

5
簡単な例として、あるノードから別のノードに移動するときに正の重みが正味の燃料消費を表す場合、負の重みは正味の燃料補給を表すことができます。ゼロウェイトエッジは、燃料の補給が燃料補給によって正確に補償される場所です。
JW

1
@DavidRicherbyここでの本当の疑問は、たとえば「重みゼロエッジが存在する場合にアルゴリズムXが正しいか」ということです。それ以外の場合、コンテキストは何ですか?答えは、詳細に応じて、yesまたはnoのいずれかです。「配列にゼロを含めることができますか?」などの質問も同様に意味があります。
ジュホ

1
@Juho:わかりました。数値が負の値になる可能性があるかどうかを尋ねるようなものです。あなたにはそれが文脈に依存していることは明らかであるように見えますが、負の数が現れるまで人々には明らかではありませんでした。ゼロであっても明らかではありませんでした。
Mehrdad

1
何をしたいのかにもよりますが、あなたの体重は実数でさえないかもしれません。たとえば、グラフがAC回路を表す場合、重みはフェーザーである可能性があり、それらは複素数です。
user2357112

回答:


165

誰に許可されていますか?できることとできないことを決定する中央グラフ管理はありません。定義が何であるかが明確である限り、あなたにとって都合の良い方法でオブジェクトを定義できます。重みのないエッジが便利な場合は、それらを使用します。読者にそれがあなたがしていることを知っていることを確認してください。

通常、ウェイトがゼロのエッジが表示されない理由は、ほとんどのコンテキストで、ウェイトがゼロのエッジはエッジがないこととまったく同じだからです。たとえば、グラフが国とその国間で行われた取引量を表す場合、ゼロウェイトエッジは取引なしを意味します。これはエッジがまったくないことと同じです。グラフが距離を表す場合、ゼロウェイトエッジは互いに距離ゼロの2つの場所に対応します。つまり、実際には同じ場所になるため、両方を同じ頂点で表す必要があります。ただし、他のコンテキストでは、ウェイトがゼロのエッジが意味をなす場合があります。たとえば、グラフが道路網を表し、エッジの重みが交通量を表す場合、誰も使用していない道路(重みのないエッジ)とまったく道路がない(エッジなし)の間に大きな違いがあります。


1
多くのグラフアルゴリズムは、重みが負のグラフで機能するかどうかを明示的に指定することに注意してください。これにより、コンテキストに応じて負の重みも許可されることが明らかになると思います。
Mooingダック

6
@MooingDuck質問のポイントは、アルゴリズムが実際に負の重みで機能するかどうかを実際に言う間、ゼロの重みがめったに言及されないことだと思います。負の重みはゼロよりもはるかに珍しいものではないため、この特定のコンテキストでは、言及する必要があるかどうかはわかりません。
デビッドリチャービー16

13

コンテキストに依存します。一般的には、ゼロのエッジと負の重みも許可されます。場合によっては、エッジの重みが非負または厳密に正であることが必要になる場合があります(たとえば、ダイクストラのアルゴリズムでは重みが非負である必要があります)。


ゼロを禁止する特定のタイプのグラフはありますか?負の値または正の値を許可しますか?
タクセロール

9
「非ゼロエッジ加重グラフ」。
トムヴァンデルザンデン

10
@Taxellool数学オブジェクトは石で設定されていません。使用が許可されているのは、名前が固定されている数学オブジェクトの固定リストではありません。
デビッドリチャービー16

使用するアルゴリズムに依存します。ベルマンフォードはゼロを受け入れますが、ダイクストラでは不要になりました
マヌエルアザー

5

他の回答が指摘しているように、重みがゼロの重み付きグラフを完全に自由に検討(または考慮から除外)できます。

とはいえ、私の経験では、重み付きグラフのほとんどのアプリケーションでの通常の慣習は、重みがゼロのエッジとエッジがないことを区別しないことです。この理由の1つは、通常、重み付きグラフがマルチグラフの一般化として表示され、それが単純なグラフの一般化であることです。

具体的には、マルチグラフは、(単純なグラフとは異なり)同じノードのペア間に複数のエッジを許可するグラフです。単純なグラフでは、ノードのペアは常に0または1のエッジで接続されますが、マルチグラフのノードのペアは0、1、2、3またはそれ以上で接続できます(ただし、常に負ではない整数の数)エッジ。

マルチグラフを一般化してノードのペア間の端数の端数を考慮に入れると、当然、重み付きグラフを検討することになり、任意のマルチグラフで機能する多くのアルゴリズムをそのような重み付きグラフでも機能させることができます。しかし、そのようなアルゴリズムの場合、エッジの「重み」は実際にその多重度を示します。したがって、この解釈を考えると、ノードのペア間で「エッジなし」と「0エッジ」を区別することはできません。両方ともまったく同じことを意味します。

もちろん、定義によると「重み付きグラフは、」本当に各エッジに関連した数とちょうどグラフであり、そしてそれは何かのように体重を解釈することは完全に可能です他のエッジとゼロ・ウェイトなしの間の場合で区別多重度よりも、エッジは本当に意味があるかもしれません。しかし、標準のマルチグラフアルゴリズムをこのような「奇妙に重み付けされたグラフ」に適用しようとしても、エッジの重みの代替(非多重度)解釈に関して意味のある結果を生成することはほとんどありません。


6
重み付きグラフが「通常」表示される方法は、フィールドによって大きく異なります。最短距離を見つけるグラフとして道路網をモデル化するとき、重みは距離を表します。交差点間の複数の道路から始めてから、部分的な道路を導入しません。
adrianN

3
@adrianNこのようなグラフでは、エッジの欠如はゼロではなく無限の関連する値に対応します。
CodesInChaos

0

英国ケンブリッジの道路システムのグラフを考えてみてください。メモはサイクリストと運転手の間で共有されているため、ほとんどのエッジが共有されています。そうすることで、データの維持コストが大幅に削減されます。

エッジの重みを移動時間(秒単位)として定義すると、各エッジには2つの重みがあり、1つは自動車用、もう1つは自転車用です。車は自転車道では許可されないため、一部の重量は無限になります。

次に、互いに非常に近い2つの道路の交差点を検討します。道路の交差点は、車の運転手を止めるいくつかのポストによってのみ鋸歯状になっています。(たとえば、車の運転は左折しかできないが、サイクリストは任意の方向に進むことができる交差道路)。その後、車の運転手から無限の重量とサイクリストの0の重量を持つエッジを取得します。

(明らかに、グラフを前処理して、サイクリストのルーティング用のより単純なグラフを作成してから、最適なルートを決定することができます。)


これがどのように質問に対処するのかわかりません。質問は、重みがゼロのエッジについて尋ねます。あなたの例(ちなみに、Cambridgeに慣れていない人にはまったく意味がないかもしれません)では、各エッジにはすでに2つの重みがあります。さて、あなたが望むように重み付きグラフを定義できる限り、それは問題ありませんが、尋ねられた質問に対処しているようには見えません。また、あなたが説明するすべてのエッジは、サイクリストにとって少なくとも非常に軽い重量を持っているようです。短い距離を移動する場合でも、ゼロ以外の時間が必要です。
デビッドリチャービー16

@ DavidRicherby、1秒未満の時間は記録されないと仮定します。
イアンリングローズ

0

重みを使用して、グラフの2つの明確に異なる側面を表現しようとしているようです。1つ目は、グラフに実際に表現可能な(描画された)エッジがあるかどうか、2つ目は実際の重みです。

お気づきのように、エッジが存在することを示す指標として「非ゼロ」を使用した場合(そして描画またはリストする必要がある場合)、同時に状況が見つかった場合、混乱する状況に陥ります。ここで、ゼロの重みは有効として分類されます。

基本的に、エッジの存在を表す別の方法が必要になります(実際にそれが必要であり、単純に重みのN ^ 2配列を作成することはできませんが、ループについて何をするかを決定する必要があるというtrapに陥ります)バックエッジ...)


これが本当に質問に答えるかどうかはわかりません。問題は、グラフに重みがゼロのエッジがあるかどうかです。あなたの答えは主に、重みがゼロのグラフのデータ構造をどのように実装するかについてです。
デビッドリチャービー16

@DavidRicherby、閉じる; それ(私の答え)は、質問が存在するようになった(または来たかもしれない)理由と方法に関するものでした-XYProplemの問題。多くの場合、それは最初の場所での課題であった理由について合理化することができるということは解決策が正しい答えだけでなく、いくつかの「ファッジ」でどのように見に大いに役立つことができます
フィリップ・オーキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.