Как мне найти кратчайшее представление для подмножества powerset?


13

Я ищу эффективный алгоритм для следующей задачи или доказательства NP-твердости.

Пусть Σ - множество, а A ⊆ P ( Σ ) - множество подмножеств Σ . Найдите последовательность w ∈ Σ ∗ наименьшей длины, такую, что для каждого L ∈ A найдется такое k ∈ N , что { w k + i ∣ 0 ≤ i < | L | } = Л .ΣA⊆P(Σ)Σw∈Σ∗L∈Ak∈N{wk+i∣0≤i<|L|}=L

Например, для A = { { a , b } , { a , c } } слово w = b a c является решением проблемы, поскольку для { a , b } есть k = 0 , для { a , с } есть к = 1 .A={{a,b},{a,c}}w=bac{a,b}k=0{a,c}k=1

Что касается моей мотивации, я пытаюсь представить множество ребер конечного автомата, где каждое ребро может быть помечено набором букв из входного алфавита. Я хотел бы сохранить одну строку, а затем сохранить пару указателей на эту строку в каждом ребре. Моя цель - минимизировать длину этой строки.


1
Другими словами, проблема состоит в том, чтобы упорядочить множества в последовательность L 1 , … , L n, максимизируя ∑ | L i ∩ L i + 1 | ? L1,…,Ln∑|Li∩Li+1|
— Каролис Юоделе

@ KarolisJuodelė, я не думаю, что этого достаточно, поскольку для L i , L i + 1 , L i + 2 вам, возможно, придется поместить элементы в L i ∩ L i + 2 в w дважды, даже если они находятся в L i + 1 . Например , { { , Ь } , { , с } , { , д } } , вы можете разделитьLi,Li+1,Li+2Li∩Li+2wLi+1{{a,b},{a,c},{a,d}}aмежду первыми двумя или последними двумя, но не среди них всех, самый короткий w будет b a c a d . wbacad
— Авакар

@ KarolisJuodelė, кроме того, есть случаи, когда для некоторых i ≠ j , L i ⊆ L j , что делает его еще более сложным, так как в таком случае «порядок окрестности» может быть не тотальным. i≠jLi⊆Lj
— Авакар

Просто чтобы поднять настроение, если я правильно понял вопрос, если множество A = { { c , o , w } , { o , w , l } , { w , o , l , f } } , тогда слово c о ш о ш л ж о л ф удовлетворяет требования , приведенные, но (возможно) минимальное такое слово и решение с о ш л е ? :)A={{c,o,w},{o,w,l},{w,o,l,f}}cowowlwolfcowlf
— MindaugasK

@MindaugasK, это правильно, очень хороший пример :)
— avakar

Ответы:


4

Я считаю, что нашел сокращение от гамильтоновой траектории , доказав тем самым проблему NP-трудной.

Назовем слово w ∈ Σ ∗ свидетелем для A , если оно удовлетворяет условию из вопроса (для каждого L ∈ A существует m ≥ 1 такое, что { w m + i ∣ 0 ≤ i < | L | } = L ) ,w∈Σ∗AL∈Am≥1{wm+i∣0≤i<|L|}=L

Рассмотрим вариант решения исходной задачи, т.е. решим, есть ли для некоторого A и k ≥ 0 свидетель A длины не более k . Эту проблему можно решить, используя исходную задачу как оракула за полиномиальное время (найдите кратчайшего свидетеля, затем сравните его длину с k ).Ak≥0Akk

Теперь по сути сокращения. Пусть G = ( V , E ) простой неориентированный связный граф. Для каждого v ∈ V пусть L v = { v } ∪ { e ∈ E ∣ v ∈ e } - множество, содержащее вершину v и все ее смежные ребра. Положим Σ = E и A = { L v ∣ v ∈ V } . Тогда гG=(V,E)v∈VLv={v}∪{e∈E∣v∈e}vΣ=EA={Lv∣v∈V}Gимеет гамильтонову путь тогда и только тогда, когда есть свидетель для длины A не более 2 | E | + 1 .A2|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−1vnGH={e1,e2,…,en−1}vUv=Lv∖HαvUvw = α 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αvnALv1α1e1Lvnen−1αnvii∉{1,n} i , представленe iLvi - 1 u v i e i . Кроме того, каждое ребро вEвстречается дважды вw,за исключением | V | -1ребро вH, которое встречается один раз, и каждая вершина вVвстречается один раз, давая | ш | =2 | E | +1.ei−1uvieiEw|V|−1HV|w|=2|E|+1

Для другого направления пусть w будет произвольным свидетелем длины A не более 2 | E | + 1 . Ясно, что каждое e ∈ E и v ∈ V встречается в w хотя бы один раз. Без ограничения общности предположим, что каждое e ∈ E встречается в w не более двух раз, а каждое v ∈ V встречается ровно один раз; в противном случае можно найти более короткого свидетеля, удалив элементы из w . Пусть H ⊆ E - множество всех ребер, встречающихся вwA2|E|+1e∈Ev∈Vwe∈Ewv∈VwH⊆Eww 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 . Следовательно, самое большееwue1e2…ekvu,v∈Vei∈Eu,vei∈Hei={u,v}eiGeiei 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.