У меня есть алгоритмическая проблема, когда у меня есть несколько неупорядоченных наборов элементов, и мне нужно найти кратчайший путь (упорядоченная комбинация наборов), который проходит через все эти наборы. Наборов могут быть тысячи.
Например, пусть есть следующие 4 неупорядоченных множества:
A=abcdefg
B=cd
C strong>=abch
D=defi
Размер кратчайшего пути – 11.
Одно из возможных решений:
P=CADB=habcgdeficd
|P|=11
Обратите внимание, что наборы могут иметь общие элементы с соседними наборами на пути!
Также могут быть повторяющиеся элементы, принадлежащие разным наборам (как в приведенном выше примере: 'c' и 'd' дублируются в P strong>, добавив B к CAD).
Подскажите, пожалуйста, алгоритм поиска кратчайшего пути, как описано.
Спасибо!
O(1)
, используя некоторые предварительные вычисления. Теперь поместите это каждое множество в граф, и у вас будетclick
, в котором каждое ребро является этим запросом. Вам нужно найти путь, который проходит через все вершины и имеет максимальное количество пересечений. Я не уверен, но я думаю, что этоNP hard
. - person Yonlif   schedule 14.02.2019