- Teoria della Computazione
- Introduzione
Syllabus del corso
Obiettivi
L'insegnamento di Teoria della Computazione ha l'obiettivo fondamentale di far acquisire allo studente gli strumenti teorici che permettono di comprendere la complessità computazionale dei problemi, come sono classificati in base alla loro complessità e quali sono le metodologie per risolverli, in modo esatto o con performance di approssimazione dimostrabili. Introduce anche metodologie algoritimiche e strutture dati avanzate per affrontare problemi fondamentali su testi di grandi dimensione.
Più in dettaglio gli obiettivi sono:
- Comprendere concetti fondamentali del principale modello di calcolo (Macchina di Turing) e delle sue varianti.
- Comprendere quali problemi possono essere risolti da un computer (decidibilità) e quali non possono essere risolti in un tempo ragionevole (intrattabilità).
- Imparare come un problema può essere ridotto ad un altro per dimostrare la complessità relativa dei problemi.
- Imparare a classificare i problemi in base alla loro complessità computazionale (ad esempio, P, NP, NP-completi).
- Comprendere gli algoritmi di approssimazione, cioè algoritmi che ottengono in tempi ragionevoli una soluzione dimostrabilmente vicina all'ottimo per problemi intrattabili in modo esatto.
- Comprendere gli algoritmi parametrici, cioè algoritmi che permettono di affrontare in modo esatto alcuni problemi intrattabili limitando la crescita esponenziale dei tempi di calcolo dei loro algoritmi risolutivi a un parametro dell'istanza che risulta essere di valore limitato in casi pratici.
L'insegnamento ha anche lo scopo di introdurre lo studente alle basi teoriche e alle applicazioni pratiche di:
- ricerca esatta e approssimata di stringhe
- strutture dati per l'indicizzazione di stringhe
Contenuti sintetici
Nozioni di base di teoria della computazione: macchine di Turing, decidibilità e intrattabilità dei problemi computazionali. Riduzioni tra problemi computazionaii e classificazione dei problemi in funzione della complessità computazionale. Complessità di approssimazione e parametrica. Algoritmi di string matching esatto e approssimato. Strutture di indicizzazione.
Programma esteso
- Nozioni di base di teoria della computazione:
- Il modello di calcolo della macchina di Turing e equivalenza con le sue varianti principali (macchine multinastro, alfabeto non binario, macchine non deterministiche)
- Relazioni tra linguaggi formali e problemi computazionali
- Limiti di computabilità: indecidibilità dell'Halting Problem
- Trattabilità e intrattabilità, cioè classificazione dei problemi in funzione della complessità computazionale:
- Decidibilità in tempo polinomiale su macchine deterministiche (P, coP) e su macchine non deterministiche (NP, coNP)
- Equivalenza di decidibilità non deterministica in tempo polinomiale e verificabilità deterministica in tempo polinomiale
- Riduzioni polinomiali fra problemi di decisione
- NP-completezza del problema di Soddisfacibilità (SAT)
- Dimostrazioni di NP-hardness e NP-completezza
- Complessità di approssimazione
- Algoritmi parametrici
- Algoritmi di string matching esatto
- Automa a stati finiti
- Algoritmo di Knuth-Morris-Pratt
- Algoritmo basato su paradigma shift-and
- Algoritmi di string matching approssimato
- Algoritmo basato su paradigma shift-and
- Strutture di indicizzazione di testi
- Suffix Array
- Burrows-Wheeler Transform
- FM-index
Prerequisiti
Nozioni di base di linguaggi formali. Nozioni di base di algoritmi e strutture dati.
Modalità didattica
Lezioni ed esercitazioni in aula.
Tutte le attività sono tenute in presenza e non vengono registrate né trasmesse in streaming.
L'insegnamento viene erogato in Italiano.
Le attività previste sono 27 lezioni da 2 ore svolte in modalità erogativa nella parte iniziale ed in modalità interattiva nella parte successiva.
Materiale didattico
Dispense e slides del docente.
Libro: Sipser, Michael. Introduzione alla teoria della computazione.
Periodo di erogazione dell'insegnamento
Primo semestre.
Modalità di verifica del profitto e valutazione
La verifica dell'apprendimento consiste di una prova scritta.
La prova scritta è basata su domande a risposta aperta relative alle nozioni e tecniche presentate nel corso e su esercizi che richiedono l'applicazione delle nozioni e delle tecniche suddette.
La prova scritta viene valutata in base alla correttezza e completezza delle risposte.
Sono previste due prove scritte in itinere.
Orario di ricevimento
Il ricevimento è su appuntamento da concordare con i docenti.
Aims
The course of Theory of Computation aims to provide students with the theoretical tools to understand the computational complexity of problems, how they are classified based on their complexity, and the methodologies to solve them, either exactly or with demonstrable approximation performance. It also introduces algorithmic methodologies and advanced data structures to tackle fundamental problems on large texts.
In more detail, the objectives are:
- To understand the fundamental concepts of the main model of computation (Turing Machine) and its variants.
- To understand which problems can be solved by a computer (decidability) and which cannot be solved in a reasonable time (intractability).
- To learn how a problem can be reduced to another to demonstrate the relative complexity of problems.
- To learn to classify problems based on their computational complexity (e.g., P, NP, NP-complete).
- To understand approximation algorithms, i.e., algorithms that obtain a solution demonstrably close to the optimum in reasonable time for problems that are intractable to solve exactly.
- To understand parameterized algorithms, i.e., algorithms that allow exact solutions to some intractable problems by limiting the exponential growth of their solving algorithms' computation time to a parameter of the instance that is of limited value in practical cases.
The course also aims to introduce the student to the theoretical foundations and practical applications of:
- Exact and approximate string matching
- Data structures for string indexing
Contents
Basic concepts of theory of computation: Turing machines, decidability, and intractability of computational problems. Reductions between computational problems and classification of problems based on computational complexity. Approximation and parametric complexity. String matching algorithms. Indexing structures.
Detailed program
- Basic concepts of theory of computation:
- The Turing Machine model of computation and its equivalence with its main variants (multitape machines, non-binary alphabet, nondeterministic machines)
- Relationships between formal languages and computational problems
- Limits of computability: undecidability of the Halting Problem
- Tractability and intractability, i.e., classification of problems based on computational complexity:
- Decidability in polynomial time on deterministic machines (P, coP) and on nondeterministic machines (NP, coNP)
- Equivalence of nondeterministic polynomial-time decidability and deterministic polynomial-time verifiability
- Polynomial reductions between decision problems
- NP-completeness of the Satisfiability Problem (SAT)
- Proofs of NP-hardness and NP-completeness
- Approximation complexity
- Parameterized algorithms
- Exact string matching algorithms
- Finite state automaton
- Knuth-Morris-Pratt algorithm
- Algorithm based on the shift-and paradigm
- Approximate string matching algorithms
- Algorithm based on the shift-and paradigm
- Text indexing structures
- Suffix Array
- Burrows-Wheeler Transform
- FM-index
Prerequisites
Basic concepts of formal languages. Basic concepts of algorithms and data structures.
Teaching form
Lectures and classroom exercises.
All activities are conducted in person and are not recorded or streamed.
Teaching is delivered in Italian.
There are 27 lectures of 2 hours each, conducted in a lecturing format initially and then in an interactive format.
Textbook and teaching resource
Slides and written notes.
Book: Sipser, Michael. Introduction to theory of computation.
Semester
First semester.
Assessment method
The assessment of learning consists of a written exam.
The written exam is based on open-ended questions related to the concepts and techniques presented in the course, as well as exercises requiring the application of the learnt concepts and techniques.
The written exam is evaluated based on the correctness and completeness of the answers.
Two mid-term written exams are scheduled.
Office hours
Office hours are by appointment to be arranged with the instructors.