Вычислить максимальный поток для сетей - PullRequest
0 голосов
/ 23 ноября 2010

можем ли мы найти алгоритм, который вычисляет (в линейном времени) максимальный поток для древовидных сетей, то есть для сетей, в которых удаление приемника (и связанных с ним ребер) оставляет дерево.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

Да, просто запустите что-то вроде следующего:

maxf(s) {
  if (s == sink) return s.in_capacity;
  ret = 0;
  foreach(c in children(s)) ret += maxf(c);
  return min(ret, s.in_capacity);
}

Используйте начальный вызов с s равным источнику (мы предполагаем, что источник имеет бесконечность in_capacity).

0 голосов
/ 23 ноября 2010

Форд-Фулкерсон - это O (E * f), где E - это число ребер, а f - максимальный поток, который считается линейным, если в вашей задаче есть постоянная верхняя граница для E или f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...