Comment trouver la représentation la plus courte pour un sous-ensemble d'un jeu de puissances?


13

Je recherche un algorithme efficace pour le problème suivant ou une preuve de dureté NP.

Soit ΣΣ un ensemble et A P ( Σ )AP(Σ) un ensemble de sous-ensembles de ΣΣ . Trouver une séquence w Σ wΣ de moindre longueur telle que pour chaque L ALA , il existe un k NkN tel que { w k + i0 i < | L | } = L{wk+i0i<|L|}=L .

Par exemple, pour A = { { a , b } , { a , c } }A={{a,b},{a,c}} , le mot w = b a cw=bac est une solution au problème, car pour { a , b }{a,b} il y a k = 0k=0 , pour { a , c }{a,c} il y a k = 1k=1 .

Quant à ma motivation, j'essaie de représenter l'ensemble des bords d'un automate fini, où chaque bord peut être étiqueté par un ensemble de lettres de l'alphabet d'entrée. Je voudrais stocker une seule chaîne, puis conserver une paire de pointeurs vers cette chaîne à chaque bord. Mon objectif est de minimiser la longueur de cette chaîne.


1
En d'autres termes, le problème est d'ordonner les ensembles dans une séquence L 1 , , L n maximisant | L iL i + 1 | ? L1,,Ln|LiLi+1|
Karolis Juodelė

@ KarolisJuodelė, je ne pense pas que cela soit suffisant, car pour L i , L i + 1 , L i + 2, vous devrez peut-être mettre deux fois des éléments dans L iL i + 2 dans w même s'ils sont dans L i + 1 . Par exemple { { a , b } , { a , c } , { a , d } } , vous pouvez partager unLi,Li+1,Li+2LiLi+2wLi+1{{a,b},{a,c},{a,d}}aentre les deux premiers ou les deux derniers, mais pas parmi eux tous, le w le plus court serait b a c a d . wbacad
avakar

@ KarolisJuodelė, en outre, il y a des cas où pour certains i j , L iL j , ce qui rend encore plus compliqué car dans un tel cas, "l'ordre de voisinage" peut ne pas être total. ijLiLj
avakar

Juste pour remonter le moral, si j'ai bien répondu, si l'ensemble est A = { { c , o , w } , { o , w , l } , { w , o , l , f } } , alors un mot c o w o w l w o l f satisfait aux exigences données, mais (possible) minimum tel mot et la solution est c o w l f ? :)A={{c,o,w},{o,w,l},{w,o,l,f}}cowowlwolfcowlf
MindaugasK

@MindaugasK, c'est correct, très bel exemple :)
avakar

Réponses:


4

Je crois avoir trouvé une réduction du chemin hamiltonien , prouvant ainsi le problème NP-difficile.

Appelons le mot w Σ un témoin pour A , s'il satisfait la condition de la question (pour chaque L A , il y a m 1 tel que { w m + i0 i < | L | } = L ) .wΣALAm1{wm+i0i<|L|}=L

Considérons la version de décision du problème d'origine, c'est-à-dire décider si pour certains A et k 0 , il y a un témoin pour A de longueur au plus k . Ce problème peut être résolu en utilisant le problème d'origine comme un oracle en temps polynomial (trouver le témoin le plus court, puis comparer sa longueur à k ).Ak0Akk

Maintenant, au cœur de la réduction. Soit G = ( V , E ) un graphe simple, non orienté et connecté. Pour chaque v V , soit L v = { v } { e E v e } l'ensemble contenant le sommet v et toutes ses arêtes adjacentes. Réglez Σ = E et A = { L vv V } . Alors 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}, Lvi is represented by ei1uviei. Furthermore, each edge in E occurs twice in w 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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.