Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:

Slides:



Advertisements
Presentazioni simili
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Advertisements

                      Insertion-Sort
Uso avanzato di C.
Stringhe di caratteri In linguaggio C.
PROGRAMMARE IN PASCAL (le basi)
Sviluppo di programmi strutturati
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Dipartimento di Matematica
Informatica Generale Marzia Buscemi
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
INFORMATICA Strutture iterative
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Mergesort1 if (n>1) /* la collezione contiene almeno due elementi. */ {1. Dividi la collezione in due di circa la metà degli elementi. 2. chiamata ricorsiva.
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.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
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 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Metodi numerici per equazioni lineari iperboliche Gabriella Puppo.
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Algoritmo SelectSort Invariante di ciclo: ad ogni passo
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
Programmazione in Java Claudia Raibulet
Biologia Computazionale - Algoritmi
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
La ricorsione.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Strutture di controllo
Prof.ssa Rossella Petreschi Lezione del 7 /01/ 2013 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 32 del testo Cormen,Leiserson,Rivest,
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Transcript della presentazione:

Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION: {1, 2, …, m} {0,1, 2, …, m-1} tale che PREFIX_FUNCTION(q) è la lunghezza k < q del massimo prefisso di P che è anche suffisso di P[1,q], dove P[1,q] è il prefisso di P lungo q caratteri Esempio (q = 8) P P[1,8] è il prefisso di P lungo 8 caratteri. La funzione PREFIX_FUNCTION dovrà restituire, per q=8, un valore pari a 3. Infatti il più lungo prefisso di P che è anche un suffisso di P[1,8] è la stringa acg composta da tre caratteri. NOTA: per q=1, PREFIX_FUNCTION vale sempre 0 in quanto il valore k deve essere minore di q per definizione. acgaaacggttac P[1,8]

Suggerimento Il calcolo della funzione PREFIX_FUNCTION può essere implementata in PERL Tramite una lista di m elementi. Lelemento nella generica posizione q (da 1 a m) conterrà il valore di PREFIX_FUNCTION(q) STEP INIZIALE: assegno valore 0 al primo elemento della lista (per la nota precedente) STEP DI ITERAZIONE: scorro P verso destra a partire dalla posizione 2 e, per ogni generico prefisso P[1, q] (q da 2 a m), calcolo il valore della funzione. Come calcolo il valore PREFIX_FUNCTION(q) per il prefisso P[1, q]? Quando mi trovo in posizione q, significa che ho già calcolato i valori che la funzione assume per le posizioni da 1 a (q-1). Si possono verificare a questo punto due casi diversi: - caso (a) P[q] = P[k+1], dove k = PREFIX_FUNCTION(q-1) acggaacggttac q-1 Esempio1 k

Come calcolo il valore della funzione per la generica posizione i? … cioè se il carattere in posizione q è uguale al carattere in posizione (k+1) (in azzurro nellesempio precedente), allora il valore di PREFIX_FUNCTION(q) sarà pari a k+1. - caso (b) P[q] diverso da P[k+1] cioè se il carattere in posizione q è diverso dal carattere in posizione (k+1) (in grassetto nellesempio precedente), allora si considera il valore k che PREFIX_FUNCTION assume in k. k è la lunghezza del più lungo prefisso di P che è anche suffisso di P[1, k] (questo per definizione). Ma per quanto visto prima, si ha quindi che P[1, k] è anche suffisso di P[1, q-1]. acggaacggttac q Esempio1 k+1 gtggagtggttac q-1 Esempio2 k

Come calcolo il valore della funzione per la generica posizione i? … gtggagtggttac i-1 Esempio2 k k A questo punto si può ricadere nuovamente nel caso (a) (cioè P[q] è uguale a P[k+1]) e allora il valore di PREFIX_FUNCTION(q) è k+1. Oppure si ripresenta il caso (b) e allora si considera il valore che PREFIX_FUNCTION assume in k, etc. Se andando avanti in questo modo si ricade sempre nel caso (b), ci si ferma quando il valore di PREFIX_FUNCTION, di volta in volta considerato, giunge a 0. In tale caso si ha che PREFIX_FUNCTION(i) è0.

Pseudocodice dellalgoritmo Compute_PREFIX_FUNCTION(P) m := length(P) Inizializzo una L lista m elementi L[1]:=0 k:=0 for i:=2 to m do while k > 0 and P[k+1] diverso da P[i] k:=L[k] if P[k+1] = P[i] then k:=k+1 L[i]:=k endfor