Як знайти найкоротше представлення для підмножини живлення?


13

Я шукаю ефективний алгоритм для наступної проблеми або доказ твердості NP.

Нехай - множина, а - набір підмножин \ Sigma . Знайдіть послідовність w \ in \ Sigma ^ * найменшої довжини, такою, що для кожного L \ в A є k \ in \ mathbb {N} така, що \ {w_ {k + i} \ mid 0 \ leq i < | L | \} = L .ΣAP(Σ)ΣwΣLAkN{wk+i0i<|L|}=L

Наприклад, для A={{a,b},{a,c}} слово w=bac є рішенням проблеми, оскільки для {a,b} є k=0 , для {a,c} є k=1 .

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


1
Іншими словами, проблема полягає в тому, щоб упорядкувати набори в послідовності L1,,Ln максимізація |LiLi+1|?
Karolis Juodelė

@ KarolisJuodelė, я не думаю , що це досить, так як для ви , можливо , доведеться помістити елементи в в двічі , навіть якщо вони в . Наприклад , ви можете поділитися між першими двома або двома останніми, але не серед них все, найкоротшого був би . Li,Li+1,Li+2LiLi+2wLi+1{{a,b},{a,c},{a,d}}awbacad
авакар

@ KarolisJuodelė, крім того, є випадки, коли для деяких , , що робить це ще складніше, оскільки в такому випадку "упорядкування сусідства" може бути не повним. ijLiLj
авакар

Просто розвеселити, якщо я правильно зрозумів питання, якщо множина , то слово задовольняє заданим вимогам, але (можливий) мінімум такого слова та рішення - ? :)A={{c,o,w},{o,w,l},{w,o,l,f}}cowowlwolfcowlf
MindaugasK

@MindaugasK, це правильно, дуже приємний приклад :)
avakar

Відповіді:


4

Я вважаю, що я знайшов зменшення від гамільтонового шляху , тим самим доводячи проблему NP-тяжкої.

Назвіть слово свідком для , якщо воно відповідає умові з питання (для кожного є такий, що ).wΣALAm1{wm+i0i<|L|}=L

Розглянемо версію рішення оригінальної задачі, тобто вирішимо, чи для деяких і є свідком довжини максимум . Цю проблему можна вирішити, використовуючи оригінальну задачу як оракул у поліноміальний час (знайдіть найкоротшого свідка, а потім порівняйте його довжину до ).Ak0Akk

Тепер про основу скорочення. Нехай - простий, непрямий, сполучений графік. Для кожного нехай є множиною, що містить вершину та всі її суміжні краї. Встановіть і . Тоді має гамільтонову стежку тоді і тільки тоді, коли є свідок довжиною не більше .G=(V,E)vVLv={v}{eEve}vΣ=EA={LvvV}GA2|E|+1

Доказ. Нехай - гамільтонів шлях у та безліч усіх ребер на шляху. Для кожної вершини , визначимо безліч . Виберіть довільне впорядкування для кожного . Слово є свідком , оскільки представлений підрядком , від , і для кожного , ,v1e1v2en1vnGH={e1,e2,,en1}vUv=LvHαvUvw=αv1e1αv2e2en1αvnALv1α1e1Lvnen1αnvii{1,n}Lvi представлений . Крім того, кожне ребро в зустрічається двічі в за винятком ребер у , які трапляються один раз, і кожна вершина в виникає один раз, даючи .ei1uvieiEw|V|1HV|w|=2|E|+1

Для іншого напрямку, нехай довільний свідок довжини не більше . Зрозуміло, що кожен і зустрічається в принаймні один раз. Не втрачаючи загальності, припустимо, що кожне зустрічається в максимум удвічі, а кожне виникає рівно один раз; інакше коротший свідок може бути знайдений шляхом вилучення елементів з . Нехай - це сукупність усіх ребер, що виникають у рівно один раз. Зважаючи на припущення вище, випливає, що.wA2|E|+1eEvVweEwvVwHEw|w|=2|E||H|+|V|

Розглянемо безперервну подстроку виду , де , . Ми говоримо, що суміжні. Зверніть увагу , що якщо , то , тому що відбувається тільки один раз, але він знаходиться поруч з двома вершинами в . Тому, в кращому випадку один з може бути в . Так само жодне ребро в може виникати в перед першою вершиною або після останньої вершини.wue1e2ekvu,vVeiEu,veiHei={u,v}eiGeiHHw

Тепер євершин, тому . Звідти випливає, що . Оскільки ми припускаємо, що , ми отримуємо рівність. Звідти отримуємо . За принципом Діріхле, існує ребро з між кожною парою суміжних вершин в . Позначимо всі елементи з у порядку, у якому вони відображаються у . Звідси випливає , що є гамільтонів шлях в . |V||H||V|1|w|2|E|+1|w|2|E|+1|H|=|V|1Hwh1h2hn1Hwv1h1v2h2hn1vnG

Оскільки проблема вирішення існування гамільтонівського шляху є важкою для NP, а вищезазначене відновлення є поліномом, то оригінальна проблема є і NP-жорсткою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.