1

push relabel を使用してギャップヒューリスティックを実装する方法がわかりません。Wiki では次のように説明されています。

「ギャップ再ラベル付けヒューリスティックでは、サイズ n の配列 A を維持し、A[i] に各ラベルのノード数 (n まで) を保持します。A[d] = 0 のようなラベル d が見つかった場合、ラベル > d を持つすべてのノードは、ラベル n に再ラベル付けされます。"

ギャップヒューリスティックを使用します。ノードの高さ (u) = k がないような「k」がある場合、ソースを除くすべてのノードに対して高さ (u) = max(高さ (u)、高さ (ソース) +1) を設定できます。 (u) >k. これは、そのような 'k' がグラフの最小カットを表し、ノード S={u where height(u) > k} から T={v, where height(v) のノードにフローが移動しないためです。 0. しかし、その後は height(u) > height(v)+1 となり、height(u) > k および height(v) < k と矛盾します。

wikiのサンプルコードに示されているように、FIFOプッシュリラベルにギャップヒューリスティックを追加する方法を疑似コードで説明してもらえますか?

ありがとう、ヴィンス

4

1 に答える 1

3

少し遅れているかもしれませんが、スタンフォード大学のノートブックへのリンクを次に示します。ここでは、C のギャップ ヒューリスティックを使用して、プッシュ再ラベル付けの最大フローを見つけることができます。お役に立てば幸いです。

http://www.stanford.edu/~listzt90/acm/notebook.html#file3

于 2013-08-16T13:36:13.703 に答える