(Banyak terima kasih kepada Gilad Barkan (גלעד ברקן) karena membuat saya mengetahui diskusi ini.)
Izinkan saya membagikan pemikiran saya tentang masalah ini dari sudut pandang teoretis murni (perhatikan bahwa saya juga menggunakan "faktor" dan bukan "subword").
Saya pikir definisi masalah (atau masalah) yang cukup formal yang dipertimbangkan di sini adalah sebagai berikut:
Diberi kata w, temukan kata u_1, u_2, ..., u_k sedemikian rupa
- u_i! = u_j untuk setiap i, j dengan 1 <= i <j <= k dan
- u_1 u_2 ... u_k = w
Varian maksimisasi (kami ingin banyak u_i): maksimalkan k
Varian minimalisasi (kami ingin u_i pendek): meminimalkan maks {| u_i | : 1 <= i <= k}
Masalah-masalah ini menjadi masalah keputusan dengan tambahan memberikan B terikat, yang, menurut apakah kita berbicara tentang "banyak faktor" -bervariant atau "faktor pendek" -berbagai, adalah batas bawah pada k (kita ingin setidaknya B faktor), atau batas atas pada maks {| u_i | : 1 <= i <= k} (kami ingin faktor panjang paling banyak B), masing-masing. Untuk membicarakan kekerasan NP, kita perlu membicarakan masalah keputusan.
Mari kita gunakan istilah SF untuk "faktor pendek" -bervariasi dan MF untuk "banyak faktor" -bervariasi. Khususnya, dan ini adalah hal yang sangat krusial, masalahnya didefinisikan sedemikian rupa sehingga kita mendapatkan kata di atas beberapa alfabet yang tidak dibatasi dengan cara apa pun. Versi masalahnya adalah kita tahu apriori bahwa kita hanya mendapatkan kata-kata masukan, misalnya, alfabet {a, b, c, d} adalah masalah yang berbeda! Kekerasan NP tidak secara otomatis terbawa dari varian "tidak dibatasi" ke varian "alfabet tetap" (yang terakhir mungkin lebih sederhana).
SF dan MF adalah masalah NP-complete. Ini telah ditunjukkan dalam [1, 1b] dan [2], masing-masing (seperti yang telah ditunjukkan oleh Gilad). Jika saya memahami definisi masalah informal (mungkin juga) di sini di awal diskusi ini dengan benar, maka masalah diskusi ini persis adalah masalah MF. Pada awalnya tidak disebutkan bahwa kata-kata dibatasi untuk berasal dari beberapa alfabet tetap, kemudian dikatakan bahwa kita dapat mengasumsikan bahwa hanya huruf kecil yang digunakan. Jika ini berarti bahwa kita hanya mempertimbangkan kata-kata di atas alfabet tetap {a, b, c, ..., z}, maka ini akan banyak berubah sebenarnya dalam hal kekerasan NP.
Pandangan yang lebih dekat mengungkapkan beberapa perbedaan dalam kompleksitas SF dan MF:
- kertas [1, 1b] menunjukkan bahwa SF tetap NP-lengkap jika kita memperbaiki alfabet menjadi satu biner (lebih tepatnya: mendapatkan kata w di atas huruf a dan b dan B terikat, dapatkah kita memfaktorkannya dalam faktor-faktor berbeda panjang di kebanyakan B?).
- kertas [1, 1b] menunjukkan bahwa SF tetap NP-lengkap jika kita memperbaiki batas B = 2 (lebih tepatnya: mendapatkan kata w, bisakah kita memfaktorkannya dalam faktor berbeda panjang paling banyak 2?).
- kertas [3] menunjukkan bahwa jika alfabet dan B terikat diperbaiki, maka SF dapat diselesaikan dalam waktu polinomial.
- kertas [2] menunjukkan bahwa MF adalah NP-complete, tetapi hanya jika alfabet tidak dibatasi atau diperbaiki secara apriori! Secara khusus, itu tidak menjawab pertanyaan apakah masalahnya NP-lengkap jika kita hanya mempertimbangkan kata-kata input dari beberapa alfabet tetap (seperti yang biasa terjadi dalam pengaturan praktis).
- kertas [3] menunjukkan bahwa MF dapat diselesaikan dalam waktu polinomial jika batas input B lagi dibatasi oleh beberapa konstanta, yaitu, input masalah adalah kata dan terikat B dari {1, 2, ..., K} , di mana K adalah konstanta tetap.
Beberapa komentar pada hasil ini: Wrt (1) dan (2), secara intuitif jelas bahwa jika alfabet adalah biner, maka, untuk membuat masalah SF sulit, batas B tidak dapat diperbaiki juga. Sebaliknya, memperbaiki B = 2 berarti bahwa ukuran alfabet harus agak besar untuk menghasilkan instance yang sulit. Akibatnya, (3) agak sepele (pada kenyataannya, [3] mengatakan sedikit lebih: kita dapat menyelesaikannya dalam waktu berjalan tidak hanya polinomial, tetapi juga | w | ^ 2 kali faktor yang hanya tergantung pada ukuran alfabet dan terikat B). (5) tidak sulit juga: Jika kata kita panjang dibandingkan dengan B, maka kita bisa mendapatkan factorisation yang diinginkan dengan hanya mengiris faktor-faktor dengan panjang yang berbeda. Jika tidak, maka kita dapat memaksa semua kemungkinan, yang hanya bersifat eksponensial dalam B, yang dalam hal ini dianggap konstan.
Jadi gambar yang kita miliki adalah sebagai berikut: SF tampaknya lebih sulit, karena kita memiliki kekerasan bahkan untuk huruf tetap atau B. terikat. Masalahnya MF, di sisi lain, mendapat poly-time dipecahkan jika ikatan diperbaiki (dalam hal ini lebih mudah daripada SF), sedangkan pertanyaan yang sesuai dengan ukuran alfabet terbuka. Jadi MF sedikit lebih kompleks daripada SF, bahkan jika ternyata MF untuk huruf tetap juga NP-complete. Namun, jika dapat ditunjukkan bahwa MF dapat diselesaikan untuk huruf tetap dalam waktu-poli, maka MF terbukti jauh lebih mudah daripada SF ... karena satu kasus yang sulitnya agak buatan (alfabet tak terikat!) .
Saya memang berusaha menyelesaikan kasus MF dengan alfabet terbatas, tetapi saya tidak bisa menyelesaikannya dan berhenti mengerjakannya sejak itu. Saya tidak percaya bahwa peneliti lain telah berusaha sangat keras untuk menyelesaikannya (jadi ini bukan salah satu dari masalah yang sangat sulit ini, banyak orang sudah mencoba dan gagal; saya menganggap itu bisa dilakukan). Dugaan saya adalah bahwa ini juga NP-hard untuk huruf tetap, tetapi mungkin pengurangannya sangat rumit sehingga Anda akan mendapatkan sesuatu seperti "MF sulit untuk huruf ukuran 35 atau lebih besar" atau sesuatu, yang tidak akan super bagus juga .
Mengenai literatur lebih lanjut, saya tahu makalah [4], yang mempertimbangkan masalah pemisahan kata w menjadi faktor berbeda u_1, u_2, ..., u_k yang semuanya palindrom, yang juga NP-complete.
Saya melihat sekilas kertas [5], ditunjukkan oleh Gilad. Tampaknya mempertimbangkan pengaturan yang berbeda. Dalam makalah ini, penulis tertarik pada pertanyaan kombinatorial tentang berapa banyak kata atau subword yang berbeda dapat terkandung dalam kata yang diberikan, tetapi ini dapat tumpang tindih. Misalnya, aaabaab berisi 20 subword berbeda a, b, aa, ab, ba, bb, aaa, aab, aba, baa, aaab, aaba, abaa, baab, aaaba, aabaa, abaab, aabaab, aaabaa, aaabaab (mungkin saya salah hitung, tetapi Anda mendapatkan idenya). Beberapa dari mereka hanya memiliki satu kejadian, seperti baa, beberapa dari mereka beberapa, seperti aa. Bagaimanapun, pertanyaannya bukanlah bagaimana kita dapat memisahkan kata tersebut untuk mendapatkan banyak faktor berbeda, karena ini berarti setiap simbol individu berkontribusi tepat pada satu faktor.
Mengenai solusi praktis untuk masalah seperti ini (perlu diingat bahwa saya adalah ahli teori, jadi ambil ini dengan sebutir garam):
Setahu saya, tidak ada batas teoritis yang lebih rendah (seperti NP-hardness) yang akan mengesampingkannya untuk menyelesaikan MF dalam waktu polinomial jika kita hanya mempertimbangkan memasukkan kata-kata di atas alfabet tetap. Namun ada satu peringatan: Jika Anda mendapatkan algoritma poli-waktu, maka ini harus berjalan secara eksponensial dalam jumlah simbol dari alfabet tetap (atau eksponensial pada beberapa fungsi itu)! Kalau tidak, itu juga akan menjadi algoritma waktu polinomial untuk kasus huruf yang tidak terikat. Jadi, sebagai ahli teori, saya akan mencari tugas algoritmik yang dapat dihitung dalam waktu eksponensial hanya jika jumlah simbol dan yang entah bagaimana membantu merancang algoritma untuk MF. Di sisi lain, ada kemungkinan bahwa algoritma seperti itu tidak ada dan MF juga NP-hard dalam kasus alfabet tetap.
Jika Anda tertarik pada solusi praktis, mungkin ada baiknya untuk memperkirakan solusinya. Jadi mendapatkan factorisation yang dijamin hanya setengah dari yang optimal dalam kasus terburuk tidak akan terlalu buruk.
Heuristik yang tidak memberikan rasio perkiraan yang dapat dibuktikan, tetapi bekerja dengan baik dalam pengaturan praktis juga akan menarik, saya kira.
Mengubah instance instans menjadi SAT atau ILP-instance seharusnya tidak terlalu sulit dan kemudian Anda bisa menjalankan SAT atau ILP-Solver untuk mendapatkan solusi yang optimal.
Pendapat pribadi saya adalah bahwa meskipun tidak diketahui apakah huruf tetap-MF adalah NP-keras, ada cukup wawasan teoritis yang menunjukkan bahwa masalahnya cukup sulit sehingga dibenarkan untuk mencari solusi heuristik dll. bekerja dengan baik dalam lingkungan yang praktis.
Bibliografi:
[1] Anne Condon, Ján Manuch, Chris Thachuk: Kompleksitas partisi string. J. Discrete Algorithms 32: 24-43 (2015)
[1b] Anne Condon, Ján Manuch, Chris Thachuk: Kompleksitas Masalah Partisi Tali Tabrakan-Sadar dan Hubungannya dengan Desain Oligo untuk Sintesis Gen. COCOON 2008: 265-275
[2] Henning Fernau, Florin Manea, Robert Mercas, Markus L. Schmid: Pencocokan Pola dengan Variabel: Algoritma Cepat dan Hasil Kekerasan Baru. STACS 2015: 302-315
[3] Markus L. Schmid: Menghitung faktorisasi string yang bebas kesetaraan dan berulang. Teor Komputasi. Sci. 618: 42-51 (2016)
[4] Hideo Bannai, Travis Gagie, Shunsuke Inenaga, Juha Kärkkäinen, Dominik Kempa, Marcin Piatkowski, Shiho Sugimoto: Beragam Faktor Palindromik NP-Lengkap. Int. J. Ditemukan. Komputasi. Sci. 29 (2): 143-164 (2018)
[5] Abraham Flaxman, Aram Wettroth Harrow, Gregory B. Sorkin: String dengan Sub maksimalences dan Substring yang Berbeda. Electr. J. Comb. 11 (1) (2004)
aab|a|b|aa
masih 4