






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
appunti + risposte alle domande
Tipologia: Appunti
1 / 12
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







Vedremo le basi della formalizzazione moderna della macchina calcolatrice nell’idea di Turing. Il risultato di cui parliamo fu ottenuto nel 1936, aveva 24 anni. La strategia di Turing è quella di definire un modello matematico astratto del calcolo umano. Il calcolo è normalmente effettuato scrivendo certi simboli su carta. Possiamo supporre che la carta sia divisa in quadretti come i quaderni di aritmetica dei bambini. Nell'aritmetica elementare si sfrutta talvolta il carattere bidimensionale della carta […] ma questo non è essenziale per il calcolo. Assumo quindi che il calcolo sia effettuato su carta ad una dimensione, cioè su di un nastro suddiviso in caselle (sono i quadretti dei quaderni di aritmetica, ma questo quaderno è ad una sola dimensione e quindi è un nastro, che non importa quando sia lungo ma sempre disponibile potenzialmente infinito) Assumo anche che il numero di simboli che possono essere scritti sia finito. Quindi il processo di calcolo fa riferimento ad un certo insieme finito di simboli, l’assunzione di finitezza sull’insieme dei simboli è argomentata da Turing c’è una considerazione che viene fatta, cioè che se noi scrivessimo simboli tratti da un insieme infinito all’interno di queste caselle che si trovano sul nastro noi, dato che lo spazio di scrittura è limitato, dovremmo avere dei simboli che sono arbitrariamente vicini tra loro e quindi non possono essere distinti tra loro con sicurezza. Il comportamento del calcolatore ad ogni istante è determinato dal simbolo che sta osservando e dal suo “stato mentale” a quell’istante. Possiamo supporre che esista un limite superiore al numero di simboli o caselle che il calcolatore sta osservando ad un dato momento. Supporremo anche che il numero di stati mentali che possono essere considerati sia finito. Quindi c’è questa assunzione sul numero di simboli o caselle che il calcolatore sta osservando, dall’altra parte anche il numero di stati mentali deve essere finito per lo stesso motivo per cui i simboli devono essere tratti da un insieme finito, se avessimo infiniti possibili stati mentali, questi stati potrebbero essere arbitrariamente vicini tra di loro e potrebbero confondersi e quindi potrebbero dare origine all’errore. Queste assunzioni di finitezza sono tutte collegate col fatto che si sta modellando processo discreto di calcolo e queste sono le assunzioni che vengono fatte sulle risorse che ha disposizione il calcolatore umano nel suo procedimento di calcolo. Il modello di Turing è voto a descrivere il comportamento di quelli che all’epoca esistevano, persone che facevano i conti con carta e matita. Vediamo un esempio Scrivere un programma per trasformare una sequenza di simboli 1 in una sequenza alternante di simboli 0 e 1. Quindi l’idea è che si parte da un nastro che all’origine è fatto con dei simboli 1 scritti nelle caselle, dobbiamo scrivere un programma che trasforma il nastro dalla situazione iniziale a quella finale dove gli 0 e gli 1 si alternano. Possiamo fare questo dando una tabella che descriva le mosse che la macchina di Turing deve compiere per effettuare le operazioni richiesta. Questo è un programma per una macchina di Turing che risolve il problema proposto. q1 0Rq q1 10q q2 0Rq q2 1Rq ciascuna riga di questo programma è una quadrupla in cui troviamo, come primo elemento uno stato (abbiamo solo due stati, q1 e q2) questi rappresentano gli stati mentali del calcolatore, troviamo due simboli su cui la macchina opera ovvero 0 e 1 e poi ci sono delle operazioni che la macchina può fare che
sono muoversi a destra e a sinistra, in questo caso si muove solo a destra, rappresentato da R e dopo aver compiuto un azione di questo genere la macchina entra in un altro stato. Ci sono altri movimenti permessi, che sono quelli di scrittura, ad esempio quello 0. Noi possiamo cominciare a seguire questo programma ipotizzando l’esistenza di una testina di lettura posizionata in ciascun istante su una casella e trovandosi in uno degli stati possibili, attiviamo il nostro programma con la testina di lettura q1 che si trova a leggere il simbolo 1, andiamo nella tabella delle quadruple che abbiamo scritto e interpretiamo ogni quadrupla come un istruzione, che ha una parte che consiste nei primi due simboli(stato-simbolo). Nello stato q1 se leggi 1 fai le seguenti azioni, scrivi 0 nella posizione corrente e entra nello stato q2, quindi ogni quadrupla è una produzione che descrive un possibile stato della testina di lettura, un possibile simbolo letto su nastro e descrive le azioni da intraprendere in questa situazione. Le quadruple in questa formalizzazione sono esclusive, nel senso che non ci sono due quadruple distinte che incominciano con gli stessi due simboli, questo significa che la macchina che è una macchina deterministica. Adesso andiamo a cercare la quadrupla rilevante, perché nello stato q2 la testina legge il simbolo 0, siamo nella terza quadrupla in cui nello stato q2 si legge 0 si va a destra restando nello stato q2. A questo punto nello stato q2 la testina legge 1 va a destra ed entro nello stato q1, la testina legge 1 scrive 0 ed entra nello stato q2 e nello stato q2 leggendo 0 va a destra restando nello stato q2 e cosi via. Quindi le quadruple del programma che abbiamo scritto determinano questo comportamento tale per cui alla fine dell’esecuzione del programma su questa porzione di nastro abbiamo la stessa porzione trasformata in una sequenza alternata di 0 e 1. Le macchine di Turing normalmente sono impiegate per calcolare funzioni e una prima costatazione e che è non tutti le funzioni sono calcolabili, in particolare non tutte le funzioni N ⟶ {0,1} sono calcolabili. Perché? Le macchine di Turing sono determinate essenzialmente dal loro programma e tutti i dati che definiscono la macchina di Turing fanno parte di insieme finiti. Il problema è che le funzioni di N→0.1 si può dimostrare che non sono numerabili, con il procedimento diagonale di Kanto(?) Prendiamo funzioni da N a 0,1 che visualizziamo come righe di una matrice finita in entrambe le direzioni, queste righe portano scritte in ciascuno posizione o simbolo 0 o 1, una sequenza di simboli 0,1 se fossero numerabili potremmo metterle in fila, in questa matrice una per riga numerando 0,1,2,3… ci sarebbe una corrispondenza biunivoca tra numeri naturali e le righe di questa matrice. Consideriamo la diagonale, ha una particolarità, cioè interseca ciascuna delle righe di questa matrice in esattamente un punto. Ci sono anche dei problemi indecidibili questo è quello che Turing voleva dimostrare, Non esiste una macchina di Turing M che, operando su un nastro che contiene: ➢ la descrizione di una qualsiasi macchina di Turing T, ➢ un dato di ingresso x per T, termina sempre i suoi calcoli scrivendo sul nastro il valore M(T,x) dove: ➢ M (T, x) = 1 se T, azionata sul dato x, termina i suoi calcoli ➢ M (T, x) = 0 altrimenti La macchina risponde si/no a seconda la macchina T termini o meno i suoi calcoli.
Ci sono varie origini del concetto scientifico di “informazione”: Ingegneria delle telecomunicazioni : il lavoro fondamentale di Shannon sulla teoria dell’informazione è preceduto dai contributi di Nyquist (1924) e ☛ Hartley (1928) Termodinamica e meccanica statistica : il diavoletto di Maxwell può essere concettualizzato come un dispositivo che trasforma informazione in calore; questa osservazione è l’inizio della termodinamica della computazione (che porta al principio di Landauer) Fisiologia : meccanismi omeostatici negli organismi viventi, collegati al feedback che è studiato particolarmente alla cibernetica. Teorie comportamentiste della mente : il cervello viene visto come elaboratore di informazioni; si richiede la verificabilità sperimentale delle teorie della mente tramite osservazione del comportamento esterno. Caratterizzazione matematica dei processi umani di calcolo : Turing con il suo modello di macchina calcolatrice astratta (appunto, la macchina di Turing); la teoria della calcolabilità sviluppata da Alonzo Church e dai suoi allievi Stephen Cole Kleene e John Barkley Rosser a Princeton all’inizio degli anni ’30; la teoria dei sistemi formali di Emil Post. Qui si va a esplorare la storia della teoria della calcolabilità. Possiamo pero identificare questi filoni con dei personaggi: Shannon, Wiener, McCulloch, von Neumann e Turing Le relazioni tra Shannon e Turing, che si incontrano nel 1943 e discutono di comunicazione, tra l’altro Shannon conosceva le macchine di Turing. Poi c’è un legame che collega Wiener, McCulloch e von Neumann partecipano tutti alle Macy Conferences, che sono l’atto di nascita della cibernetica, la cui nozione centrale è quella di messaggio, inteso come nella teoria dell’informazione di Shannon. Wiener e von Neumann erano avversari matematicamente perché erano entrambi due bambini prodigio, Wiener era di formazione logico. Wiener, McCulloch e Pitts sono tutti membri del RLE (Research Laboratory of Electronics) del MIT, aveva dato origine a questa rete di relazioni tra persone che poi aveva portato al Project Menech. Turing visita von Neumann allo Institute for Advanced Studies di Princeton nel 1937 e nel 1939: von Neumann offre a Turing un posto da assistente, che Turing rifiuta, ritorna in Inghilterra poiché la situazione mondiale all’epoca era precaria. Sembra che sia stato influenzato von Neumann da questo lavoro di Turing quando nel 1945 scrive la prima stesura del rapporto sul computer EDVAC che era in costruzione, pare abbia pensato al modello di Turing per definire quello che oggi viene chiamata l’architettura di von Neumann. Infine c’è una relazione tra Shannon e Wiener uno sviluppo di una teoria matematica della comunicazione basata sulla concezione dell’informazione/entropia di un insieme di messaggi, quindi entrambi si dedicano all’edificazioni di questa teoria dell’informazioni con punti di vista diversi. Tutti quanti gli studiosi hanno lavorato ai Bell Labs, unica compagnia telefonica, centro di ricerca dove si sviluppano delle idee avanzate e ha fornisce un territorio comune per tutti gli studiosi. Claude Shannon (mentre lavora ai Bell Labs, NJ) è interessato a sviluppare una teoria della quantità di informazione sulla quale fondare una teoria matematica della comunicazione (nel suo articolo A Mathematical theory of communication, 1948) vuole una teoria applicabile a qualsiasi tipo di trasmissione:
❝ Il problema fondamentale della comunicazione è quello di riprodurre in un punto, esattamente o con qualche approssimazione, un messaggio scelto in un altro punto ❞ Adotta una posizione molto generale rispetto alla comunicazione. Definisce in un contesto tecnico termini come: emittente ricevente segnale, messaggio, rumore, informazione. L’informazione dipende dal numero complessivo di messaggi trasmissibili attraverso un canale, dalla lunghezza dei messaggi e dal numero di simboli a partire dai quali i messaggi sono formati. L’informazione ed il significato sono nozioni che devono essere tenute distinte, l’informazione e il significato sono due cose diverse, l’informazione è qualcosa relativa a una situazione in cui certi messaggi vengono scelti da un insieme prefissato, il significato è invece una nozione prettamente psicologica. ❝ Spesso i messaggi hanno significato; cioè, si riferiscono, o sono correlati sistematicamente, con certe entità fisiche o concettuali. Questi aspetti semantici della comunicazione sono irrilevanti per il problema ingegneristico. L’aspetto significativo è che il messaggio che si presenta di volta in volta sia scelto da un insieme di messaggi possibili ❞ Questa è la posizione metodologica originale di Shannon. Il modello della comunicazione di Shannon è applicabile ad una vasta gamma di situazioni, secondo l’interpretazione dei componenti del suo modello di comunicazione (dove compaiono l’emittente, il ricevente, il canale, il rumore...). La teoria della comunicazione di Shannon si applica:
von Neumann analizza la nozione generale di complicazione, collegata per lui con la capacità di certi automi sufficientemente complicati di autoriprodursi. Progetta un modello di automa cellulare (generalizzando l’idea di rete di neuroni) che si autoriproduce: ogni cella ha 29 stati e 4 vicini su uno spazio cellulare bidimensionale infinito entrambe le dimensioni. C’è un’osservazione che compare in un articolo di von Neumann sugli automi, un tentativo di stimare il costo energetico minimo (= l’energia minima dissipata) per un atto elementare di generazione di informazione, cioè per decisione elementare tra due alternative, e per la trasmissione elementare di una unità di informazione. Questo, secondo von Neumann è data dalla formula kT loge N dove N è il numero di alternative, k è la costante di Boltzmann e T è la temperatura. Landauer, non riuscendo a dimostrare questo risultato, arrivò ad osservare che le operazioni logicamente irreversibili, quelle che distruggono informazione nel passaggio da uno stato al successivo (tipicamente, la cancellazione di un bit) generano una quantità di entropia pari all’informazione distrutta. Bennett nel 1973 dimostra che ogni calcolo può essere reso logicamente reversibile. Fredkin lavora indipendentemente ad una base fisica reversibile per il calcolo. Si forma così l’area di ricerca relativa alla fisica della computazione, che viene ufficializzata dal congresso ☛ Physics of Computation organizzato nel 1981 al MIT (in quello che era il Project MAC) PROGRAMMAZIONE Programmare è un termine che viene da un linguaggio naturale, ad esempio programmare le lavatrici, significa programma un piano d’azione che consente di raggiungere un certo obbiettivo. La programmazione ha come caratteristiche essenziale il fatto di dover essere fatta all’interno di un repertorio di istruzione di base che è per definizione limitato, non possiamo usare qualsiasi tipo di comando, abbiamo un repertorio limitato e mettendoli insieme dobbiamo comporre un programma d’azione, un piano per i robot che raggiunga l’obiettivo che ci interessa. Vogliamo programmare i movimenti di un robot in una stanza in modo che vada a prendere un oggetto che ci interessa. Un sistema di coordinate definisce le posizioni entro la stanza. I comandi che il robot può eseguire sono: ↑ (un passo avanti) ↓ (un passo indietro) → (un passo a destra) ← (un passo sinistra) Un programma è una sequenza di comandi, per esempio: ↑ ↑ ↑ → → ↓ ↓ ↓ Accade che questo programma sia equivalente a → → Questo contesto semplificato consente già di trattare, di prendere in considerazione alcuni di questi problemi, in particolare il problema dell’equivalenza si propone già. Vediamo la situazione del nostro problema, il robot che vuole raggiungere il panino che gli interessa e escogita due modi diversi, entrambi equivalenti, ovvero che raggiungono entrambi lo stesso obiettivo e sono corretti poiché raggiungono l’obiettivo che ci interessa.
Questi due percorsi non esauriscono le possibilità di percorsi. Abbiamo una metafora dell’attività di programmazione, abbiamo un repertorio limitato di comandi che noi dobbiamo mettere insieme comporre per risolvere un certo problema o raggiungere un certo obiettivo. Abbiamo visto usi del computer, programmi che permettono di animare delle immagini. Questi utilizzi del computer richiedevano un’attività di programmazione precedente, abbiamo visto il computer come calcolatore, tutto questo rientra nell’attività di programmazione molto vasta. Noi ci chiediamo in cosa consiste una programmazione di computer? Perché un computer funziona? C’è una struttura del computer che permette la sua programmazione, è stata inventata da von Neumann, scrive un manoscritto che viene mandato a Philadelphia, questo rapporto viene chiamato architettura di von Neumann, definisce questa architettura. Un computer può essere composto da due grandi parti: CPU e Memoria. Questa memoria si intende ad accesso diretto. C’è una possibilità di memorizzare dell’istruzioni nella memoria, quest’ultima non contiene solo dati ma anche istruzioni che devono operare sui dati, quello che si intende quando parliamo di computer a programma memorizzato. Il programma viene memorizzato in memoria poi estratto e portato nell’altra parte del computer, l’unità centrale di elaborazione, li viene eseguito istruzione dopo istruzione e vengono comunicati alla memoria risultati intermedi, per essere conservati temporaneamente o quelli definiti. L’unità centrale di elaborazione, è il cervello del computer, contiene molte component, tra cui:
e quindi un modo di organizzare i programmi per i computer. Inizialmente si programmava secondo un paradigma imperativo, il computer era visto come un esecutore di istruzioni. Questo perché a livello macchina proprio nell’architettura di von Neumann è previsto che un computer esegua un’istruzione dopo l’altra secondo il ciclo fetch-decode-execute il modello base del computer che ha imposto un modello imperativo. Col tempo si sono formate delle astrazioni che ci hanno permesso il computer nella maniera più astratta, sono nati altri paradigmi di informazioni:
simbolo che si trova nella posizione N. per cui possiamo concludere che almeno una funzione in N (0;1) che non può essere numerata con la macchina di Turing. Quali sono gli elementi fondamentali che permettono di descrivere il funzionamento di un automa cellulare? La nozione di automa cellulare nasce negli anni ’40, ed è l’idea di un automa che agisce su uno spazio bidimensionale di celle, infinito in entrambe le direzioni, ci sono tre possibili schemi per determinare le celle vicine ad una cella data: le celle di Moore in cui ci sono 8 celle vicine le une alle altre, le regole di von Neumann il quale utilizzava solo i quattro punti cardinali vicini ad una cella, gli automi cellulari possono essere molto complicati, ma c’è anche una versione semplice inventata da Conway. Descrivere brevemente il gioco della vita di Conway. La prima descrizione del gioco della vita è stata data da una rivista scientifica, le regole sono abbastanza semplici ed è un gioco a zero giocatori: le celle possono essere in uno dei due stati, o vivi o morti e c’è una regola semplice che si articola in tre fasi; la prima fase è ogni cella viva con due o tre vicini vivi sopravvive, la seconda è ogni cella viva con almeno quattro vicini vivi muore e terza ed ultima regola è che ogni cella (non viva) con tre vicini vivi nasce. Possiamo far nascere, muoverle e sopravvivere a diverse generazioni le celle. Che cos'è un aliante nel gioco della vita di Conway? Li alianti sono stati inventati da Gosper, una configurazione che si sposta, sono configurazioni discrete ma con un’identità in quanto oggetti. Gli automi cellulari come oggetti vivi, ma oggetti e quindi con una determinata consistenza. L’aliante sembra che preservi la sua identità anche se si trasforma e questo genera uno spostamento. Che relazione esiste, secondo von Neumann, tra reti di neuroni e automi o computer? Von Neumann è il primo ad osservare che gli interruttori e gli elementi di ritardo necessari ad un computer potevano essere descritti con la nozione di McCulloch e Pitts; questo lo portò a riconoscere l’equivalenza di rete di neuroni finite con le tabelle di transizione che descrivono l’azione della tesina di lettura delle macchine di Turing. L’obiettivo di von Neumann era l’unione del lavoro di Turing sulle macchine calcolatrici, quello di McCulloch e Pitts sulle reti dei neuroni e quello di Shannon sulla teoria dell’informazione. Qual è l'importanza della nozione di automa secondo von Neumann? von Neumann analizza la nozione generale di complicazione, collegata per lui con la capacità di certi automi sufficientemente complicati di autoriprodursi. Progetta un modello di automa cellulare (generalizzando l’idea di rete di neuroni) che si autoriproduce: ogni cella ha 29 stati e 4 vicini su uno spazio cellulare bidimensionale infinito entrambe le dimensioni. C’è un’osservazione che compare in un articolo di von Neumann sugli automi, un tentativo di stimare il costo energetico minimo (= l’energia minima dissipata) per un atto elementare di generazione di informazione, cioè per decisione elementare tra due alternative, e per la trasmissione elementare di una unità di informazione. Questo, secondo von Neumann è data dalla formula kT loge N dove N è il numero di alternative, k è la costante di Boltzmann e T è la temperatura. Che cos'è il Principio di Landauer? Il Principio di Landauer sostiene che le operazioni logicamente irreversibili, come la cancellazione di un bit che distrugge informazioni nel passaggio da uno stato a quello successivo, generano una quantità di entropia pari all’informazione distrutta.