DFSとBFSがまったく同じ順序でノードを処理するようにするグラフ


11

一部のグラフでは、DFSとBFSの検索アルゴリズムは、ノードが同じノードで開始する場合、まったく同じ順序でノードを処理します。2つの例は、パスであるグラフと星型のグラフ(任意の数の子を持つ深さ木)です。このプロパティを満たすグラフを分類する方法はありますか?1


6
どちらの場合も、特定のノードで開始した場合にのみ機能することに注意してください。たとえば、長いパスで中央ノードを選択すると、DFSとBFSから異なる順序が返されます。
templatetypedef

1
星や道以外に興味深い可能性はありますか?一見すると、兄弟と子の両方を持つ頂点がある場合、すぐに異なるトラバーサルが得られるため、頂点に子がなく(ルートを除いて)、スターが表示されるか、頂点に兄弟がないそしてあなたは道を得る。クリークも機能すると思いますが、星とパスの両方が埋め込まれています。
ルークマシソン2012

2
@LukeMathieson私は一番右の子が別の星の根である星を考えています。それもうまくいくと思います。一般的なステートメントを作成することもできます。ノードv∈Vで検索を開始したときにがプロパティを満たす場合、右端の子= vである星も同様です。さらに良いのは、G 1G 2がプロパティを満たし、ノードv 1G 1で最後に処理され、v 2G 2で検索を開始する場所である場合、ブリッジエッジvG=(V,E)=vG1G2v1G1v2G2は、プロパティを満たすグラフを作成します。v 1 v 2で置き換えることもうまくいくと思います。(v1,v2)v1v2
saadtaame 2012

2
良い点なので、最初のグラフの右葉と2番目のグラフの根を識別することができる、ある種の右再帰的な構成があります。
ルークマシソン

@LukeMathieson 子とvの親の間にエッジを追加することで、ノードに兄弟と子がある場合を修正できるようです。これが私の命題です:与えられたグラフvvのx V、もしY Z W VようにY X Z Y X W EG=(V,E)xVy,z,wV(y,x),(z,y),(x,w)E、次いで(x,z)Eプロパティはに対して保持されます。次のステップは、この命題を証明または反証することです。G
saadtaame 2012

回答:


6

BFSとdfsには特定のノードから開始するルールがあり、各双方向で最初に次数が最も低いノードを訪問するとします。

DFS-BFS

左端の黒いノードから開始し、次に(BFSとDFS)が左端の赤いノードにアクセスし、次に次の黒いノードにアクセスする、というように、より一般的にするには、三角形の間にいくつかのパスを追加するか、スターを追加します三角形を完成させた後...


それはあなたの仮定の下で正しいです。あなたは実際に良い点を上げました。選択肢に直面したときにノードがアジェンダ(スタックまたはキュー)に追加される順序を指定する必要があります。
saadtaame 2012

スケジューリング用のLIFOとFIFOがそれぞれDFSとBFSを生成することを念頭に置いて、このようなスケジューリング(スケジューリングがスタックまたはキューのようではない可能性がある)は深さ優先でも幅優先でもないと主張するかもしれません—場合によっては、どちらか一方に似ている傾向を説明できます。
Niel de Beaudrap 2012

1
スタックまたはキューの観点から実装できると思います。離陸方法(LIFOまたはFIFO)は変更されません。子が追加される順序が変更されます(この場合、最初に最低の次数)。
SamM 2012

@NieldeBeaudrapは実際には、どちらの方法も同じであることを示すための構造にすぎません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.