Acak dua string dibentuk dengan memotong karakter ke string baru, menjaga karakter masing-masing string dalam urutan. Misalnya, MISSISSIPPI
adalah shuffle dari MISIPP
dan SSISI
. Biarkan saya memanggil string kuadrat jika itu adalah shuffle dari dua string yang identik. Sebagai contoh, ABCABDCD
adalah kuadrat, karena itu adalah shuffle dari ABCD
dan ABCD
, tetapi string ABCDDCBA
tidak kuadrat.
Apakah ada algoritma cepat untuk menentukan apakah suatu string adalah kuadrat, atau apakah itu NP-hard? Pendekatan pemrograman dinamis yang jelas tampaknya tidak berhasil.
Bahkan case khusus berikut nampaknya sulit: (1) string di mana setiap karakter muncul paling banyak empat enam kali, dan (2) string dengan hanya dua karakter berbeda. Seperti yang ditunjukkan Per Austrin di bawah ini, kasus khusus di mana setiap karakter muncul paling banyak empat kali dapat dikurangi menjadi 2SAT.
Pembaruan: Masalah ini memiliki formulasi lain yang dapat membuat bukti kekerasan lebih mudah.
Pertimbangkan grafik G yang simpulnya adalah bilangan bulat 1 sampai n; identifikasi setiap sisi dengan interval nyata di antara titik akhir. Kami mengatakan bahwa dua tepi G bersarang jika satu interval dengan benar berisi yang lainnya. Misalnya, tepi (1,5) dan (2,3) bersarang, tetapi (1,3) dan (5,6) tidak, dan (1,5) dan (2,8) tidak. Pencocokan dalam G tidak bersarang jika tidak ada tepi yang bersarang. Apakah ada algoritma cepat untuk menentukan apakah G memiliki pencocokan sempurna non-bersarang, atau apakah itu masalah NP-keras?
Memisahkan string adalah sama dengan menemukan pencocokan sempurna yang tidak bersarang di dalam gabungan kelompok klik (dengan tepi antara karakter yang sama). Secara khusus, unshuffling string biner setara dengan menemukan pencocokan sempurna non-bersarang dalam penyatuan terpisah dari dua klik. Tetapi saya bahkan tidak tahu apakah masalah ini sulit untuk grafik umum, atau mudah untuk setiap kelas grafik yang menarik.
Ada algoritma polinomial-waktu yang mudah untuk menemukan kecocokan non- persimpangan yang sempurna .
Pembaruan (24 Jun 2013): Masalahnya terpecahkan! Sekarang ada dua bukti independen yang mengidentifikasi string persegi adalah NP-complete.
Pada November 2012, Sam Buss dan Michael Soltys mengumumkan pengurangan dari 3-partisi , yang menunjukkan bahwa masalahnya sulit bahkan untuk string lebih dari alfabet 9 karakter. Lihat "Mengosongkan Alun-Alun adalah NP-Hard ", Jurnal Ilmu Sistem Komputer 2014.
Pada Juni 2013, Romeo Rizzi dan Stéphane Vialette menerbitkan pengurangan dari masalah urutan umum terpanjang yang pernah ada . Lihat " Mengenali Kata-Kata Yang Kuadrat untuk Produk Acak ", Proc. Simposium Ilmu Komputer Internasional ke-8 di Rusia , Springer LNCS 7913, hlm. 235–245.
Ada juga bukti yang lebih sederhana bahwa menemukan pasangan sempurna yang tidak bersarang adalah NP-hard, karena Shuai Cheng Li dan Ming Li pada tahun 2009. Lihat " Pada dua masalah terbuka pola 2-interval ", Theoretical Computer Science 410 (24-25) ): 2410–2423, 2009.