Teoria della computabilità

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Illustrazione semplificata F. S. Capaldo. La costruzione di un modello matematico deve partire dall’analisi del problema reale per l’individuazione degli.
Unità di apprendimento 6 Dal problema al programma.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Logica Lezione 25, 20/4/15: ESAME INTERMEDIO IN CLASSE.
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
PROBLEMI RISOLUBILI E COMPUTABILITÀ se neanche la macchina di Turing riesce a risolvere un problema, quel problema non è risolubile! Secondo la Tesi di.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
x : variabile indipendente
© 2007 SEI-Società Editrice Internazionale, Apogeo
Alcune note, dalla rete, sui Sistemi cellulari
CODING.
Tratto da: Anna Labella (a cura), E questo tutti chiamano Informatica, Manuali Scienze e Tecnologie – Formazione, La Sapienza Roma.
Introduzione al Coding
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rappresentazione dell’ Informazione Informazione e Comunicazione
Liceo Scientifico con opzione Scienze Applicate
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Unità di apprendimento 1
Formule chimiche e composizione percentuale
La rappresentazione delle informazioni
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Dal problema al processo risolutivo
x : variabile indipendente
Insiemi e logica Insiemi e operazioni insiemistiche
MOD. 1: Grandezze e misure
Intervalli di numeri reali
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
10. Programmazione Ricorsiva Ing. Simona Colucci
Unità di apprendimento 7
Equazioni e disequazioni
Linguistica e treebank
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
04/09/2018 Il concetto di limite 1 1.
Forme per rappresentare l’algoritmo:
Ripasso… Elementi di logica
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Logica Lezioni
Che cosa è un problema matematico
Domanda 1 A cosa corrisponde in notazione decimale il numero binario positivo senza segno ) 32 2) 48 3) 46 4) 3 5) 36 September 18.
Le proposizioni DEFINIZIONE. La logica è un ramo della matematica che studia le regole per effettuare ragionamenti rigorosi e corretti. DEFINIZIONE. Una.
PON Docente: Maura Roberta Orlando I.C. Zingarelli, Bari
PON Docente: Maura Roberta Orlando I.C. Zingarelli, Bari
Lezione n°12 Prof.ssa Rossella Petreschi
Programmare.
Programmazione e Laboratorio di Programmazione
Dall’analisi del problema alla definizione dell’algoritmo
Gli automi.
Programmazione e Laboratorio di Programmazione
CORSO DI APPROFONDIMENTO
TEORIA ELEMENTARE DEGLI INSIEMI.
Algoritmi per il flusso nelle reti
Ordinamento in tempo lineare
Ricorsione 16/01/2019 package.
Definizione di linguaggio di programmazione
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Appunti Fonte: M. Addomine D. Pons - Informatica - Zanichelli
Algoritmi e Strutture Dati
FIL LING Lezioni
Programmazione e Laboratorio di Programmazione
Unità D1 L’informatica e il problem solving
Logica lezioni
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Per capire cosa c’è dietro alla privatizzazione
Transcript della presentazione:

Teoria della computabilità Appunti tratti dal libro di testo M. Addomine, D. Pons INFORMATICA – Zanichelli pag.120-129

Teoria della computabilità Si occupa dell’esistenza o meno di algoritmi risolutivi di problemi (cosa può essere calcolato e cosa no) Si è sviluppata a partire dal secolo scorso con la nascita del computer Si basa sulla logica matematica o logica formale

Logica La logica è lo studio del ragionamento corretto. La possiamo considerare da almeno due punti di vista: la logica formale e la logica informale. La logica formale si propone di studiare le forme del ragionamento, ossia modelli generali comuni a molti ragionamenti, codificati in linguaggio simbolico. La logica informale, invece, s’impegna a individuare e analizzare i ragionamenti dei discorsi espressi, quindi nel linguaggio naturale corrente. L’obiettivo specifico della logica informale è lo studio di ragionamenti concreti.

La logica formale Si utilizzano i simboli consentiti dal contesto 3 + 5 = 7 Questa frase è corretta ma falsa La correttezza è fondamentale 3 + 5 = 8 Questa frase è corretta e vera Non è sufficiente utilizzare i simboli corretti 3 + = 5 8 Questa frase non è corretta e non ha senso parlare di verità o falsità

Tempo di calcolo Il tempo impiegato da un computer per eseguire un calcolo e fornire la risposta dipende anche dalla complessità dell’algoritmo utilizzato. X = problema da risolvere n = ordine del problema A = algoritmo utilizzato T = f(n, X, A)

«Dati X ed A, quanto vale T = f(n, X, A)?» Problema La teoria della computabilità cerca di trovare non solo la risposta al problema «Dati X ed A, quanto vale T = f(n, X, A)?» ma anche al problema «Dato un particolare X, quale A minimizza T = f(n, X, A) per tutti i valori di n?» Per definizione di algoritmo, il problema deve trovare soluzione in un numero finito di passi e quindi in un tempo finito

Algoritmi e problemi Non tutti gli algoritmi per risolvere un determinato problema sono equivalenti Il programmatore si rivolge all’analista e quest’ultimo al progettista di algoritmi

Domande Cosa significa computare? Cosa può essere computato? Un computer, se avesse abbastanza memoria e tempo, potrebbe risolvere qualsiasi problema? Quanto velocemente si può risolvere un problema? Quanta memoria sarà necessaria? Avendo a disposizione una certa quantità di memoria (e solo quella) quali problemi potranno essere risolti e quali no? Risponde la teoria della computabilità e la teoria della complessità

Qualcosa di non computabile Non esiste un metodo universale, cioè che possa essere applicato da un computer e quindi risolto attraverso la scrittura di un codice idoneo, che possa predire se un dato codice non banale – ad esempio in C – potrà funzionare comunque oppure se esistono casi in cui andrà in errore, per esempio entrando in un loop infinito.

Ricorsività Esiste un legame tra funzioni ricorsive e funzioni calcolabili? Sì Si definisce ricorsivo un algoritmo che viene definito in termini di se stesso. Esempio: funzione fattoriale 0! = 1 n! = n x (n – 1) x… 3 x 2 x 1 Si può riscrivere n! = n x (n – 1)! Definizione ricorsiva

Condizioni generali Si può ricondurre un qualsiasi algoritmo a funzioni ricorsive? NO Condizioni per ricondurre un algoritmo a funzioni ricorsive L’algoritmo deve essere espresso in funzione di se stesso Deve sempre esistere una condizione di terminazione (impedire un loop) L’algoritmo deve convergere, cioè deve avvicinarsi al valore limite della soluzione

Vantaggi e svantaggi della ricorsione Una funzione ricorsiva ha un codice compatto ed elegante Svantaggi Ingente utilizzo di risorse di calcolo Elevata occupazione di memoria (superamento dei limiti dello stack) Limitata efficienza: algoritmi più lenti

Conclusione Se una funzione f è ricorsiva, allora essa è computabile attraverso un algoritmo Alonzo Church (1903-1995)