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
Dr. Marta Giorgetti Esercizi Calcolo combinatorio, spazio degli eventi, probabilità, indipendenza, teorema di Bayes.
Advertisements

Il problema della ricerca Algoritmi e Strutture Dati.
INDIVIDUARE PROPRIETÀ. TROVA 3 NUMERI DISPARI LA CUI SOMMA SIA 100 Se formalizziamo, tenendo conto di tutti i fattori 2k+1+2h+1+2j+1=100 Cioè 2(k+h+j+1)+1=100.
String c++.
PROGRAMMARE IN PASCAL (le basi)
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Lez. 131 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Rappresentazione.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
MATEMATICA FINANZIARIA
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Tail recursion: esempio
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Il problema della ricerca Algoritmi e Strutture Dati.
Il problema della ricerca Algoritmi e Strutture Dati.
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:
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.
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 (Mod. B)
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.
Programmazione in Java Claudia Raibulet
Biologia Computazionale - Algoritmi
Algoritmi di String Matching
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ò.
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.
Programmazione di Calcolatori
Introduzione ai linguaggi formali e alle stringhe
Problema .. modello .. esecutore
Strategie per il problem solving
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);
Tail recursion: esempio
ALGORITMI a.
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Array (ordinamento) CORDA – Informatica A. Ferrari.
La ricorsione.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
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.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Il problema della ricerca Algoritmi e Strutture Dati.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 L Maggio 2015 Marco D. Santambrogio – Gianluca Durelli -
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Riassunto della prima lezione
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
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.
Progetto di travi in c.a.p isostatiche
Elementi di teoria delle probabilità
Condizioni decisionali e costrutto if. 2 Operatori relazionali e logici = Maggiore, maggiore uguale ==, != Uguale a, diverso.
Albero genealogico. Si abbia un albero genealogico come nella figura sotto. Si supponga che i nomi propri delle persone siano tutti diversi, e quindi.
Laboratorio di Ingegneria del Software Laboratorio di Ingegneria del Software Primo Incontro Titolare Prof. Pierluigi Sanpietro.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Esercizi su stringhe e file 15 Stringhe e file.
Classe II a.s. 2010/2011 Prof.ssa Rita Schettino
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} cioé 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, il valore di PREFIX_FUNCTION è sempre 0, in quanto per definizione il valore k deve essere minore di q. acgaaacggttac P[1,8]

Suggerimento La funzione PREFIX_FUNCTION può essere implementata in PERL tramite una lista di m elementi, in cui lelemento q-esimo è la lunghezza k del più lungo prefisso di P che è anche suffisso di P[1,q] (tale che sia k < q). STEP INIZIALE: si assegna valore 0 al primo elemento della lista (vedere la nota nella slide precedente) STEP DI ITERAZIONE: si calcola il valore della funzione per tutti i prefissi P[1,q] per q che varia da 2 a m. A questo scopo, si tiene conto del fatto che, al momento del calcolo di PREFIX_FUNCTION per il generico prefisso di lunghezza q, i valori che la funzione assume per i prefissi precedenti (cioè da quello di lunghezza 1 a quello di lunghezza q-1) sono stati già calcolati. Sia k il valore che la funzione assume in q-1. Si possono verificare due situazioni: (1) Se il carattere di P in posizione q è uguale al carattere di P in posizione (k+1) (caratteri in grassetto), acggaacggttac q-1 k

allora il valore di PREFIX_FUNCTION in corripondenza di q sarà semplicemente dato da (k+1). (2) Se il carattere di P in posizione q è diverso dal carattere di P in posizione (k+1) (caratteri in grassetto), allora si considera il valore k che PREFIX_FUNCTION assume in k. Per definizione, k è la lunghezza del più lungo prefisso di P che è anche suffisso di P[1, k]. Ma poiché P[1,k] è suffisso di P[1,q-1], si ha quindi che P[1, k] è anche suffisso di P[1, q-1] (parti cerchiate nella figura successiva). acggaacggttac q k+1 gtggagtggttac q-1 k

k A questo punto, si può ricadere nel caso (1) in cui il carattere di P in posizione q è uguale al carattere di P in posizione (k+1) (caratteri in grassetto). In tale caso il valore di PREFIX_FUNCTION(q) sarà dato da k+1. gtggagtggttac q-1 k gtggagtggttac k k gtggagtggttac q k+1

In caso contrario, si considera il valore che PREFIX_FUNCTION assume in k riconsiderando quindi il caso (2). Ci si ferma non appena si ricade nel caso (1) oppure quando il valore k di volta in volta considerato nel caso (2) risulta essere 0 (in tale caso si ha che il valore di PREFIX_FUNCTION(q) è 0).