Вы можете решить эту проблему, сведя ее к задаче о максимальном потоке в правильно построенном графике.Идея заключается в следующем:
- Разбить каждый узел v на графике на узлы: v in и v out .
- Для каждого узла v добавьте ребро емкости один от v в до v out .
- Замените каждое другое ребро (u, v) в графе накрай от u out до v in емкости 1.
- Добавить новый выделенный целевой узел t.
- Для каждого целевого узлаv, добавьте ребро из v в к t с емкостью 1.
- Найдите максимальный поток от s out до t.Значение потока - это число узловых непересекающихся путей.
Идея этой конструкции заключается в следующем.Любой путь потока от начального узла s к узлу назначения t должен иметь емкость один, поскольку все ребра имеют емкость один.Поскольку все емкости являются интегральными, существует интегральный максимальный поток.Никакие два пути потока не могут проходить через один и тот же промежуточный узел, потому что при прохождении через узел в графе путь потока должен пересекать границу от v в до v out , а пропускная способностьздесь был ограничен одним.Кроме того, этот путь потока должен достигать t, заканчиваясь одним из трех специальных узлов, которые вы определили, а затем следуя за ребром от этого узла к t.Таким образом, каждый путь потока представляет собой непересекающийся путь узла от исходного узла s к одному из трех узлов назначения.Соответственно, вычисление максимального потока здесь соответствует нахождению максимального числа непересекающихся узлов путей, которые вы можете выбрать из s для любого из трех пунктов назначения.
Надеюсь, это поможет!