GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de...
Transcript of GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de...
GBC015:INTRODUÇÃO À CIÊNCIA DA
COMPUTAÇÃOTeoria de Algoritmos:
Computabilidade e Máquina de Turing
Ilmério Reis da [email protected]/~ilmerio/iccUFU/FACOM/BCC
UFU/FACOM/BCC ICC Página:2
Funções
Def. Função Matemática:
correspondência entre uma coleção de possíveis valores de entrada e uma coleção de valores de saída de forma que cada possível entrada receba uma única saída
Alternativas para representação de funções: – Tabela de valores– Gráfico– Equação– Algoritmo, por exemplo, Fatorial (N).
UFU/FACOM/BCC ICC Página:3
Funções Computáveis
Def. Função Computável:
uma função é computável se existe um algoritmo que calcula os valores de saída à partir dos valores de entrada.
Exemplo: Fatorial (N)
UFU/FACOM/BCC ICC Página:4
Teorema da incompletude de Gödel
Kurt Friedrich Gödel (1906-1978), Matemático, Filósofo
Alguns axiomas sobre os números não podem ser provados.
“se não existe algoritmo para um problema, então esse problema não é computável”.
UFU/FACOM/BCC ICC Página:5
Representações/definições alternativas de Algoritmo
REPRESENTAÇÕES DE ALGORITMOS: Funções Matemáticas de Gödel Lambda Calculus de Church Máquina Abstrata de Alan Turing
Tese de Church-Turing: uma função computável pode ser computada pela Máquina de Turing Universal
ou Um algoritmo bem escrito pode ser convertido de
uma representação para outra
UFU/FACOM/BCC ICC Página:6
Máquina de Turing
Alan Turing (1912-1954), Matemático, Cientista da Computação
Componentes da Máquina de Turing proposta em 1936
Fita infinita: dividida em células tais que cada cêlula contem um símbolo de um conjunto
Unidade de controle: possui um cabeçote de leitura e escrita na fita e um registro de estado
Programa: é uma sequência de passos executados pela Unidade de Controle.
UFU/FACOM/BCC ICC Página:7
Representação da Máquina de Turing
De acordo com o programa, o cabeçote le/escreve na fita, se movimenta para direita ou esquerda e muda de estado
UFU/FACOM/BCC ICC Página:8
Funcionamento da Máquina de Turing-MT
- Seja fita[p] um estado da MT na posição p da fita onde encontra-se gravado um símbolo (definimos dois tipos de estado especiais: um inicial e um ou mais finais)
- A MT começa no estado inicial, lê o símblo, grava um novo símbolo, movimenta de acordo com o programa e o símbolo lido, mudando de estado
- A MT pára quando o passo não estiver definido para o par: (símbolo debaixo do cabeçote, estado atual da máquina).
- Se a MT parar em um estado final, a computação teve êxito!!!
UFU/FACOM/BCC ICC Página:9
Exemplo de MT para incrementar um valor no Sistema Binário
As instruções do programa são conforme Fig 12.3 de [1] abaixoA fita inicia com a cadeia binária e com * nas extremidades da cadeiaA cabeça de leitura inicia-se no estado START e posição do * à direitaSimule a computação para a entrada * 1 0 1 *
UFU/FACOM/BCC ICC Página:10
Formalização de uma MT
Uma MT é uma quíntupla M = (Σ, Q, Π, q0, F)
onde: Σ = alfabeto Q = conjunto finito de estados Π = programa (ou função parcial de transição do tipo
Π: Q x Σ → Σ x {E, D, *} x Q), onde {E, D, *} significa a direção do movimento do cabeçote, a saber, Esquerda ou Direita ou Permanecer.
q0 = estado inicial F = conjunto de estados finais
UFU/FACOM/BCC ICC Página:11
Exemplo de MT que Apaga uma String
Σ = {0, 1, ѣ} Q = {A} Π = {(A, 0, ѣ, D, A), (A, 1, ѣ, D, A) q0 = A F = {A}
Simule em uma folha de papel a execução iniciando na posição mais à esquerda da cadeia (string) 001010.
Veja simulador em: http://morphett.info/turing/turing.html
(acesso em outubro/2018)
UFU/FACOM/BCC ICC Página:12
REPRESENTAÇÃO DE MT DIAGRAMA DE ESTADOSGRAFO DIRIGIDO- Nodos significam estados- Arcos rotulados significam transições
UFU/FACOM/BCC ICC Página:13
EXEMPLO MT REPRESENTADA POR DIAGRAMAMT que devolve o complemento de uma cadeia
binária. Exemplo inicio 10101 término 01010
UFU/FACOM/BCC ICC Página:14
Exercício de fixação
Escreva uma MT que copia uma cadeia de A's e B's à direita da sequência original
EXEMPLO: FITA DE ENTRADA: ABA FITA NO TERMINO: ABAABA
UFU/FACOM/BCC ICC Página:15
MT e Computabilidade
Se um problema P é computável então há uma MT que resolve P e o inverso também é verdadeiro
Todos os problemas são computáveis?
Não, conforme mostramos a seguir
UFU/FACOM/BCC ICC Página:16
O Problema da Parada da MT
É possível criar um programa que receba como parâmetro um programa qualquer P e um conjunto de dados qualquer D e detecte se P para ao processar D?
UFU/FACOM/BCC ICC Página:17
O Problema da Parada da MT - EXEMPLO
O programa P=COLLATZ abaixo para? Dada uma entrada D igual a um número grande.
COLLATZ(inteiro N)ENQUANTO (N != 1) {
ESCREVA N;SE ((N % 2) == 0)
N N / 2;←SENAO
N N * 3 + 1;←}
UFU/FACOM/BCC ICC Página:18
O Problema da Parada da MT - HALT
PROVA POR CONTRADIÇÃO: – Suponha que exista tal programa
chamado HALT– Então HALT pode ser escrito da seguinte
forma:
HALT(programa P, dados D) {SE (P para com D)
ESCREVA “para”SENAO
ESCREVA “loop”}
UFU/FACOM/BCC ICC Página:19
O Problema da Parada da MT - CALL_HALT
Assumindo que uma entrada de dados pode ser o próprio programa, podemos escrever o programa CALL_HALT da seguinte forma:
CALL_HALT(programa P) {HALT(P, P)}
UFU/FACOM/BCC ICC Página:20
O Problema da Parada da MT - NEW_HALT
Seja então NEW_HALT o seguinte programa: NEW_HALT(programa P) { SE (CALL_HALT(P) escreve “loop”)
PARE SENAO FIQUE EM LOOP
UFU/FACOM/BCC ICC Página:21
O Problema da Parada da MT-A CONTRADIÇÃO
O que ocorre se chamarmos NEW_HALT passando como parametro o próprio NEW_HALT, ou seja,
NEW_HALT(NEW_HALT)?
Caso HALT(NEW_HALT, NEW_HALT) escreve “loop” então NEW_HALT PARA, portanto há uma contradição.
Caso contrário HALT(NEW_HALT, NEW_HALT) escreve “para” então NEW_HALT fica em LOOP, contradição
A única hipótese lançada, ou seja, “HALT existe”, leva-nos a uma contradição, portanto, HALT não existe!!
TEMOS ENTÃO UM PROBLEMA BEM ELABORADO QUE NÃO É COMPUTÁVEL!!!
UFU/FACOM/BCC ICC Página:22
Considerações Finais
- Um problema que pode ser resolvido por uma MT pode ser implementado em qualquer computador e vice-versa.
- MT pode ser usada para reconhecer (ou aceitar) se uma cadeia de símbolos pertence a uma linguagem
- Existem variações de MT, por exemplo: MT Não determinísticas; MT com múltiplas fitas; etc.
- Há vários problemas não computáveis, por exemplo: Problema da parada Problema da totalidade: decidir se um programa
qualquer P sempre pára, independente da entrada.
Problema da equivalência: decidir se dois programas quaisquer P1 e P2 realizam a mesma computação
Bibliografia
[1] BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente, ,tradução da 11a ed [por] Eduardo K Pivete, Porto Alegre, Bookman, 2013.
[2] FEDELI, Ricardo Daniel; POLLONI, Enrico Giulio Franco; PERES, Fernando Eduardo. Introdução à ciência da computação. 2. ed. São Paulo: Cengage Learning, 2010.
[3] MOKARZEL, Fábio Carneiro. Introdução à ciência da computação. Rio de Janeiro: Elsevier, 2008.
[4] Autran Macedo, Maria Adriana, Renato Pimentel e Ilmério Silva, http://www.facom.ufu.br
UFU/FACOM/BCC ICC Página:24
Material de Apoio
Capítulo 12 de [1] Lista de exercícios
UFU/FACOM/BCC ICC Página:25
FIM Teoria de Algoritmos
Computabilidade e Máquina de Turing