1 / 19

RICONOSCIMENTO DI SEQUENZE DI EVENTI

RICONOSCIMENTO DI SEQUENZE DI EVENTI. Il problema. Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo d’input e di lunghezza non nota a priori la parola SUN, in qualunque contesto si trovi. Una soluzione.

jaxon
Télécharger la présentation

RICONOSCIMENTO DI SEQUENZE DI EVENTI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RICONOSCIMENTO DISEQUENZE DI EVENTI

  2. Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo d’input e di lunghezza non nota a priori la parola SUN, in qualunque contesto si trovi.

  3. Una soluzione Il problema potrebbe essere ricondotto al riconoscimento di stringhe: • si memorizza in un vettore di caratteri una parte della sequenza d’input e poi, • a partire dalla prima posizione del vettore, si effettua il confronto tra una sottostringa lunga 3 caratteri e la parola di riferimento (SUN).

  4. Se sono uguali si dichiara di aver trovato la parola cercata. • Si procede così di seguito, avanzando ogni volta di una posizione, finché ci sono abbastanza caratteri nel vettore. • Esauriti i caratteri del vettore di supporto, se ne caricano altri dal dispositivo di input.

  5. Prima però si devono trasferire in testa al vettore gli ultimi due caratteri della sequenza precedente: potrebbero infatti contenere l’inizio della parola. Si preferisce adottare un altro approccio, comune a tutti i casi in cui occorre riconoscere sequenze di eventi.

  6. La macchina a stati • L’idea è quella di analizzare un elemento per volta (in questo caso, un carattere per volta) e di memorizzare in una apposita variabile, denominata stato_corrente, la condizione in cui ci si trova. • Si svolge l’analisi di quanto può succedere aiutandosi con un disegno (diagramma a stati o pallogramma) e con una sequenza di caratteri qualsiasi, ideata in modo da contemplare tutti i casi possibili, come la seguente:

  7. “QUESTO E’ UN TESTO DI COLLAUDO, CONTIENE SUN MA ANCHE SU E SSUN E ANCORA SUSUN NONCHE’ SUNSUN, CIOE’ DUE STRINGHE SUN CONSECUTIVE”.

  8. All’inizio si suppone di essere in uno stato chiamato stato_iniz, e si analizzano i caratteri uno per volta, man mano che arrivano. • Fin quando si ricevono caratteri diversi da ‘S’, si resta nello stesso stato stato_iniz. • Quando arriva il carattere ‘S’, si passa ad un nuovo stato chiamato stato_s.

  9. ALTRI CARATTERI ‘S’ START STATO_S STATO_INIZ

  10. In stato_s, si verifica se arriva il carattere ‘U’, nel qual caso si passa allo stato stato_u. • Se il carattere che arriva non è ‘U’, controllo che non sia ‘S’, nel qual caso si resta in stato_s (ci si trova in una situazione del tipo ...SSUN...). • In tutti gli altri casi si è trattato di un falso allarme e si torna a stato_iniz.

  11. ‘S’ ALTRI CARATTERI ‘S’ ‘U’ START STATO_INIZ STATO_S STATO_U ALTRI CARATTERI

  12. In stato_u, se arriva ‘N’, si va in stato_fin, in cui si dichiara di aver riconosciuto la parola SUN; • se invece arriva ‘S’, si torna in stato_s (situazione del tipo ...SUSUN...), • mentre in tutti gli altri casi si torna a stato_iniz e si continua l’analisi fino all’esaurimento dei caratteri in input.

  13. ALTRI CARATTERI ‘S’ ‘S’ ‘U’ ‘N’ START STATO_S STATO_FIN STATO_U STATO_INIZ ‘S’ ALTRI CARATTERI ALTRI CARATTERI

  14. Se interessa riconoscere la parola SUN una sola volta, quando si raggiunge stato_fin si termina; • altrimenti si fa coincidere stato_fin con stato_iniz e si continua.

  15. ALTRI CARATTERI ‘S’ ‘S’ ‘U’ START STATO_S STATO_INIZ STATO_U ‘S’ ALTRI CARATTERI ALTRI CARATTERI ‘N’ : PAROLA RICONOSCIUTA

  16. Si considera quest’ultimo caso, in modo che l’algoritmo tratti correttamente situazioni come ...SUNSUN..., identificando due occorrenze della stringa SUN. • Nella realizzazione dell’algoritmo, si utilizza il costrutto switch (o, in alcuni linguaggi, il costrutto case) in sostituzione della cascata di if necessaria per analizzare il contenuto di stato_corrente.

  17. Algoritmo • Pongo il valore STATO_INIZ in stato_corrente • Finché ci sono caratteri • leggo un carattere in carat • switch su stato_corrente • caso STATO_INIZ: se carat = ‘S’ • pongo il valore STATO_S in stato_corrente

  18. caso STATO_S: se carat = ‘U’ • pongo il valore STATO_U in stato_corrente • altrimenti • se carat’S’ • pongo il valore STATO_INIZ in stato_corrente

  19. caso STATO_U: se carat = ‘N’ • visualizzo “Parola riconosciuta” • pongo il valore STATO_INIZ in stato_corrente • altrimenti • se carat = ‘S’ • pongo il valore STATO_S in stato_corrente • altrimenti • pongo il valore STATO_INIZ in stato_corrente • Fine.

More Related