Algoritmi e Principi dell Informatica
|
|
|
- Leona Federica Bini
- 9 anni fa
- Просмотров:
Транскрипт
1 Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica teorica deve svolgere le parti a), b) e c) dell Esercizio 1 e l Esercizio 2 in 1h. Chi deve sostenere solo il modulo di Informatica 3 deve svolgere la parte d) dell esercizo 1 e l esercizio 3 in 1h e 30. Esercizio 1 (punti 12/30-esimi) Si consideri il seguente linguaggio: L 1 = { ab, abab, ababab,..., aabb, aabbaabb, aabbaabbaabb,,, a n b n, a n b n a n b n, a n b n a n b n a n b n,, } a) Fornire una specifica logica del linguaggio L 1. b) Sintetizzare un automa a potenza minima (tra FSA, PDA, TM) in grado di riconoscere L 1. c) Si consideri il linguaggio L 2 ={ a n b n } +. I linguaggi L 1 e L 2 sono equivalenti? d) Si valutino le seguenti complessità relative al riconoscimento di L 1 : 1. Complessità spaziale minima ottenibile mediante una macchina di Turing a k nastri 2. Complessità temporale minima ottenibile mediante una macchina di Turing a k nastri 3. Complessità spaziale minima ottenibile mediante una RAM, a criterio di costo logaritmico 4. Complessità temporale minima ottenibile mediante una RAM, a criterio di costo logaritmico Si giustifichino brevemente le risposte date
2 Esercizio 2 (punti 8/30-esimi) Si considerino le seguenti funzioni: (si rammenta che il simbolo y denota il massimo intero y e y il minimo intero y; y denota il valore assoluto di y; Z denota l insieme dei numeri interi.) f 1 : Z Z, f 1 (x) = e x f 2 : Z Z, f 2 (x) = e x f 3 : Z Z, f 3 (x) = x f 4 : Z Z, f 4 (x) = log ( x ) Siano poi T l insieme delle funzioni totali Z Z, e H {f: Z Z x(f(x) = 0)} Dire, giustificando la risposta, se sia decidibile il problema di stabilire se, dato un generico programma C o Java, esso computi una delle funzioni appartenenti all insieme F = {f 1, f 2, f 3, f 4 } T H Esercizio 3 (punti 10/30-esimi) Si abbiano due alberi rosso-neri, rispettivamente di cardinalità m e n, con m << n. Si definisca, mediante opportuno pseudocodice un algoritmo che costruisca una lista (monodirezionale) ordinata in ordine crescente contenente tutti e soli gli elementi appartenenti ad entrambi gli alberi, cercando di ottenerne la miglior complessità temporale possibile. Si valuti tale complessità in funzione dei due parametri m e n.
3 Tracce di Soluzioni Esercizio 1 a) Indichiamo con L(k) il sottolinguaggio { a k b k, a k b k a k b k, a k b k a k b k a k b k, } Specifica di L(k): x k (x L(k) x=a k b k y(y L(k) x= a k b k.y)) (si sottintende la definizione di w k per una generica stringa w e un generico intero k) Specifica di L 1 : x(x L 1 k(x L(k))) b) Il linguaggio non può essere riconosciuto da un automa a pila, in quanto richiede la capacità di ricontare lo stesso numero più volte. Una macchina di Turing che riconosce L 1 è definita come segue: c) Il linguaggio L 1 non è equivalente al linguaggio L 2, bensì ne è un sottoinsieme proprio. Un esempio di stringa di L 2 che non appartiene a L 1 è abaabb.
4 d.1) Una MT può riconoscere L 1 con complessità spaziale O(log(n)), n essendo la lunghezza della prima sequenza di a, e quindi della lunghezza dell intera stringa di ingresso. Essa può infatti memorizzare il valore di n in binario (ad esempio su due nastri); ad ogni successiva scansione di una serie di a o di b usa questo contatore decrementandolo di un unità per ogni carattere letto; al passaggio alla sequenza successiva lo risetta al valore originario (copiandolo dall altro nastro. d.2) La MT di cui al precedente punto d.1) ha una complessità O(m.log(n)), dove m è la lunghezza dell intera stringa. Un analisi più raffinata potrebbe evidenziare che ogni conteggio di n a o b può essere fatto in O(n) (perché l aggiornamento del contatore richiede: O(n log(n) h= 0 h ) = O(n) h 2 ); posto poi k = m/n sono necessarie k copiature di log(n) = log(m/k) bit; in ogni caso la complessità temporale totale sarebbe O(m). Una tale analisi è però superflua perché è sufficiente constatare che la semplice MT di cui al punto b) ha evidentemente complessità temporale (e spaziale) O(m). d.3 e d.4) Una RAM che riconosca L 1 deve necssariament memorizzare il valore di n in un contatore (meglio in due) e poi procedere in modo analogo alla precedente MT; ogni aggiornamento del contatore però costa alla RAM O(log(n)). Quindi nel caso pessimo la complessità spaziale è O(log(n)) e quella temporale O(m.log(m)) (quando n è O(m)). Esercizio 2 L insieme F è vuoto. Infatti l insieme immagine di f 1, f 2 e f 3 non contiene lo 0 (i loro valori sono tutti > 0) e f 4 non è totale. Quindi nessun algoritmo può computare una funzione di F e il problema posto è banalmente decidibile.
5 Esercizio 3 Uno schema di algoritmo per risolvere il problema posto è il seguente: Siano T m e T n rispettivamente i due alberi di cardinalità m e n; Si individui il massimo elemento di T m (Questa operazione, per un albero rosso-nero costa O(log(m))); Si verifichi se questo elemento si trova in T n (costo O(log(n))); o Se l elemento corrente si trova anche in T n lo si inserisca in testa alla lista, inizialmente vuota (costo O(1)); Si ripeta il ciclo precedente per tutti i successivi nodi di T m in ordine decrescente. Si noti che per fare ciò occorre tenere traccia del nodo esaminato nella precedente iterazione del ciclo: indicando con N tale nodo, occorre quindi individuare il nodo a valore massimo a sinistra di N (assumendo che i nodi a valore minore siano a sinistra), ricerca che può comunque essere eseguite in tempo O(log(m)). La complessità totale è quindi O(m.(log(m)+log(n))), che, essendo m < n è anche O(m.log(n)). Un altro algoritmo a complessità sostanzialmente equivalente potrebbe linearizzare T m in una lista ordinata in ordine crescente (a costo O(m)) e successivamente, per ogni lemento della lista verifcare se si trova in T n (costo (O(log(n)) e in caso negativo eliminarlo dalla lista con costo O(1). Si noti che la scelta di un tale algoritmo è giustificata dall ipotesi che m << n. In caso contrario, ad esempio se n ed m fossero sostanzialmente vicini, converrebbe linearizzare entrambi gli alberi in O(n) e poi calcolarne l intersezione sempre in O(n). Tuttavia, se, ad esempio, m fosse O(log(n)), una complessità O(log 2 (n)) sarebbe nettamente preferibile. Si noti anche che in caso di ripetizioni entrambi gli algoritmi manterrebbero nella lista risultante il numero di occorrenze in T m, non quello delle occorrenze in T n.
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 21 Febbraio 2013 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 3 ore. Chi deve sostenere solo il modulo di Informatica
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 1 Settembre 2016 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di
Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD
Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento
alla categoria di automi a minor potenza riconoscitiva possibile. }, dove k è un parametro.
Algoritmi e Prin Appello del 2 Settembre 20 Informatica 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica teorica deve svolgere gli Esercizi 1 e 2 in 1 ora e minuti. Chi deve sostenere
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 27 Settembre 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 3 ore. Chi deve sostenere solo il modulo di Informatica
Algoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 2 Marzo 2015 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di Informatica
Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza
Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere
Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004
Informatica Teorica Sezione Cremona + Como Appello del 20 Luglio 2004 Coloro che recuperano la I prova risolvano gli esercizi e 2 tra quelli indicati qui sotto entro un ora. Coloro che recuperano la II
Esercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI
ELEMENTI DI PROGRAMMAZIONE a.a. 22/3 MACCHINE, ALGORITMI, PROGRAMMI Andrea Prevete, UNINA2 23 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a stati finiti)... macchine di
Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE
ELEMENTI DI PROGRAMMAZIONE a.a. 23/4 UNA GERARCHIA DI MACCHINE Andrea Prevete, UNINA2 24 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a numero finito di stati)... macchine
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Introduzione alla programmazione Esercizi risolti
Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma
ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15
ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative.
Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro Definizione
Strutture dati per insiemi disgiunti
Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento
Introduzione ai grafi. Introduzione ai grafi p. 1/2
Introduzione ai grafi Introduzione ai grafi p. 1/2 Grafi Un grafo G é costituito da una coppia di insiemi (V,A) dove V é detto insieme dei nodi e A é detto insieme di archi ed é un sottinsieme di tutte
Algoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
Dati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap
Dati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap g Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca un albero ternario completo di altezza h come un albero con
Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.
E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare
Fondamenti di informatica Esercizi Svolti Macchine di Turing. Realizzati da: Roberto Quaranta Matr
Fondamenti di informatica Esercizi Svolti Macchine di Turing Realizzati da: Roberto Quaranta Matr. 449028 Macchina di Turing che calcola la funzione Max(x, y) Q= {q 0, q 1, q 2, q 3, q 4, q 5, q 6,q F
Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F
Macchina di Turing Nastro di Input...!!! a b b! b a! testina!!... s r s t q i Unità di Controllo q j Q S / D / F P Definizione Formale Una macchina di Turing deterministica è una sestupla
Sviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
Automi a stati finiti
Automi a stati finiti Definizioni preliminari Il modello: la definizione formale, esempi. Le definizioni utili per descrivere e provare proprietà degli automi: diagramma degli stati, configurazioni, relazione
Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen
Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di
Informatica Teorica. Macchine a registri
Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire
Fondamenti dell Informatica. Esercizi di preparazione al secondo compitino
Fondamenti dell Informatica (III anno Laurea Triennale) Esercizi di preparazione al secondo compitino a.a. 2016/17 Funzioni primitive ricorsive Si definiscano come primitive ricorsive le seguenti funzioni:
Quiz sui linguaggi regolari
Fondamenti dell Informatica 1 semestre Quiz sui linguaggi regolari Prof. Giorgio Gambosi a.a. 2016-2017 Problema 1: Data l espressione regolare a, definita su {a, b}, descrivere il linguaggio corrispondente
