# 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 Σ$\Sigma$ un insieme e AP(Σ)$A\subseteq\mathcal{P}(\Sigma)$ un insieme di sottoinsiemi di Σ$\Sigma$ . Trova una sequenza wΣ$w\in \Sigma^*$ di lunghezza minima tale che per ogni LA$L\in A$ , vi sia una kN$k\in\mathbb{N}$ tale che {wk+i0i<|L|}=L$\{ w_{k+i} \mid 0\leq i < |L| \} = L$ .

Ad esempio, per A={{a,b},{a,c}}$A = \{\{a,b\},\{a,c\}\}$ , la parola w=bac$w = bac$ è una soluzione al problema, poiché per {a,b}$\{a,b\}$ c'è k=0$k=0$ , per {a,c}$\{a,c\}$ c'è k=1$k=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 massimizzando ? L1,,Ln$L_1, \dots, L_n$|LiLi+1|$\sum |L_i \cap L_{i+1}|$
Karolis Juodelė

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

@ KarolisJuodelė, inoltre, ci sono casi in cui per alcuni , , il che lo rende ancora più complicato in quanto in tal caso "l'ordinamento di quartiere" potrebbe non essere totale. ij$i\neq j$LiLj$L_i\subseteq L_j$
avakar,

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

@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 un testimone per , se soddisfa la condizione della domanda (per ogni , c'è tale che ) .wΣ$w\in\Sigma^*$A$A$LA$L\in A$m1$m\geq 1${wm+i0i<|L|}=L$\{w_{m+i}\mid 0\leq i<|L|\} = L$

Considera la versione di decisione del problema originale, cioè decidi se per alcuni e , c'è un testimone per di lunghezza al massimo . 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 ).A$A$k0$k\geq 0$A$A$k$k$k$k$

Ora per il nucleo della riduzione. Sia un grafico semplice, non orientato, connesso. Per ogni , lascia che sia l'insieme contenente il vertice e tutti i suoi bordi adiacenti. Impostare e . Quindi G=(V,E)$G=(V,E)$vV$v\in V$Lv={v}{eEve}$L_v=\{v\}\cup\{e\in E\mid v\in e\}$v$v$Σ=E$\Sigma=E$A={LvvV}$A=\{L_v\mid v\in V\}$G$G$ has a Hamiltonian path if and only if there is a witness for A$A$ of length at most 2|E|+1$2|E|+1$.

Proof. Let v1e1v2en1vn$v_1e_1v_2\ldots e_{n-1}v_n$ be a Hamiltonian path in G$G$ and H={e1,e2,,en1}$H=\{e_1, e_2, \ldots, e_{n-1}\}$ the set of all edges on the path. For each vertex v$v$, define the set Uv=LvH$U_v=L_v\setminus H$. Choose an arbitrary ordering αv$\alpha_v$ for each Uv$U_v$. The word w=αv1e1αv2e2en1αvn$w=\alpha_{v_1}e_1\alpha_{v_2}e_2\ldots e_{n-1}\alpha_{v_n}$ is a witness for A$A$, since Lv1$L_{v_1}$ is represented by the substring α1e1$\alpha_1e_1$, Lvn$L_{v_n}$ by en1αn$e_{n-1}\alpha_n$, and for each vi$v_i$, i{1,n}$i\notin\{1, n\}$, Lvi$L_{v_i}$ is represented by ei1uviei$e_{i-1}u_{v_i}e_i$. Furthermore, each edge in E$E$ occurs twice in w$w$ with the exception of |V|1$|V|-1$ edges in H$H$, which occur once, and each vertex in V$V$ occurs once, giving |w|=2|E|+1$|w|=2|E|+1$.

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

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

Now, there are |V|$|V|$ vertices, therefore |H||V|1$|H|\leq |V|-1$. From there, it follows that |w|2|E|+1$|w|\geq 2|E|+1$. Since we assume |w|2|E|+1$|w|\leq 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$H$ between each pair of vertices adjacent in w$w$. Denote h1h2hn1$h_1h_2\ldots h_{n-1}$ all elements from H$H$ in the order they appear in $w$. It follows that $v_1h_1v_2h_2\ldots h_{n-1}v_n$ is a Hamiltonian path in $G$. $\square$

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.