{"id":3387,"date":"2013-04-10T00:00:00","date_gmt":"2013-04-09T22:00:00","guid":{"rendered":""},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"3387","status":"publish","type":"post","link":"https:\/\/www.vialattea.net\/content\/3387\/","title":{"rendered":"Potreste farmi un esempio di macchina di Turing che calcola la somma di due numeri?  (esempio che faccia 1+1=2)?"},"content":{"rendered":"<p>Una <a href=\"http:\/\/it.wikipedia.org\/wiki\/Macchina_di_Turing \">macchina di Turing<\/a> &egrave; un modello concettuale di calcolatore. La sua utilit&agrave; &egrave; legata prevalentemente alla teoria della computabilit&agrave;, infatti attraverso operazioni semplicissime la macchina di Turing sarebbe in grado di poter eseguire ogni possibile algoritmo (<a href=\"http:\/\/it.wikipedia.org\/wiki\/Congettura_di_Church-Turing\">tesi di Church-Turing<\/a>).<\/p>\n<p>Il modello &egrave; costituito da un nastro indefinito che pu&ograve; essere letto e scritto, dato un insieme di simboli (senza perdere di generalit&agrave; possono essere 0 e 1), da una testina che si muove a destra e a sinistra. Il sistema pu&ograve; assumere un predefinito numero di stati, tra cui lo stato finale che indica che l&#8217;algoritmo si &egrave; concluso in modo corretto.<\/p>\n<p>Il comportamento della macchina &egrave; definito attraverso una tabella di istruzioni: per ogni stato e per ogni simbolo letto sono definite le azioni, cio&egrave; l&#8217;eventuale scrittura, l&#8217;eventuale cambio di stato e lo spostamento a destra o a sinistra. Fa parte integrante del modello l&#8217;interpretazione dei dati di ingresso e di uscita.<\/p>\n<p>Il caso della somma di due numeri &egrave; trattato ad esempio <a href=\"http:\/\/simplycomputing.com.au\/notes\/turing-machine-examples\">qui<\/a>.<\/p>\n<p>Supponendo di trattare numeri interi positivi rappresentati dalla sequenza di 1 di lunghezza pari al numero da memorizzare, e supponendo che i due numeri da sommare siano separati da uno zero, la tabella delle istruzioni necessarie per produrre il numero somma &egrave; molto semplice ed &egrave; riportata qui sotto.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"131\" alt=\"\" src=\"\/spaw\/image\/informatica\/software\/r82f1.jpg\" \/><\/p>\n<p>A parole: partendo dall&#8217;inizio del nastro bisogna scorrere a destra (S1) fino a trovare un 1; cancellare il primo 1 e scorrere a destra fino a trovare uno 0 (S2); quindi basta riempire lo 0 tra i due numeri con un 1 (END). Ora &egrave; memorizzato il numero somma dei due numeri iniziali.<\/p>\n<p>Qui sotto vengono rappresentate le configurazioni del nastro ad ogni passo per il caso della somma 4 + 2.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"209\" alt=\"\" src=\"\/spaw\/image\/informatica\/software\/r82f2.jpg\" \/><\/p>\n<p>Il fatto che le istruzioni siano cos&igrave; elementari in alcuni casi complica un po&#8217; gli algoritmi: si pensi ad esempio di dover copiare un numero, sempre memorizzato come sequenza di 1, e scriverlo di seguito al primo numero, separato da uno 0. Per contare gli 1 semplicemente incrementando una variabile (stato) &egrave; necessario porre un limite superiore ai numeri da rappresentare.<\/p>\n<p>Per copiare numeri di qualunque lunghezza bisogna copiare una cifra per volta attraverso un ciclo che riporta lo stato ad un valore precedente. La tabella delle istruzioni &egrave; descritta <a href=\"http:\/\/simplycomputing.com.au\/downloads\/turing_machine_program_copy.pdf\">qui<\/a>.<\/p>\n<p>Si vedano anche i seguenti link:<\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Turing_machine_examples\">http:\/\/en.wikipedia.org\/wiki\/Turing_machine_examples<\/a><\/p>\n<p><a href=\"http:\/\/www.digitanto.it\/pages\/Multiframe.htm?f=http:\/\/www.digitanto.it\/Articoli\/AppuntiDiInformatica14.htm\">http:\/\/www.digitanto.it\/pages\/Multiframe.htm?f=http:\/\/www.digitanto.it\/Articoli\/AppuntiDiInformatica14.htm<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[&#8230;]<\/p>\n","protected":false},"author":155,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[],"class_list":["post-3387","post","type-post","status-publish","format-standard","hentry","category-software"],"_links":{"self":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/3387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/users\/155"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/comments?post=3387"}],"version-history":[{"count":0,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/3387\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/media?parent=3387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/categories?post=3387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/tags?post=3387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}