O Computador Universal Bibliografia Base • Artigo “Turing Machine” por James Moor em Encyclopedia of Computer Science (4a Edição). Bib. FCT/UNL: QA 76.15 ENC • Páginas 147-166 do capítulo 7 do livro de Martin Davis "The universal computer". W.W.Norton 2000. Bib. FCT/UNL: QA 76.17 DAV. Referências • Outras: – Visual Turing: http://www.cheran-software.com/vturing/ – Pagina Alan Turing: http://www.turing.org.uk/turing/ A Noção de Computação • Em 1930 um computador era uma pessoa cujo trabalho era efectuar computações: – Efectuava marcas em folhas de papel. – Mudava constantemente a atenção de folha para folha. • O matemático Inglês Alan Turing tentou modelar o essencial deste processo de computação por um modelo matemático! • Criou o modelo que descreve o funcionamento básico de QUALQUER computador! Um Exemplo • Queremos converter a sequência de números: 1010010002101021010 • Em: 0101101112101020101 • i.e. ou 1 passa a 0, ou vice-versa, ou mantêm-se Como o fazer? • Máquina de Turing: – Uma unidade de controlo, que pode estar em um de vários (número finito) estados possíveis. – Uma fita, organizada em quadrados discretos, cada quadrado pode armazenar um único símbolo de um conjunto de símbolos. – Uma cabeça de escrita/leitura, que se move na fita e que transmite informação de e para a fita de controlo. • Artigos: Turing Machine No exemplo, temos 2 estados... ou 0 passa a 1 e 1 passa a 0: 1010010002101021010 0101101112101020101 0:1 -> 1:0 -> ou os 0 e 1 mantêm-se: 1010010002101021010 0101101112101020101 0:1 -> 1:0 -> 0:0 -> 1:1 -> E o 2 altera este comportamento... 1010010002101021010 0101101112101020101 0:1 -> 1:0 -> 2:2 -> 2:2 -> 0:0 -> 1:1 -> Funcionamento • Para um dado estado R, – Se a máquina lê um símbolo a. – Então: • Escreve o símbolo b (Blank). • Opcionalmente move a cabeça uma posição (para a direita ou para a esquerda). • Muda para o estado S. Vantagens • São modelos matemáticos: – Não têm qualquer limitação física (comprimento de fita tão grande quanto o necessário). • São simples: – Mas qualquer computador pode ser descrito por uma máquina de Turing! – Qualquer computador pode simular uma máquina de Turing, desde que tenha memória suficiente. Podemos Formalizar a Máquina de Turing utilizando tabelas de quíntuplos: • Mudar do estado R para S, lendo a e escrevendo b, com movimento para a direita: R a : b -> S Quintupulos: Formalização • Mudar do estado R para S, lendo a e escrevendo b, com movimento para a direita: a/b denotam qualquer símbolo válido. Não está a/a pois podem não ser o mesmo símbolo! R a : b -> S Quintupulos: Formalização • Mudar do estado R para S, lendo a e escrevendo b, com movimento para a esquerda: R a : b <- S Quintupulos: Formalização • Mudar do estado R para S, lendo a e escrevendo b, sem movimento. Ra:b*S Church/Turing Thesis • Alan Turing demonstrou que: – A Máquina de Turing captura a noção de COMPUTAÇÃO. – Exs: Máquinas para efectuar a representação binária de e e ... • Criou uma máquina de Turing Universal: Número de Código duma máquina M Input de M A Máquina de Turing Universal • Um número COD codifica uma máquina de Turing específica. • Uma máquina de Turing Universal recebe esse número e o input DAT. • Com base no número COD, a máquina de Turing Universal aplica as computações descritas em COD a DAT. Número de Código duma máquina M Input de M A Máquina de Turing Universal para compreender os Computadores • Na máquina de Turing Universal: – COD é o programa – DAT são os dados tratados – A máquina de Turing é o Hardware • Lições para entender um computador: – Um computador está SEMPRE num dado estado! – Nesse estado altera SEMPRE da mesma forma os dados que recebe! – APENAS quando muda de estado altera os dados de outra forma (a do novo estado)! – O computador ESCOLHE quais os dados a processar a seguir com base nos dados actuais e estado em que está o seu processamento! Máquina Par ou Impar (Davis pp. 152-154) Q 0 : => E Q 2 : => E Q 0 : => E Q 4 : => E Q 1 : => O Q 3 : => O Q 1 : => O Q 5 : => O E 0 : => E E 2 : => E E 0 : => E E 4 : => E E 1 : => O E 3 : => O E 1 : => O E 5 : => O O 0 : => E O 2 : => E O 0 : => E O 4 : => E O 1 : => O O 3 : => O O 1 : => O O 5 : => O * F E * F E * F E : 0 : 1 Q 6 : => E Q 8 : => E Q 7 : => O Q 9 : => O E 6 : => E E 8 : => E E 7 : => O E 9 : => O O 6 : => E O 8 : => E O 7 : => O O 9 : => O : 0 Exercícios (1/2) • Para a máquina de Turing Par/Impar (Davis, pp. 152-154), qual o próximo estado de? a) Q \|/ __ __ __ 1 2 b) 3 4 5 __ __ Q \|/ __ __ __ __ __ __ __ __ 5 __ __ Exercícios (2/2) • Considere a seguinte máquina de Turing: Q 0 : 1 -> Q Q_:_*F Q 1 : 0 -> Q a) Qual o resultado de aplicar esta máquina à fita: __ __ __ 1 0 0 1 1 __ __