Una mescolanza di due stringhe si forma intervallando i caratteri in una nuova stringa, mantenendo in ordine i caratteri di ciascuna stringa. Ad esempio, MISSISSIPPI
è un riordino di MISIPP
e SSISI
. Permettetemi di chiamare un quadrato di stringhe se è un riordino di due stringhe identiche. Ad esempio, ABCABDCD
è quadrato, perché è un riordino di ABCD
e ABCD
, ma la stringa ABCDDCBA
non è quadrata.
Esiste un algoritmo veloce per determinare se una stringa è quadrata o è NP-difficile? L'ovvio approccio di programmazione dinamica non sembra funzionare.
Anche i seguenti casi speciali sembrano essere difficili: (1) stringhe in cui ogni carattere appare al massimo quattro sei volte e (2) stringhe con solo due caratteri distinti. Come sottolineato da Austrin di seguito, il caso speciale in cui ogni personaggio si presenta al massimo quattro volte può essere ridotto a 2SAT.
Aggiornamento: questo problema ha un'altra formulazione che può rendere più semplice una prova di durezza.
Considera un grafico G i cui vertici sono gli interi da 1 a n; identificare ogni fronte con l'intervallo reale tra i suoi punti finali. Diciamo che due bordi di G sono nidificati se un intervallo contiene correttamente l'altro. Ad esempio, i bordi (1,5) e (2,3) sono nidificati, ma (1,3) e (5,6) non lo sono, e (1,5) e (2,8) non lo sono. Una corrispondenza in G non è nidificata se nessuna coppia di bordi è nidificata. Esiste un algoritmo rapido per determinare se G ha una corrispondenza perfetta non nidificata o è un problema NP-difficile?
Disordinare una stringa equivale a trovare una corrispondenza perfetta non nidificata in un'unione disgiunta di cricche (con bordi tra caratteri uguali). In particolare, riordinare una stringa binaria equivale a trovare una corrispondenza perfetta non nidificata in un'unione disgiunta di due cricche. Ma non so nemmeno se questo problema è difficile per i grafici generali o facile per qualsiasi classe di grafici interessante.
Esiste un semplice algoritmo a tempo polinomiale per trovare corrispondenze perfette non incrociate .
Aggiornamento (24 giugno 2013): il problema è stato risolto! Ora ci sono due prove indipendenti che identificano le stringhe quadrate è NP-completo.
Nel novembre 2012, Sam Buss e Michael Soltys hanno annunciato una riduzione da 3 partizioni , il che dimostra che il problema è difficile anche per le stringhe su un alfabeto di 9 caratteri. Vedi "Unshuffling a Square is NP-Hard ", Journal of Computer System Sciences 2014.
Nel giugno 2013, Romeo Rizzi e Stéphane Vialette hanno pubblicato una riduzione dal più lungo problema di sottosequenza comune . Vedere " Riconoscimento delle parole che sono quadrati per il prodotto casuale ", proc. 8 ° Simposio internazionale di informatica in Russia , Springer LNCS 7913, pagg. 235-245.
C'è anche una prova più semplice che trovare corrispondenze perfette non nidificate è NP-difficile, a causa di Shuai Cheng Li e Ming Li nel 2009. Vedi " Su due problemi aperti di schemi a 2 intervalli ", Theoretical Computer Science 410 (24–25 ): 2410-2423, 2009.