Я полагаю, что эта проблема является NP-трудной из-за сокращения от проблемы ненаправленного длинного пути, которая, как известно, является NP-трудной из-за сокращения от проблемы ненаправленной гамильтоновой траектории (см. Sipser: Введение в теорию вычислений , чтобы узнать, почему).
В задаче с неориентированным длинным путем в качестве входных данных нам дается неориентированный граф G = (V, E) вместе с парой узлов u и v и некоторым числом k, и мы хотим определить, существует ли простой (ни один узел не появляется дважды) путь от u до v длиной не менее k. Мы можем преобразовать это в вашу проблему, используя сокращение полиномиального времени следующим образом:
- Для каждого узла v i & in; V, есть устройство в A (назовите его d i ).
- Для каждого ребра {v i , v j } & in; V, в B есть устройство (назовите его e i, j ).
- Для каждого узла v i и ребра {v i , v j } устройство d i совместимо с устройством e i, j .
Это уменьшение имеет полиномиальный размер, так как общее количество генерируемых устройств имеет размер | V | + | E | и количество соединений составляет 2 | E |. Кроме того, мы можем видеть, что существует путь длины k от v i до v j в графе G, если существует цепочка устройств длины 2k + 1 от d i до d j . В частности, если ((v i 1 , v i 2 ), (v i 2 , v i 3 ), ..., (v i k - 1 , v i k )) - это простой путь от v i до v j , затем цепочка d i 1 & rarr; e i 1 , i 2 & rarr; d i 2 & rarr; e i 2 , i 3 & rarr; d i 3 & rarr; ... & rarr; e i k - 1 , i k & rarr; d i k и наоборот. Таким образом, мы имеем полиномиальное сокращение времени от ненаправленной самой длинной проблемы к вам следующим образом:
- В качестве входных данных (G, v i , v j , k) для задачи с ненаправленным длинным путем:
- Создайте множества A и B, как указано выше, с совместимостью C, как указано выше.
- Проверьте, существует ли цепочка устройств длиной 2k + 1 от d i до d j .
- Если это так, выведите «yes»
- Если нет, выведите «no».
Это сокращение решает проблему ненаправленного длинного пути в недетерминированный полиномиальный момент времени с использованием решателя для вашей задачи, поэтому ваша задача NP-трудна. В результате вы не должны ожидать, что найдете алгоритм с полиномиальным временем для вашей задачи; поиск точного ответа может занять экспоненциальное время, если P = NP.
Извините, что дал отрицательный ответ, но я надеюсь, что это поможет!