La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

RICONOSCIMENTO DI SEQUENZE DI EVENTI. Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo.

Presentazioni simili


Presentazione sul tema: "RICONOSCIMENTO DI SEQUENZE DI EVENTI. Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo."— Transcript della presentazione:

1 RICONOSCIMENTO DI SEQUENZE DI EVENTI

2 Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo dinput 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 dinput 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 linizio 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 Lidea è 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 lanalisi 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 Allinizio 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 STATO_INIZ START ALTRI CARATTERI S STATO_S

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 STATO_U U STATO_S STATO_INIZ START ALTRI CARATTERI S

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 lanalisi fino allesaurimento dei caratteri in input.

13 STATO_FIN START ALTRI CARATTERI S STATO_S STATO_U S U ALTRI CARATTERI N S STATO_INIZ

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 STATO_INIZ START ALTRI CARATTERI S STATO_S STATO_U S U ALTRI CARATTERI S N : PAROLA RICONOSCIUTA

16 Si considera questultimo caso, in modo che lalgoritmo tratti correttamente situazioni come...SUNSUN..., identificando due occorrenze della stringa SUN. Nella realizzazione dellalgoritmo, 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.


Scaricare ppt "RICONOSCIMENTO DI SEQUENZE DI EVENTI. Il problema Realizzare un algoritmo per identificare in una sequenza di caratteri provenienti da un dispositivo."

Presentazioni simili


Annunci Google