Problemi ed esecutori

Da pagina 170 del libro di testo

Un’istanza di un problema è un caso specifico del problema stesso (perché sono stati fissati i dati del problema).

171 – Esecutori

Fino alla fine del ‘800 sono stati proposti congegni di calcolo di tipo meccanico

AutoreSistema di calcolo
Wilhelm SchickardOrologio calcolante
Blaise PascalPascalina
Charles BabbageMacchina differenziale
Macchina analitica

Nel primo ‘900 sono stati proposti modelli astratti, formali, di esecutori che potessero calcolare la risposta per ogni istanza di un problema.

AutoreSistema di calcolo
Alonzo ChurchFunzioni, Lambda calcolo
Stephen C. KleeneFunzioni, Funzioni ricorsive parziali
Andrey A. MarkovSistemi di riscrittura, sistema semi-Thue
Emil L. PostSistemi di riscrittura, sistemi formali
Alan M. TuringMacchina di Turing

I primi esecutori sono dei sistemi di calcolo di tipo logico-matematico e permettono di calcolare la risposta applicando delle regole ad un insieme iniziale di formule che rappresentano l’istanza del problema.

La macchina di Turing è il modello più vicino alla realtà che ha permesso di costruire i primi computer.

Per ogni coppia di modelli di calcolo è stato dimostrato che i problemi computabili coincidono.
Quindi non c’è alcun vantaggio teorico fra l’uno e l’altro.
Quindi conviene utilizzare il sistema di calcolo più pratico/semplice.

180 – Macchina universale

Se si definisce un insieme minimo di istruzioni riconosciute, ed eseguite, da una macchina allora essa diventa un sistema di calcolo universale.

Non è più necessario progettare fisicamente la macchina per un certo problema ma è sufficiente progettare un algoritmo, risolutivo per il problema, e farlo eseguire per una certa istanza.

170 – Calcolabilità

La definizione di calcolabilità cambia con l’evoluzione dei modelli e delle tecnologie

EsecutoreProblema
Dati_Esecutore_Risposta
Un problema è computabile, calcolabile, se esiste un esecutore che produce, in tempo finito, la risposta corrispondente a qualsiasi istanza del problema.
Macchina universaleProblema
Algoritmo
Dati_Esecutore_Risposta
Un problema è computabile, calcolabile, se esiste un algoritmo per un esecutore che produce, in tempo finito, la risposta corrispondente a qualsiasi istanza del problema.
Ling_di_progetto
Ling_di_programmazione
Problema
Algoritmo
Programma
Dati_Computer_Risposta
Un problema è computabile, calcolabile, se esiste un algoritmo, tradotto in un programma, eseguito da un computer che produce, in tempo finito, la risposta corrispondente a qualsiasi istanza del problema.

181 – Tesi di Church

L’insieme dei problemi computabili coincide con quello dei problemi computabili con la macchina di Turing.

Si ipotizza che la macchina di Turing (e anche gli altri sistemi di calcolo) sia sufficiente per tutti i problemi computabili.
La tesi di Church chiude la porta all’esistenza di sistemi di calcolo più potenti.




I problemi

I problemi sono delle richieste che richiedono all’uomo un certo impegno fisico e/o intellettuale.
Ma tra tutti i problemi, di quali si occupa l’informatica?

Assurdi?Perché perdere tempo se la richiesta è assurda…
Impossibili?Pur interessanti, è dimostrato che non ammettono soluzione, quindi… sono PROBLEMI NON COMPUTABILI
Intrattabili?Le risorse hardware e/o il tempo necessario per ottenere la soluzione sono proibitivi, quindi… sono PROBLEMI INTRATTABILI
Banali?Esiste un dispositivo dedicato adatto allo scopo, quindi…
Interessanti?Se il problema non è assurdo, impossibile, intrattabile, banale allora…