Sei sulla pagina 1di 32

Prof.

Mario Sicuranza

INGEGNERIA MECCANICA E INGEGNERIA AEROSPAZIALE

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II


SCUOLA POLITECNICA E DELLE SCIENZE DI BASE
Lezione 9 12 aprile 2018
 È un particolare automa per il quale sono definiti:
 l’insieme degli ingressi e delle uscite come insiemi di simboli
 un particolare meccanismo di lettura e scrittura delle informazioni

 Composto da una testina di scrittura/lettura su nastro bidirezionale


potenzialmente illimitato

 È un modello:
 Permette di raggiungere risultati teorici sulla calcolabilità e sulla complessità degli
algoritmi

Prof. Mario Sicuranza – Elementi di Informatica 3


 La macchina si compone di:
 una memoria costituita da un nastro di dimensione infinita diviso in celle
▪ ogni cella contiene un simbolo oppure è vuota
 una testina di lettura/scrittura posizionabile sulle celle del nastro
 un dispositivo di controllo che, per ogni coppia (stato, simbolo letto),
determina il cambiamento di stato ed esegue un’azione elaborativa

Esempio di Macchina di Turing

Prof. Mario Sicuranza – Elementi di Informatica 4


 Definita dalla quintupla (A, S, fm, fs, fd)

 A è l’insieme finito dei simboli di ingresso e uscita

 S è l’insieme finito degli stati (di cui uno è quello di terminazione)

 fm è la funzione di macchina A × S → A

 fs è la funzione di stato A × S → S

 fd è la funzione di direzione A × S → D = {Sinistra, Destra, Nessuna}

Prof. Mario Sicuranza – Elementi di Informatica 5


 La macchina è capace di:
 leggere un simbolo dal nastro
 scrivere sul nastro il simbolo specificato dalla funzione di macchina
 transitare in un nuovo stato interno specificato dalla funzione di stato
 spostarsi sul nastro di una posizione nella direzione indicata dalla funzione di
direzione

 La macchina si ferma quando raggiunge lo stato di terminazione

Prof. Mario Sicuranza – Elementi di Informatica 6


 Una macchina di Turing rappresenta l’algoritmo per l’elaborazioneY=F(X) se
 si arresta in una configurazione (stato) finale
 trasforma un nastro t in uno t’
▪ X eY sono codificati rispettivamente in t e t’

 Macchina Universale  macchina di Turing la cui parte di controllo è capace


di leggere da un nastro anche la descrizione dell’algoritmo
 Simula il lavoro compiuto da una qualsiasi altra macchina

 La macchina di Turing Universale è l’interprete di un linguaggio


 Leggere dal nastro la descrizione dell’algoritmo richiede di saper interpretare il
linguaggio con il quale esso è stato descritto

Prof. Mario Sicuranza – Elementi di Informatica 7


 La macchina di Turing (assieme ai formalismi ad essi equivalenti)
rappresenta lo strumento più potente per modellare una computazione
meccanica
 Ogni algoritmo codificabile mediante macchina di Turing è ciò che è eseguibile
da una macchina di Turing
 Problema non risolubile algoritmicamente se nessuna macchina di Turing è
in grado di fornire soluzione in tempo finito
 Per problemi irrisolvibili mediante macchina di Turing non esistono algoritmi
calcolabili

 Problemi decidibili  sono meccanicamente risolvibili da una macchina


di Turing

 Problemi indecidibili  non sono meccanicamente risolvibili da una


macchina di Turing

Prof. Mario Ciampi – Elementi di Informatica 8


 Un algoritmo risolvente un dato problema è indipendente dal sistema che lo
esegue se per esso esiste una macchina di Turing

 L’algoritmo è indipendente dal linguaggio usato per descriverlo


 Per ogni linguaggio si può sempre definire una macchina di Turing Universale

 Teoria della calcolabilità  Cerca di comprendere quali funzioni ammettono un


procedimento di calcolo automatico

 Secondo la tesi di Church-Turing se un problema si può calcolare, allora esisterà


una macchina di Turing in grado di risolverlo
 La classe delle funzioni calcolabili coincide con quella delle funzioni calcolabili da una
macchina di Turing

Prof. Mario Sicuranza – Elementi di Informatica 9


 Sono due modelli di calcolo fondamentali per caratterizzare la modalità
di descrizione e di esecuzione degli algoritmi

 La macchina di Von Neumann


 è modellata dalla macchina di Turing Universale per ciò che attiene alle sue
modalità di computazione
 ha memoria limitata a differenza del nastro di Turing che ha lunghezza infinita
 come modello di riferimento per sistemi non solo teorici, prevede anche la
dimensione dell’interazione attraverso i suoi dispositivi di input ed output

Prof. Mario Sicuranza – Elementi di Informatica 10


 Calcolabilità
 Consente di dimostrare l’esistenza (ossia, la decidibilità) di un algoritmo
risolvente un problema assegnato ed indipendente da qualsiasi automa

 Trattabilità
 Studia l’eseguibilità di un algoritmo da parte di un sistema informatico

 La calcolabilità classifica i problemi in risolvibili e non risolvibili,


 La trattabilità in problemi «facili» e «difficili»

 Sono noti problemi che


 pur presentando un algoritmo di soluzione, non consentono di produrre
risultati in tempi ragionevoli neppure se eseguiti dal calcolatore più veloce
 ammettono soluzione di per sé lenta e quindi inaccettabile

Prof. Mario Sicuranza – Elementi di Informatica 11


 Il concetto di trattabilità è legato a quello di complessità computazionale
 Studia i costi intrinseci alla soluzione dei problemi
 Mira a comprendere le prestazioni massime raggiungibili da un algoritmo
applicato ad un problema

 Complessità  individua i problemi risolvibili, detti trattabili, da un


elaboratore con costi di risoluzione che crescano in modo ragionevole al
crescere della dimensione del problema

 La complessità di un algoritmo corrisponde ad una misura delle risorse di


calcolo consumate durante la computazione ed è tanto più elevata
quanto maggiori sono le risorse consumate

Prof. Mario Sicuranza – Elementi di Informatica 12


 Due tipi di complessità computazionale fra loro interdipendenti che
consentono di misurare gli algoritmi
 Spaziale
▪ Quantità di memoria necessaria alla rappresentazione dei dati necessari
all’algoritmo per risolvere il problema
 Temporale
▪ Tempo richiesto per produrre la soluzione

 Due tipi di misure di complessità (risorse di calcolo consumate)


 Statiche
▪ Basate sulle caratteristiche strutturali (ad es. il numero di istruzioni) dell’algoritmo
▪ Indipendenti dai dati di input su cui esso opera
 Dinamiche
▪ Dipendenti sia dalle caratteristiche strutturali dell’algoritmo che dai dati di input su
cui esso opera
Prof. Mario Sicuranza – Elementi di Informatica 13
 Il tempo di esecuzione è solitamente espresso come una funzione f(n)
della dimensione n dei dati di input
 Un algoritmo ha un tempo di esecuzione n2 se il tempo impiegato è pari al
quadrato della dimensione dell’input

 Da sola la dimensione dei dati di input non basta

 Il tempo di esecuzione dipende sia dalla configurazione dei dati in input


sia dalla loro dimensione

Prof. Mario Sicuranza – Elementi di Informatica 14


 Analisi del caso migliore
 La configurazione dei dati presenta difficoltà minime di trattamento

 Analisi del caso peggiore


 La configurazione dei dati presenta difficoltà massime di trattamento
▪ Si tratta di un’analisi molto utile, perché fornisce delle garanzie sul tempo
massimo che l’algoritmo può impiegare

 Analisi del caso medio


 La configurazione presenta difficoltà medie di trattamento

Prof. Mario Sicuranza – Elementi di Informatica 15


 Si valuta come l’ordine di grandezza del tempo di esecuzione f(n)
cresca al limite (tenda ai suoi asintoti)
 per dimensioni dell’input sufficientemente grandi
 si trascurano operazioni non significative concentrando l’attenzione solo
su quelle predominanti

 Complessità asintotica dipendente solo dall’algoritmo

 Complessità esatta dipendente da tanti fattori legati alla


esecuzione dell’algoritmo

Prof. Mario Sicuranza – Elementi di Informatica 16


 A seconda della funzione f(n) asintotica, si possono individuare:
 Complessità di tipo polinomiale
▪ N (lineare)
▪ n2, n3, n5,…
 Complessità di tipo esponenziale (o, in generale, Non Polinomiale, NP)
▪ 2n, 3n,…

 Elaboratore capace di eseguire un milione istruzioni al secondo (1 MIPS)


 Colonne riportano possibili dimensioni di dati di input
 Righe indicano complessità

Prof. Mario Sicuranza – Elementi di Informatica 17


 Passi per la risoluzione di un problema

 Capire preliminarmente se il problema ammette soluzioni

 Nel caso ne ammetta, individuare un metodo risolutivo (algoritmo)

 Esprimere tale metodo risolutivo in un linguaggio comprensibile


all’esecutore a cui è rivolto

Prof. Mario Sicuranza – Elementi di Informatica 18


Prof. Mario Sicuranza – Elementi di Informatica 19
Prof. Mario Sicuranza – Elementi di Informatica 20
 Fissano l’ordine in cui le diverse azioni devono essere svolte

 Costrutti di sequenza
 Le azioni devono essere svolte una dopo l’altra

 Costrutti di selezione
 Alcune azioni devono essere svolte solo se si verificano determinate
condizioni

 Costrutti iterativi
 Alcune azioni devono essere ripetute un numero di volte prestabilito o
determinato dal verificarsi di certe condizioni

Prof. Mario Sicuranza – Elementi di Informatica 21


 Elementari
 Istruzioni che l’esecutore è in grado di comprendere ed eseguire

 Non elementari
 Istruzioni non note all’esecutore

 Raffinamento o specificazione di un’istruzione non elementare


 Trasforma un’istruzione non elementare in un insieme di istruzioni elementari
 Consente di descrivere l’algoritmo indipendentemente dal repertorio di
istruzioni elementari note all’esecutore

Prof. Mario Sicuranza – Elementi di Informatica 22


 Finitezza
 Devono avere termine entro un intervallo di tempo finito dall’inizio della loro
esecuzione

 Descrivibilità
 Devono produrre, se eseguite, degli effetti descrivibili
▪ Per esempio fotografando lo stato degli oggetti coinvolti sia prima che dopo
l’esecuzione dell’operazione

 Riproducibilità
 Devono produrre lo stesso effetto ogni volta che vengono eseguite nelle
stesse condizioni iniziali

 Comprensibilità
 Devono essere espresse in una forma comprensibile all’esecutore
Prof. Mario Sicuranza – Elementi di Informatica 23
 Successione di azioni che vengono effettuate nel tempo da parte di un
esecutore

 Evoca un processo sequenziale


 Serie di eventi che occorrono uno dopo l’altro, ciascuno con un inizio e una fine
identificabili

 Sequenza di esecuzione  Descrizione del processo sequenziale


 Elenco di tutte le istruzioni eseguite, nell’ordine di esecuzione
▪ Detta anche sequenza dinamica

Prof. Mario Sicuranza – Elementi di Informatica 24


a) Unica sequenza di esecuzione

b) Più sequenze di esecuzione

Prof. Mario Sicuranza – Elementi di Informatica 25


Controllo dell’esistenza di radici reali

Due sequenze di esecuzione


dipendenti dai dati iniziali

Prof. Mario Sicuranza – Elementi di Informatica 26


Sequenza di esecuzione 1) Si eliminano le carte al primo tentativo

Prof. Mario Sicuranza – Elementi di Informatica 27


Sequenza di esecuzione 2) Si eliminano le carte al secondo tentativo

Prof. Mario Sicuranza – Elementi di Informatica 28


Sequenza di esecuzione 3) Si eliminano le carte dopo n tentativi

Prof. Mario Sicuranza – Elementi di Informatica 29


Sequenza di esecuzione 4) Non si trovano mai quattro carte uguali

 Un algoritmo può prescrivere più di una sequenza di esecuzione


 Se il processo descritto è ciclico, il numero di sequenze può essere infinito
 L’algoritmo prescrive un processo che non ha mai termine
Prof. Mario Sicuranza – Elementi di Informatica 30
 La sequenza lessicografica, anche detta sequenza statica, delle istruzioni
descrive una pluralità di sequenze dinamiche differenti
 Numero non noto a priori e dipendente dai dati da elaborare

 Soluzioni diverse dello stesso problema dipendono da tipo e numero


delle sequenze dinamiche
 Una soluzione può presentare un tempo di esecuzione migliore
 Una soluzione può avere terminazione o meno

Prof. Mario Sicuranza – Elementi di Informatica 31


Prof. Mario Sicuranza – Elementi di Informatica 32