Come posso trovare la rappresentazione più breve per un sottoinsieme di un powerset?


13

Sto cercando un algoritmo efficiente per il seguente problema o una prova della durezza NP.

Sia ΣΣ un insieme e A P ( Σ )AP(Σ) un insieme di sottoinsiemi di ΣΣ . Trova una sequenza w Σ wΣ di lunghezza minima tale che per ogni L ALA , vi sia una k NkN tale che { w k + i0 i < | L | } = L{wk+i0i<|L|}=L .

Ad esempio, per A = { { a , b } , { a , c } }A={{a,b},{a,c}} , la parola w = b a cw=bac è una soluzione al problema, poiché per { a , b }{a,b} c'è k = 0k=0 , per { a , c }{a,c} c'è k = 1k=1 .

Per quanto riguarda la mia motivazione, sto cercando di rappresentare l'insieme di spigoli di un automa finito, in cui ogni spigolo può essere etichettato da un set di lettere dell'alfabeto di input. Vorrei memorizzare una singola stringa e quindi mantenere un paio di puntatori a quella stringa in ciascun bordo. Il mio obiettivo è ridurre al minimo la lunghezza di quella stringa.


1
In altre parole, il problema è ordinare gli insiemi in una sequenza L 1 , ... , L n massimizzando | L iL i + 1 | ? L1,,Ln|LiLi+1|
Karolis Juodelė

@ KarolisJuodelė, non penso che sia abbastanza, dal momento che per L i , L i + 1 , L i + 2 potresti dover inserire elementi in L iL i + 2 due volte in w anche se sono in L i + 1 . Ad esempio { { a , b } , { a , c } , { a , d } } , puoi condividere aLi,Li+1,Li+2LiLi+2wLi+1{{a,b},{a,c},{a,d}}atra i primi due o gli ultimi due, ma non tra tutti, il più breve w sarebbe b a c a d . wbacad
avakar

@ KarolisJuodelė, inoltre, ci sono casi in cui per alcuni i j , L iL j , il che lo rende ancora più complicato in quanto in tal caso "l'ordinamento di quartiere" potrebbe non essere totale. ijLiLj
avakar,

Solo per rallegrare, se ho capito bene la domanda, se il set è A = { { c , o , w } , { o , w , l } , { w , o , l , f } } , quindi una parola c o w o w l w o l f soddisfa i requisiti indicati, ma (possibile) minimo tale parola e la soluzione è c o w l f ? :)A={{c,o,w},{o,w,l},{w,o,l,f}}cowowlwolfcowlf
MindaugasK,

@MindaugasK, che è corretto, ottimo esempio :)
avakar,

Risposte:


4

Credo di aver trovato una riduzione dal percorso hamiltoniano , dimostrando così il problema NP-difficile.

Chiama la parola w Σ un testimone per A , se soddisfa la condizione della domanda (per ogni L A , c'è m 1 tale che { w m + i0 i < | L | } = L ) .wΣALAm1{wm+i0i<|L|}=L

Considera la versione di decisione del problema originale, cioè decidi se per alcuni A e k 0 , c'è un testimone per A di lunghezza al massimo k . Questo problema può essere risolto usando il problema originale come oracolo nel tempo polinomiale (trova il testimone più breve, quindi confronta la sua lunghezza con k ).Ak0Akk

Ora per il nucleo della riduzione. Sia G = ( V , E ) un grafico semplice, non orientato, connesso. Per ogni v V , lascia che L v = { v } { e E v e } sia l'insieme contenente il vertice v e tutti i suoi bordi adiacenti. Impostare Σ = E e A = { L vv V } . Quindi GG=(V,E)vVLv={v}{eEve}vΣ=EA={LvvV}G has a Hamiltonian path if and only if there is a witness for AA of length at most 2|E|+12|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|V|1 edges in HH, which occur once, and each vertex in VV occurs once, giving |w|=2|E|+1|w|=2|E|+1.

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

Consider a contiguous substring of ww of the form ue1e2ekvue1e2ekv, where u,vVu,vV, eiEeiE. We say that u,vu,v are adjacent. Notice that if eiHeiH, then ei={u,v}ei={u,v}, because eiei occurs only once, yet it is adjacent to two vertices in GG. Therefore, at most one of 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 HH between each pair of vertices adjacent in ww. Denote h1h2hn1h1h2hn1 all elements from HH 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.