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プッシュリラベルにギャップヒューリスティックを追加する方法を疑似コードで説明してもらえますか?
ありがとう、ヴィンス