Esercizio 3 Data una stringa P (pattern) di lunghezza m e una stringa T (testo) di lunghezza n, definite su di un alfabeto, modificare il programma dellesercizio.

Slides:



Advertisements
Presentazioni simili
Calcolo di valori approssimati delle radici
Advertisements

Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
String c++.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Informatica Generale Marzia Buscemi
Fondamenti di Informatica CDL in Ingegneria Gestionale (B)- A.A CDL in Ingegneria Gestionale (B)- A.A Programmazione Ricorsiva.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
RICONOSCIMENTO DI SEQUENZE DI EVENTI
TERNE PITAGORICHE Obiettivi dell’esercitazione
The Knuth-Morris-Pratt Algorithm
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
Algoritmi Politecnico di Milano
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: 18 Aprile 2013 Gianluca Durelli – Marco D. Santambrogio –
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Cammini minimi Algoritmo SPT.Acyclic
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
Algoritmi e strutture dati
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Vettori e Funzioni 3 Maggio Esercizio 1 Si scriva un programma in linguaggio C che, dopo aver acquisito il contenuto di un vettore di interi da.
BREAK EVEN ANALISYS.
RAPPRESENTAZIONE DELL’INFORMAZIONE
Biologia Computazionale - Algoritmi
RAPPRESENTAZIONE DELL'INFORMAZIONE
“Il piano cartesiano e la retta”
Algoritmi di String Matching
Linguaggi e Modelli Computazionali LS - Prof E.Denti
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Antonio Cisternino La Macchina di Turing.
BIOINFO3 - Lezione 24 ARRAY
Un esempio: Calcolo della potenza n-esima di un numero reale
Programmazione di Calcolatori
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
BIOINFO3 - Lezione 291 PATTERN MATCHING Imparato cosa sono e come si usano le espressioni regolari per individuare dei pattern, vediamo come si usano in.
BIOINFO3 - Lezione 251 ARRAY ASSOCIATIVI E possibile assegnare tutti gli elementi dellarray con ununica istruzione %anni=(Marco,30,Luigi,33,Anna,28,Chiara,25);
Alberi binari Definizione della struttura dati: struct tree { };
Funzioni per il trattamento delle stringhe
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Espressioni regolari (cenni)
Le funzioni in Excel. La funzione conta,numeri La funzione conta.numeri calcola il numero di celle che contengono un valore numerico all’interno di un.
La scomposizione col metodo di Ruffini
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Informatica e Informatica di Base
Lezione 01 Writer: I Dati inserimento e modifica.
La densità come funzione di punto un esercizio sulla determinazione del centro di massa di una bacchetta sottile rigida.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 L Aprile 2015 Marco D. Santambrogio – Gianluca Durelli -
GLI ALGORITMI DI ORDINAMENTO
Strutture di controllo
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
La numerazione ottale. Il sistema di numerazione ottale ha ampio utilizzo in informatica E’ un sistema di numerazione posizionale La base è 8 Il sistema.
Albero genealogico. Si abbia un albero genealogico come nella figura sotto. Si supponga che i nomi propri delle persone siano tutti diversi, e quindi.
UNIVERSITA’ FEDERICO II° NAPOLI LA STRUTTURA DEI COSTI E DEI RICAVI DELLE IMPRESE LA CLASSIFICAZIONE DEI COSTI COSTI FISSI COSTI VARIABILI COSTI DIRETTI.
10. Programmazione Ricorsiva Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Prof.ssa Rossella Petreschi Lezione del 7 /01/ 2013 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 32 del testo Cormen,Leiserson,Rivest,
Esercizi.
Transcript della presentazione:

Esercizio 3 Data una stringa P (pattern) di lunghezza m e una stringa T (testo) di lunghezza n, definite su di un alfabeto, modificare il programma dellesercizio 1 cercando di sfruttare in maniera efficiente la funzione LAST_OCCURRENCE calcolata per il pattern P (esercizio 2). Incrementare un contatore C ogni volta che viene effettuato un confronto tra caratteri di P e di T, e stampare C alla fine. Esempi di suggerimento Esempio 1: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg Esiste un mismatch tra il carattere t su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricavo che loccorrenza di t più a destra è in posizione 2 (in azzurro). Quindi è certo che tra t (in azzurro) e a di mismatch non esistono su P altri caratteri t. Di conseguenza posso addirittura shiftare P verso destra di 3 (=5-2) posizioni (e non di una sola, come avrebbe fatto lalgoritmo ingenuo dellesercizio 1) mismatch!

Esempio 1: SHIFT di P verso destra di 3 (=5-2) posizioni i=i+3 prima dello shift di 3 posizioni T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg i=i+3 T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg shift di 3 posizioni verso destra

Esempio 2: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagcacgtggatagcggggggatac P acaaaacg Esiste un mismatch tra il carattere c su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricavo che loccorrenza di c più a destra è in posizione 7 (in azzurro). Dal momento che c in azzurro sta a destra di a di mismatch, non sono in grado di affermare per certo se a sinistra di a esistono (e dove) altri caratteri c. In tale caso non posso fare altro che shiftare P verso destra di una sola posizione (come avrebbe fatto lalgoritmo ingenuo) se non voglio correre il rischio di perdere occorrenze di P su T. mismatch!

Esempio 3: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg Esiste un mismatch tra il carattere t su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricaverò che t non occorre in P (tale funzione restituirà infatti 0). In questo caso posso addirittura shiftare P verso destra di 5 (=5-0) posizioni senza correre il rischio di perdere occorrenze di P su T. mismatch!

Esempio 3: SHIFT di P verso destra di 5 (=5-0) posizioni i=i+5 prima dello shift di 5 posizioni T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg i=i+5 T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg shift di 5 posizioni verso destra