Conseguenza più comune


29

Una stringa ha sottosequenze, ma di solito non sono tutte distinte. Qual è la complessità di trovare la frequenza massima di qualsiasi sottosequenza?2n

Ad esempio, la stringa "sottosequenza" contiene 7 copie della sottosequenza "sue" e questo è il massimo.

Esempio di codice di forza bruta su http://ideone.com/UIp3t

Ci sono teoremi strutturali correlati? Entrambi si rivelano falsi :

  • la più lunga delle sottosequenze a frequenza massima è unica
  • la frequenza massima di qualsiasi sottosequenza di lunghezza è unimodale inkkk

Link eventualmente correlati:

Modifica 10 giorni dopo: grazie per dare un'occhiata! Mi ero domandato se questo potesse rendere un bel problema di contest di programmazione risolvibile in tempo polinomiale. Immagino di no, ma spero di ripensarci più tardi.


5
Una domanda iniziale forse ingenua: è chiaro che questo problema si trova anche in NP ? Vale a dire: per il problema di determinare se esiste una sottosequenza con almeno k ricorrenze in una stringa n -character, come sarebbe un certificato? Ad esempio, elencare tutte le tuple di indici che indicano che le istanze di una data sottosequenza non avrebbero dimensioni polinomiali per la stringa aaa ... aa (che, sebbene un input noioso, abbia comunque una sottostringa con approssimativamente occorrenze). nC(n/2)
Niel de Beaudrap il

7
@Niel de Beaudrap: Penso che possiamo contare il numero di occorrenze come sottosequenze nel tempo polinomiale mediante la programmazione dinamica, rendendo possibile usare la sottosequenza stessa come certificato.
Tsuyoshi Ito,

2
Sono un po 'confuso: è la domanda "data una stringa s, trova la sottosequenza che si verifica il numero massimo di volte?"
Suresh Venkat,

2
nn/2

2
@ marzio-de-biasi: la domanda a cui ti sei collegato è diversa (e molto più semplice): lì ti viene data la sottosequenza.
David,

Risposte:


4

da una ricerca, ecco un documento con alcune ricerche e risultati per la ricerca di livello universitario, ma (avvertimento) senza riferimenti. ha alcune euristiche, stime, risultati empirici e commenti sul problema e alcune idee su come dimostrare la sua (approssimazione) complessità ecc.

Identificazione delle conseguenze più frequenti
CSE 549 Relazione finale del progetto di biologia computazionale
Mikhail Bautin 2006

(Mentre ci sono alcuni problemi di sottosequenza standard che sono in qualche modo simili e studiati ad esempio nel documento Elzinga et al, è possibile che questo particolare problema di sottosequenza non sia stato studiato troppo?)


4
Non capisco perché questo sia stato sottoposto a downgrade. Potrebbe non essere un documento molto approfondito, ma sembra essere direttamente in tema.
David Eppstein,

fyi / addendum Bautin dice anche che alla fine del documento ha 5K righe di codice C ++ e Python sul problema / documento per chiunque sia interessato
vzn

@David, non credo che il downvote sia dovuto al documento collegato, probabilmente è più dovuto al fatto che questa risposta assomiglia (essenzialmente) a una risposta di collegamento a una riga (senza spiegare come il documento è correlato alla domanda e risponde). Questo potrebbe essere stato più appropriato come commento.
Kaveh,

1
ok kaveh, quindi, è stato spiegato: il documento sembra rivelare (a meno che qualcuno non riesca a trovare un riferimento migliore o fornire una prova di questo difficile problema da solo) che l'esatta complessità del problema è finora sconosciuta / aperta (oltre all'ovvio PSpace / ExpTime) e potrebbe contenere l'analisi / gli approcci più noti per risolverlo finora
vzn,

Ho trovato questo documento prima e mi scuso per non essermi collegato ad esso sopra, poiché non pensavo che fornisse molte informazioni concrete. Qualche tempo fa ho inviato all'autore un'e-mail chiedendo se ci fosse più qualcosa che potesse dire su ciò che è accaduto da quando è stato scritto, ma non ho ancora ricevuto risposta.
daveagp,

3

Non una risposta, solo un lemma.

Quindi prima di tutto ci si potrebbe chiedere quale sia la sottosequenza più comune di stringhe come 12..t12..t12..t ... Dopo un po 'di pensiero, ci si rende conto che deve anche avere la forma 12..t12..t12 .., ovviamente più corta. Se la stringa originale ha lunghezza nt e la sottosequenza di questa forma speciale ha lunghezza k, il numero delle sue occorrenze è esattamente . Ciò implica che la sottosequenza più comune termina anche con (cioè deve essere divisibile per ). Ma da dove viene questo massimo e quanto costa ??? Abbastanza imbarazzante, ma non sono riuscito a capirlo ...tkt(n+kk/tk)=(n+kk/tnk/t)tkt

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.