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

13

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

Пусть Σ - множество, а A P ( Σ ) - множество подмножеств Σ . Найдите последовательность w Σ наименьшей длины, такую, что для каждого L A найдется такое k N , что { w k + i0 i < | L | } = Л .ΣAP(Σ)ΣwΣLAkN{wk+i0i<|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

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

avakar
источник
1
Другими словами, проблема состоит в том, чтобы упорядочить множества в последовательность L 1 , , L n, максимизируя | L iL i + 1 | ? L1,,Ln|LiLi+1|
Каролис Юоделе
@ KarolisJuodelė, я не думаю, что этого достаточно, поскольку для L i , L i + 1 , L i + 2 вам, возможно, придется поместить элементы в L iL i + 2 в w дважды, даже если они находятся в L i + 1 . Например , { { , Ь } , { , с } , { , д } } , вы можете разделитьLi,Li+1,Li+2LiLi+2wLi+1{{a,b},{a,c},{a,d}}aмежду первыми двумя или последними двумя, но не среди них всех, самый короткий w будет b a c a d . wbacad
Авакар
@ KarolisJuodelė, кроме того, есть случаи, когда для некоторых i j , L iL j , что делает его еще более сложным, так как в таком случае «порядок окрестности» может быть не тотальным. ijLiLj
Авакар
Просто чтобы поднять настроение, если я правильно понял вопрос, если множество 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 + i0 i < | L | } = L ) ,wΣALAm1{wm+i0i<|L|}=L

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

Теперь по сути сокращения. Пусть G = ( V , E ) простой неориентированный связный граф. Для каждого v V пусть L v = { v } { e E v e } - множество, содержащее вершину v и все ее смежные ребра. Положим Σ = E и A = { L vv V } . Тогда гG=(V,E)vVLv={v}{eEve}vΣ=EA={LvvV}Gимеет гамильтонову путь тогда и только тогда, когда есть свидетель для длины A не более 2 | E | + 1 .A2|E|+1

Доказательство. Пусть v 1 e 1 v 2e n - 1 v n - гамильтонов путь в G и H = { e 1 , e 2 , , e n - 1 } множество всех ребер на пути. Для каждой вершины V , определим множество U V = L vH . Выберите произвольный порядок α v для каждого U v . Словоv1e1v2en1vnGH={e1,e2,,en1}vUv=LvHαvUvw = α v 1 e 1 α v 2 e 2e 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αv2e2en1αvnALv1α1e1Lvnen1αnvii{1,n} i , представленe iLvi - 1 u v i e i . Кроме того, каждое ребро вEвстречается дважды вw,за исключением | V | -1ребро вH, которое встречается один раз, и каждая вершина вVвстречается один раз, давая | ш | =2 | E | +1.ei1uvieiEw|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|+1eEvVweEwvVwHEww 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 . Следовательно, самое большееwue1e2ekvu,vVeiEu,veiHei={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 h1h2hn1 all elements from H in the order they appear in w. It follows that v1h1v2h2hn1vn 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.

avakar
источник