Como encontro a representação mais curta para um subconjunto de um conjunto de energia?


13

Estou procurando um algoritmo eficiente para o seguinte problema ou uma prova de dureza NP.

Deixe ΣΣ ser um conjunto e um P ( Σ )AP(Σ) um conjunto de subconjuntos de ΣΣ . Encontrar uma sequência w Σ *wΣ de menos comprimento tal que, para cada L ALA , há um k NkN tal que { w k + i | 0 i < | L | } = L{wk+i0i<|L|}=L .

Por exemplo, para A = { { a , b } , { a , c } }A={{a,b},{a,c}} , a palavra w = b a cw=bac é uma solução para o problema, pois para { a , b }{a,b}k = 0k=0 , para { a , c }{a,c} existe k = 1k=1 .

Quanto à minha motivação, estou tentando representar o conjunto de arestas de um autômato finito, onde cada aresta pode ser rotulada por um conjunto de letras do alfabeto de entrada. Gostaria de armazenar uma única string e, em seguida, manter um par de ponteiros para essa string em cada borda. Meu objetivo é minimizar o comprimento dessa string.


1
Em outras palavras, o problema é ordenar conjuntos em uma sequência L 1 , , L n maximizando | L iL i + 1 | ? L1,,Ln|LiLi+1|
Karolis Juodelė

@ KarolisJuodelė, eu não acho que isso é suficiente, já que para L i , L i + 1 , L i + 2 você pode ter que colocar elementos em L iL i + 2 em w duas vezes, mesmo que estejam em L i + 1 . Por exemplo, { { a , b } , { a , c } , { a , d } } , você pode compartilhar umLi,Li+1,Li+2LiLi+2wLi+1{{a,b},{a,c},{a,d}}aentre os dois primeiros ou os dois últimos, mas não entre todos, o menor w seria b a c a d . wbacad
avakar

@ KarolisJuodelė, além disso, há casos em que por algum i j , L iL j , o que torna ainda mais complicado, pois em tal caso, a "ordenação bairro" pode não ser total. ijLiLj
avakar

Apenas para animar, se eu fiz a pergunta certa, se o conjunto é A = { { c , o , w } , { o , w , l } , { w , o , l , f } } , então uma palavra c o w o w l w o l f satisfaz os requisitos indicados, mas (possível) mínimo tal palavra e solução é c o w l f ? :)A={{c,o,w},{o,w,l},{w,o,l,f}}cowowlwolfcowlf
precisa

@MindaugasK, isso é correto exemplo muito bom :)
avakar

Respostas:


4

Acredito que encontrei uma redução no caminho Hamiltoniano , provando o problema NP-difícil.

Chame a palavra w Σ * uma testemunha de A , se satisfizer a condição da questão (para cada L A , há m 1 tal que { w m + i | 0 i < | L | } = L ) .wΣALAm1{wm+i0i<|L|}=L

Considere a versão de decisão do problema original, ou seja, decida se para alguns A e k 0 , há uma testemunha de A no máximo k . Esse problema pode ser resolvido usando o problema original como um oráculo no tempo polinomial (encontre a menor testemunha e compare seu comprimento com k ).Ak0Akk

Agora, o núcleo da redução. Seja G = ( V , E ) um gráfico simples, não direcionado e conectado. Para cada v V , deixar L v = { v } { e E | v e } o conjunto contendo o vértice v e todos os seus bordos adjacentes. Defina Σ = E e A = { L vv V } . Então GG=(V,E)vVLv={v}{eEve}vΣ=EA={LvvV}Gpossui um caminho hamiltoniano se, e somente se, houver uma testemunha de A no máximo 2 | E | + 1 .A2|E|+1

Proof. Let v1e1v2en1vnv1e1v2en1vn be a Hamiltonian path in GG and H={e1,e2,,en1}H={e1,e2,,en1} the set of all edges on the path. For each vertex vv, define the set Uv=LvHUv=LvH. Choose an arbitrary ordering αvαv for each UvUv. The word w=αv1e1αv2e2en1αvnw=αv1e1αv2e2en1αvn is a witness for AA, since Lv1Lv1 is represented by the substring α1e1α1e1, LvnLvn by en1αnen1αn, and for each vivi, i{1,n}i{1,n}, LviLvi is represented by ei1uvieiei1uviei. Furthermore, each edge in EE occurs twice in ww with the exception of |V|1 edges in H, which occur once, and each vertex in V occurs once, giving |w|=2|E|+1.

For the other direction, let w be an arbitrary witness for A of length at most 2|E|+1. Clearly, each eE and vV occurs in w at least once. Without loss of generality, assume that each eE occurs in w at most twice and each vV occurs exactly once; otherwise a shorter witness can be found by removing elements from w. Let HE be the set of all edges occurring in w exactly once. Given the assumptions above, it holds that |w|=2|E||H|+|V|.

Consider a contiguous substring of w of the form ue1e2ekv, where u,vV, eiE. We say that u,v are adjacent. Notice that if eiH, then ei={u,v}, because ei occurs only once, yet it is adjacent to two vertices in G. Therefore, at most one of ei can be in H. Similarly, no edge in H can occur in w before the first vertex or after the last vertex.

Now, there are |V| vertices, therefore |H||V|1. From there, it follows that |w|2|E|+1. Since we assume |w|2|E|+1, we get equality. From there we get |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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.