Я ищу эффективный алгоритм для следующей задачи или доказательства NP-твердости.
Пусть Σ - множество, а A ⊆ P ( Σ ) - множество подмножеств Σ . Найдите последовательность w ∈ Σ ∗ наименьшей длины, такую, что для каждого L ∈ A найдется такое k ∈ N , что { w k + i ∣ 0 ≤ i < | L | } = Л .
Например, для A = { { a , b } , { a , c } } слово w = b a c является решением проблемы, поскольку для { a , b } есть k = 0 , для { a , с } есть к = 1 .
Что касается моей мотивации, я пытаюсь представить множество ребер конечного автомата, где каждое ребро может быть помечено набором букв из входного алфавита. Я хотел бы сохранить одну строку, а затем сохранить пару указателей на эту строку в каждом ребре. Моя цель - минимизировать длину этой строки.
Ответы:
Я считаю, что нашел сокращение от гамильтоновой траектории , доказав тем самым проблему NP-трудной.
Назовем слово w ∈ Σ ∗ свидетелем для A , если оно удовлетворяет условию из вопроса (для каждого L ∈ A существует m ≥ 1 такое, что { w m + i ∣ 0 ≤ i < | L | } = L ) ,w∈Σ∗ A L∈A m≥1 {wm+i∣0≤i<|L|}=L
Рассмотрим вариант решения исходной задачи, т.е. решим, есть ли для некоторого A и k ≥ 0 свидетель A длины не более k . Эту проблему можно решить, используя исходную задачу как оракула за полиномиальное время (найдите кратчайшего свидетеля, затем сравните его длину с k ).A k≥0 A k k
Теперь по сути сокращения. Пусть G = ( V , E ) простой неориентированный связный граф. Для каждого v ∈ V пусть L v = { v } ∪ { e ∈ E ∣ v ∈ e } - множество, содержащее вершину v и все ее смежные ребра. Положим Σ = E и A = { L v ∣ v ∈ V } . Тогда гG=(V,E) v∈V Lv={v}∪{e∈E∣v∈e} v Σ=E A={Lv∣v∈V} G имеет гамильтонову путь тогда и только тогда, когда есть свидетель для длины A не более 2 | E | + 1 .A 2|E|+1
Доказательство. Пусть v 1 e 1 v 2 … e n - 1 v n - гамильтонов путь в G и H = { e 1 , e 2 , … , e n - 1 } множество всех ребер на пути. Для каждой вершины V , определим множество U V = L v ∖ H . Выберите произвольный порядок α v для каждого U v . Словоv1e1v2…en−1vn G H={e1,e2,…,en−1} v Uv=Lv∖H αv Uv w = α v 1 e 1 α v 2 e 2 … e n - 1 α v n является свидетелем для A , поскольку L v 1 представлен подстрокой α 1 e 1 , L v n как e n - 1 α n и для каждого v i , i ∉ { 1 , n } , L vw=αv1e1αv2e2…en−1αvn A Lv1 α1e1 Lvn en−1αn vi i∉{1,n} i , представленe iLvi - 1 u v i e i . Кроме того, каждое ребро вEвстречается дважды вw,за исключением | V | -1ребро вH, которое встречается один раз, и каждая вершина вVвстречается один раз, давая | ш | =2 | E | +1.ei−1uviei E w |V|−1 H V |w|=2|E|+1
Для другого направления пусть w будет произвольным свидетелем длины A не более 2 | E | + 1 . Ясно, что каждое e ∈ E и v ∈ V встречается в w хотя бы один раз. Без ограничения общности предположим, что каждое e ∈ E встречается в w не более двух раз, а каждое v ∈ V встречается ровно один раз; в противном случае можно найти более короткого свидетеля, удалив элементы из w . Пусть H ⊆ E - множество всех ребер, встречающихся вw A 2|E|+1 e∈E v∈V w e∈E w v∈V w H⊆E ww exactly once. Given the assumptions above, it holds that |w|=2|E|−|H|+|V||w|=2|E|−|H|+|V| .
Рассмотрим непрерывную подстроку ш формы у е 1 е 2 ... е K V , где ¯u , об ∈ V , е я ∈ E . Мы говорим, что u , v смежны. Обратите внимание , что если е я ∈ H , то е я = { U , V } , потому что е я происходит только один раз, пока она находится рядом с двумя вершинами в G . Следовательно, самое большееw ue1e2…ekv u,v∈V ei∈E u,v ei∈H ei={u,v} ei G eiei can be in HH . Similarly, no edge in HH can occur in ww before the first vertex or after the last vertex.
Now, there are |V||V| vertices, therefore |H|≤|V|−1|H|≤|V|−1 . From there, it follows that |w|≥2|E|+1|w|≥2|E|+1 . Since we assume |w|≤2|E|+1|w|≤2|E|+1 , we get equality. From there we get |H|=|V|−1|H|=|V|−1 . By pigeonhole principle, there is an edge from H between each pair of vertices adjacent in w. Denote h1h2…hn−1 all elements from H in the order they appear in w. It follows that v1h1v2h2…hn−1vn is a Hamiltonian path in G. ◻
Since the problem of deciding the existence of Hamiltonian path is NP-hard and the above reduction is polynomial, the original problem is NP-hard too.
источник