teoria da computação mÁquinas universais fabrício dias [email protected] unipÊ – centro...

30
Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias [email protected] UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Teoria da ComputaçãoMÁQUINAS UNIVERSAIS

Fabrício Dias

[email protected]

UNIPÊ – Centro Universitário de João PessoaCurso de Ciências da Computação

Page 2: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Agenda

Algoritmo – Definições Máquina – Definições Máquina Universal Codificação de conjuntos estruturados e

programas monolíticos Exemplos

Page 3: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Algoritmo

Termo usado intuitivamente para a solução de um problema

ProblemaProblema

SoluçãoSolução

ALGORITMOALGORITMO

Page 4: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

4

Algoritmo

Solução de um problema: Descrição finita e não-ambígua; Passos discretos; Executáveis mecanicamente em um

tempo finito.

Page 5: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

5

Algoritmo Limitações de tempo podem,

eventualmente, determinar se um algoritmo pode ou não ser utilizado na prática;

Entretanto, limitações de tempo não são restrições teóricas pois a inexistência de limitações não implica recursos ou descrições infinitas.

Page 6: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

6

Algoritmo

Assim, recursos de tempo e de espaço devem ser “tanto

quanto necessários”.

Page 7: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

7

Algoritmo Considerando que um algoritmo deve

possuir uma descrição finita, alguns tipos de dados podem não satisfazer tal condição, por exemplo os números irracionais O número

Assim, no que segue, o estudo é restrito aos algoritmos definidos sobre o conjunto dos números naturais.

Page 8: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

8

Algoritmo

Algoritmos definidos sobre o conjunto dos números naturais. Qualquer conjunto contável pode ser

equivalente ao dos naturais, através de uma codificação.

Page 9: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Máquina

Conceito: Interpreta os programas de acordo com os dados

fornecidos; É capaz de interpretar um programa desde que

possua uma interpretação para cada operação ou teste que constitui o programa.

Page 10: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

10

Máquina

O conceito de programa satisfaz à noção intuitiva de algoritmo;

Entretanto, é necessário definir a máquina a ser considerada;

Tal máquina deve ser suficientemente: Simples Poderosa

Page 11: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

11

Máquina Simples:

Permite estudos de propriedades, sem a necessidade de considerar características não-relevantes;

Permite estabelecer conclusões gerais sobre a classe de funções computáveis;

Poderosa: Capaz de simular qualquer característica de

máquinas reais ou teóricas.

Page 12: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

12

Máquina Universal

Se for possível representar qualquer algoritmo como um programa em uma máquina, então esta é denominada de máquina universal.

Page 13: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

13

Máquina Universal

Evidências de que uma máquina é universal: Evidência Interna. Qualquer extensão das

capacidades da máquina universal não aumenta o seu poder computacional;

Evidência Externa. Outros modelos que definem a noção de algoritmo são, no máximo, computacionalmente equivalentes.

Page 14: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

14

Codificação de conjuntos estruturados

Problema da codificação de conjuntos estruturados: onde elementos de tipos de dados

estruturados são representados como números naturais.

Page 15: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

15

Codificação de conjuntos estruturados

Definição: para um dado conjunto estruturado X, a idéia básica é definir uma função injetora:

c: X →

ou seja, uma função tal que, para todo

x,y X, tem-se que:

se c(x) = c(y), então x=y

Neste caso, o número natural c(x) é a codificação do elemento estruturado x.

Page 16: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

16

Exemplo 1 Codificação de n-Uplas Naturais

Suponha que é desejado codificar, de forma única, elementos de Nn como números naturais, ou seja, deseja-se uma função injetora:

c: Nn → N

Page 17: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

17

Exemplo 1

Uma codificação simples é a seguinte:

a) pelo Teorema Fundamental da Aritmética, cada número natural é unicamente decomposto em seus fatores primos;

Page 18: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

18

Exemplo 1

Uma codificação simples é a seguinte:

b) suponha que p1 = 2, p2 = 3, p3 = 5 e assim sucessivamente. Então, a codificação

c: Nn → N

definida como segue é unívoca (suponha (x1, x2, ..., xn) em Nn):

c(x1, x2, ..., xn) = p1x1 * p2

x2 * ... * pnxn

Page 19: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

19

Exemplo 2 Codificação de Programas Monolíticos

Um programa monolítico pode ser codificado como um número natural.

Suponha um programa monolítico

P = (I, r) com n instruções rotuladas onde {F1, F2, ..., Ff} e {T1, T2, ..., Tt} são os correspondentes conjuntos de identificadores de operações e testes;

Page 20: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

20

Exemplo 2 Codificação de Programas Monolíticos

Seja P' = (I, 1) como P, onde 1 é o rótulo inicial, e 0 o único rótulo final;

Assim, uma instrução rotulada pode ser de uma das duas seguintes formas:

a) Operação:

r1: faça Fk vá_para r2

b) Teste:

r1: se Tk então vá_para r2 senão vá_para r3

Page 21: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

21

Exemplo 2 Codificação de Programas Monolíticos

Cada instrução rotulada pode ser denotada por uma quádrupla ordenada, onde a primeira componente identifica o tipo da instrução:

a) Operação (0):

r1: faça Fk vá_para r2

(0, k, r2, r2)

b) Teste (1):

r1: se Tk então vá_para r2 senão vá_para r3

(1, k, r2, r3)

Page 22: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

22

Exemplo 2 Codificação de Programas Monolíticos

Usando a codificação, o programa monolítico P’, visto como quádruplas ordenadas pode ser codificado como segue: cada quádrupla (instrução rotulada) é

codificada como um número natural. Assim, o programa monolítico P’ com m instruções rotuladas pode ser visto como uma n-upla;

Page 23: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

23

Exemplo 2 Codificação de Programas Monolíticos

por sua vez, a n-upla correspondente ao programa monolítico P’ é codificada como um número natural, usando a codificação.

Page 24: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

24

Exemplo 2 Codificação de Programas Monolíticos

Suponha o número p = (2150)*(3105) Portanto, o programa possui duas instruções

rotuladas correspondentes aos números 150 e 105. Relativamente às decomposições em seus fatores primos, tem-se que: 150 = 21*31*52*70

105 = 20*31*51*71

Page 25: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

25

Exemplo 2 Codificação de Programas Monolíticos

o que corresponde às quádrulas:

(1, 1, 2, 0) e (0, 1, 1, 1), que é o mesmo que:

1: se T1 então vá_para 2 senão vá_para 0

2: faça F1 vá_para 1

Page 26: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

26

Exemplo Codificar o programa monolítico em um

único número natural P1. F->1, G->2.

1: faça F vá_para 22: se T então vá_para 3 senão vá_para 53: faça G vá_para 44: se T então vá_para 1 senão vá_para 05: faça F vá_para 66: se T então vá_para 7 senão vá_para 27: faça G vá_para 88: se T então vá_para 6 senão vá_para 0

Page 27: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

27

Exemplo

1: faça F vá_para 2 (0, 1,2, 2)2: se T então vá_para 3 senão vá_para 5 (1, 1, 3, 5)3: faça G vá_para 4 (0, 2, 4, 4)4: se T então vá_para 1 senão vá_para 0 (1, 1, 1, 0)5: faça F vá_para 6 (0, 1, 6, 6) 6: se T então vá_para 7 senão vá_para 2 (1, 1, 7, 2)7: faça G vá_para 8 (0, 2, 8, 8)8: se T então vá_para 6 senão vá_para 0 (1, 1, 6, 0)

Page 28: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

28

Exemplo

que correspondem aos seguintes números naturais:1: 20.31.52.72 = 36752: 21.31.53.75 = 126052503: 20.32.54.74 = 135056254: 21.31.51.70 = 305: 20.31.56.76 = 55147968756: 21.31.57.72 = 73507: 20.32.58.78 = 202668785200008: 21.31.56.70 = 93750

Page 29: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

29

Exemplo Transformando o programa monolítico

em um número natural, temos que P1:

P1 = 23675 * 312605250 * 513505625

* 730 * 115514796875* 137350 * 1720266878520000 * 1993750

Page 30: Teoria da Computação MÁQUINAS UNIVERSAIS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Dúvidas????