Ho bisogno di trovare un algoritmo di programmazione dinamica per risolvere questo problema. Ho provato ma non riuscivo a capirlo. Ecco il problema:Dividere una stringa in una stringa di parole valide utilizzando la programmazione dinamica
Ti viene assegnata una stringa di n caratteri s [1 ... n], che ritieni essere un documento di testo corrotto in cui tutti i segni di punteggiatura sono scomparsi (in modo che assomigli a "itwasthebestoftimes ... "). Desiderate ricostruire il documento usando un dizionario, che è disponibile sotto forma di una funzione booleana dict (*) tale che, per ogni stringa w, dict (w) ha valore 1 se w è una parola valida e ha valore 0 altrimenti.
- Fornire un algoritmo di programmazione dinamica che determina se la stringa s [*] può essere ricostituita come una sequenza di parole valide. Il tempo di esecuzione dovrebbe essere al massimo O (n^2), assumendo che ogni chiamata a dettare richiede tempo unitario.
- Nel caso in cui la stringa sia valida, fai in modo che l'algoritmo generi la sequenza di parole corrispondente.
Bene, si tratta di un esercizio da un libro di testo. Non ho le soluzioni per gli esercizi e non sono sicuro di come risolvere questo problema. – Pet
Prima cosa che mi viene in mente: ambiguità. Supponiamo che il tuo dizionario abbia parole "era", "lei" e "lavatore". Puoi solo preferire le parole più corte, però. Aspetta, no ... puoi tagliare parte dalla parola e rendere la stringa non valida - come prendere 'auto' da 'automatico'. – alxx
Hai provato a cercare prima la risposta? Ci sono già alcune domande su questo problema su SO: http://stackoverflow.com/questions/4755157/split-string-into-words, http://stackoverflow.com/questions/3553958/tokenize-valid-words-from -a-long-string, http://stackoverflow.com/questions/3466972/how-to-split-a-string-into-words-ex-stringintowords-string-into-words. Alcuni di loro menzionano soluzioni di programmazione dinamica. – hoha