Я не понимаю, как реализовать эвристику разрыва с помощью push relabel. Вики описала это так:
«В эвристике перемаркировки промежутков мы поддерживаем массив A размера n, содержащий в A[i] количество узлов для каждой метки (до n). Если найдена метка d, такая что A[d] = 0, то все узлы с меткой > d перемаркированы на метку n».
Используйте эвристику разрыва. Если существует «k», такое что ни для одного узла height(u) =k, вы можете установить height(u) = max(height(u), height(source) +1) для всех узлов, кроме источника, для которого высота (у) >к. Это связано с тем, что любое такое «k» представляет собой минимальный разрез в графе, и поток больше не будет идти от узлов S = {u, где высота (u) > k} к узлам в T = {v, где высота (v) 0. Но тогда height(u) > height(v)+1 , что противоречит height(u) > k и height(v) ‹ k.
Может ли кто-нибудь объяснить мне в псевдокоде, как добавить эвристику пробела в push-relabel FIFO, как показано в примере кода вики?
Спасибо, Винс