Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014

Documenti analoghi
Algoritmi e Principi dell Informatica

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Alberi binari di ricerca

Alberi ed Alberi Binari

Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004

Algoritmi e Principi dell Informatica

Note per la Lezione 4 Ugo Vaccaro

Alberi Binari di Ricerca

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Esercizi Capitolo 6 - Alberi binari di ricerca

Algoritmi e Principi dell Informatica

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Alberi binari e alberi binari di ricerca

Pumping lemma per i linguaggi Context-free

Alberi e alberi binari I Un albero è un caso particolare di grafo

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)

alberi binari e ricorsione

TRIE (albero digitale di ricerca)

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Problemi, istanze, soluzioni

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

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Linguaggi e Grammatiche Liberi da Contesto

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Macchine di Turing: somma di due numeri

Parole note, nuovi significati: linguaggio, determinismo e infinito

Esercizio su MT. Svolgimento

Esempio: rappresentare gli insiemi

Algoritmi e Strutture Dati. HeapSort

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Heap e code di priorità

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Le Macchine di Turing

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Definizione di Grammatica

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Esercizi proposti 10

Esercizi di Algoritmi e Strutture Dati

Strutture di accesso ai dati: B + -tree

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Tracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni

Esercitazioni di Algoritmi e Strutture Dati

Progettazione di algoritmi

Esercizi di Algoritmi e Strutture Dati

Tipologie di macchine di Turing

Algoritmi e Strutture Dati - Prof. Roberto De Prisco A.A Seconda prova di verifica (4 Febbraio 2005)

alberi tipo astratto, implementazione, algoritmi

Algoritmi e Strutture Dati

Esercitazione 6. Alberi binari di ricerca

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

Cammini minimi fra tutte le coppie

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Elementi di Informatica e Programmazione

Alberto Montresor Università di Trento

Alberi di ricerca binari

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

ITLCC 2006/10/6 19:09 page 7 #3

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

STRUTTURE NON LINEARI

lezione 9 min-heap binario Heap e Alberi posizionali generali

Implementazione dei timer ad alta risoluzione nel kernel Linux

Progettazione di Algoritmi

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Algoritmi e Strutture Dati

Varianti Macchine di Turing

Alberi binari di ricerca

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Espressioni regolari

Intelligenza Artificiale. Ricerca euristica Algoritmo A*

I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E

In questa lezione Strutture dati elementari: Pila Coda

Prima prova intercorso 29 Novembre 2005

Le macchine di Turing

Esercizi per il corso di Algoritmi e Strutture Dati

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di

Teoria della Complessità Computazionale. Accettazione/riconoscimento di linguaggi in tempo/spazio

AUTOMI A PILA. M.P. Schutzenberger

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Problema del cammino minimo

Linguaggi Regolari e Linguaggi Liberi

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

Ingegneria degli Algoritmi (II parte pratica)

La macchina universale

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

Aniello Murano Automi e Pushdown

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Laurea Specialistica in Informatica - Università di Ferrara [1]

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Informatica Teorica. Macchine a registri

Transcript:

Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014 Nome..Cognome.Matr. Laureando Avvisi importanti Il tempo a disposizione è di 1 ora e 30 minuti. Se non verranno risolti in maniera soddisfacente gli esercizi 1 e 2, (ottenendo almeno 6 punti in totale tra i due) non si procederà alla correzione degli altri esercizi; l esercizio facoltativo 4, sarà valutato solo se si saranno ottenuti almeno 13 punti nei primi 3. Esercizio 1 (punti 4/15-esimi) Si consideri un albero binario in cui ogni nodo o sia una foglia o abbia entrambi i figli. Quali sono l altezza minima e massima di un tale albero con n nodi? NB: si richiede il valore preciso della funzione di n, non basta l ordine di grandezza!

Esercizio 2 (punti 3/15-esimi) E noto che esistono linguaggi riconoscibili in tempo lineare da automi a pila deterministici e da macchine di Turing a k nastri ma non da macchine di Turing a nastro singolo. Esistono anche linguaggi regolari non riconoscibili in tempo lineare da macchine di Turing a nastro singolo? Giustificare brevemente la risposta.

Esercizio 3 (punti 8/15-esimi) - Si descriva un algoritmo che, dato un BST (Binary Search Tree) stabilisca se esso possa essere colorato in modo tale da diventare un albero rosso-nero (RB). NB: non si chiede di costruire un algoritmo di colorazione, ma solo di stabilire se ciò sia possibile. Si ricordi inoltre che per convenzione in un albero RB tutte le foglie sono NIL, T.NIL per la precisione, e nere. - Si valuti la complessità temporale dell algoritmo.

Esercizio 4, facoltativo (punti 3/15) Si formalizzi la seguente definizione informale di complessità spaziale di una macchina di Turing a nastro bidimensionale: Il nastro della macchina è costituito dal primo quadrante di un piano cartesiano a coordinate intere. La complessità spaziale è data dal numero di celle del nastro visitate dalla testina della macchina durante il suo funzionamento; al solito, essa è espressa come funzione della lunghezza della stringa (lineare) di ingresso.

Tracce di soluzioni Esercizio 1 L altezza massima si ha quando ogni nodo interno ha una foglia come figlio sinistro (o analogamente destro), tranne l ultimo i cui figli sono entrambi foglia. In tal caso, detti h l altezza dell albero, (definita come il cammino di lunghezza massima, intesa come il numero di archi del cammino, tra la radice e le foglie) e n il numero di nodi, si ha n = 2.h + 1; quindi n 1 h = 2 L altezza minima si ha invece quando l albero è bilanciato e completo, ossia = - 1; quindi. Esercizio 2 NO: una MT a nastro singolo, una volta posizionata all inizio delle stringa di ingresso può comportarsi esattamente come un automa a stati finiti, usando il proprio organo di controllo. Siccome un automa a stati finiti esegue sempre uno spostamento a destra della testina di lettura per ogni mossa, la stessa cosa può fare la MT senza dover utilizzare altre porzioni del nastro. Esercizio 3 Una condizione necessaria e sufficiente perché un BST possa essere colorato in modo da diventare un albero rosso-nero è che, nell intero albero e in ogni suo sottoalbero il rapporto tra le lunghezze minime e massime dei cammini che dalla radice raggiungono le foglie non superi mai 2. Infatti in tal caso sarà sempre possibile colorare i nodi in modo da evitare due nodi rossi consecutivi sullo stesso cammino e l altezza di ogni sottoalbero sarà comunque Θ(log(n)). Un semplice algoritmo ricorsivo potrebbe quindi: - visitare l albero, ad esempio in preordine sinistro, - e calcolare, per ogni nodo, la lunghezza dei cammini minimo e massimo da esso alle foglie (min = min(leftson.min, rightson.min) +1; max = max(leftson.max, rightson.max) +1; min e max dei nodi foglia sono ovviamente 0). - non appena max/min >2 l algoritmo ritorna FALSE; se giunge fino alla radice con max/min <= 2, ritorna TRUE. Si noti però che, rispetto a un normale BST in un albero rosso-nero le foglie sono tutte NIL (T.NIL per la precisione) e hanno convenzionalmente altezza (nera) = 0; ogni nodo interno ha quindi entrambi i figli. L algoritmo ha evidentemente complessità Θ(n). Esercizio 4 Una possibile definizione formale della complessità spaziale richiesta può essere fornita nel modo seguente: In primo luogo occorre formalizzare il concetto di configurazione: c = <q, x, contenuto: N N A, <i,j>, h> dove q rappresenta lo stato dell organo di controllo, x la stringa in ingresso, contenuto indica il simbolo contenuto in ogni cella del nastro (con l usuale vincolo che solo un numero finito di celle sia diverso da blank), <i,j> indica la posizione della testina del nastro di memoria e h quella del nastro di ingresso. La transizione tra configurazioni è poi definita nel modo tradizionale.

La complessità spaziale di M è allora espressa dalla funzione: S M (n) = max x = n {<i,j> c <i,j> c c 0 = <q 0, x, [contenuto(0, 0) = Z 0, contenuto(i, j) = blank <i,j> <0,0>], <0,0>, 0] ---* c} Ossia la massima cardinalità, rispetto a tutte le stringhe di lunghezza n, dell insieme delle coordinate delle posizioni della testina di memoria raggiunte durante il funzionamento della macchina a partire dalla configurazione iniziale.