O documento discute o Teorema da Recursão, que mostra como uma máquina de Turing pode construir uma cópia de sua própria descrição. Isso é ilustrado com a máquina AUTO e usado para provar que o problema da parada é indecidível. O teorema também tem aplicações em vírus de computador e no Teorema do Ponto Fixo.
Paludisme et co-infections - Présentation de la 5e édition du Cours international « Atelier Paludisme » - Célestin RAZAFINJATO - Médecin - INSPC - Antananarivo, Madagascar - razafinjatocelestin@yahoo.fr
Les différentes espèces de Plasmodium pathogènes pour l'homme - Présentation de la 4e édition du Cours international « Atelier Paludisme » - Sali DJELE - Médecin - Délégation Provinciale de la Santé Publique - Cameroun - djelesali@yahoo.fr
A aula aborda recursividade e apresenta exemplos de funções recursivas para calcular fatorial e potenciação. O professor também propõe exercícios para encontrar o maior elemento de um vetor e somar os elementos de um vetor usando recursividade.
O documento discute recursividade em programação, apresentando seus fundamentos, vantagens e desvantagens. Aborda exemplos como o cálculo fatorial de forma iterativa e recursiva, destacando que a recursividade divide um problema maior em problemas menores de forma recursiva até alcançar um caso base. Também discute quando usar recursividade ou iteração e encerra com exercícios sobre listas encadeadas recursivamente.
O documento discute recursividade, definindo-a como uma solução computacional que utiliza uma função que chama a si mesma repetidamente. Apresenta exemplos como fatorial e Fibonacci e compara abordagens recursivas versus iterativas. Por fim, desafia os alunos a resolverem o problema da Torre de Hanói recursivamente.
1) O documento discute conceitos fundamentais de lógica de programação e algoritmos, incluindo suas definições, características e representações.
2) São apresentados exemplos de algoritmos cotidianos e exercícios para representar algoritmos usando descrição narrativa, fluxogramas e pseudocódigo.
3) O documento é uma aula sobre algoritmos para o curso de Programação de Computadores I da UFOP.
Cálculo Numérico - Aula01: Introdução aos métodos numéricosRodolfo Almeida
O documento apresenta um resumo sobre métodos numéricos, discutindo como eles são usados para obter soluções aproximadas de problemas matemáticos. A ementa lista tópicos como erros, zeros de funções, sistemas lineares, interpolação, integração e diferenciação numérica. É explicado que os métodos numéricos são ferramentas para problemas sem solução exata ou que se tornam impraticáveis com o aumento do tamanho. O documento também discute noções básicas sobre erros em métodos numéricos.
Este documento proporciona una introducción a los fundamentos de la programación en Scilab. Explica conceptos básicos como variables, entrada y salida de datos, operadores lógicos y de comparación, estructuras de control condicionales e iterativas, arreglos, funciones y archivos. El documento también incluye ejemplos de código para ilustrar estos conceptos.
Paludisme et co-infections - Présentation de la 5e édition du Cours international « Atelier Paludisme » - Célestin RAZAFINJATO - Médecin - INSPC - Antananarivo, Madagascar - razafinjatocelestin@yahoo.fr
Les différentes espèces de Plasmodium pathogènes pour l'homme - Présentation de la 4e édition du Cours international « Atelier Paludisme » - Sali DJELE - Médecin - Délégation Provinciale de la Santé Publique - Cameroun - djelesali@yahoo.fr
A aula aborda recursividade e apresenta exemplos de funções recursivas para calcular fatorial e potenciação. O professor também propõe exercícios para encontrar o maior elemento de um vetor e somar os elementos de um vetor usando recursividade.
O documento discute recursividade em programação, apresentando seus fundamentos, vantagens e desvantagens. Aborda exemplos como o cálculo fatorial de forma iterativa e recursiva, destacando que a recursividade divide um problema maior em problemas menores de forma recursiva até alcançar um caso base. Também discute quando usar recursividade ou iteração e encerra com exercícios sobre listas encadeadas recursivamente.
O documento discute recursividade, definindo-a como uma solução computacional que utiliza uma função que chama a si mesma repetidamente. Apresenta exemplos como fatorial e Fibonacci e compara abordagens recursivas versus iterativas. Por fim, desafia os alunos a resolverem o problema da Torre de Hanói recursivamente.
1) O documento discute conceitos fundamentais de lógica de programação e algoritmos, incluindo suas definições, características e representações.
2) São apresentados exemplos de algoritmos cotidianos e exercícios para representar algoritmos usando descrição narrativa, fluxogramas e pseudocódigo.
3) O documento é uma aula sobre algoritmos para o curso de Programação de Computadores I da UFOP.
Cálculo Numérico - Aula01: Introdução aos métodos numéricosRodolfo Almeida
O documento apresenta um resumo sobre métodos numéricos, discutindo como eles são usados para obter soluções aproximadas de problemas matemáticos. A ementa lista tópicos como erros, zeros de funções, sistemas lineares, interpolação, integração e diferenciação numérica. É explicado que os métodos numéricos são ferramentas para problemas sem solução exata ou que se tornam impraticáveis com o aumento do tamanho. O documento também discute noções básicas sobre erros em métodos numéricos.
Este documento proporciona una introducción a los fundamentos de la programación en Scilab. Explica conceptos básicos como variables, entrada y salida de datos, operadores lógicos y de comparación, estructuras de control condicionales e iterativas, arreglos, funciones y archivos. El documento también incluye ejemplos de código para ilustrar estos conceptos.
O documento discute conceitos sobre algoritmos computacionais. Explica que um algoritmo recebe entrada(s), executa procedimentos e produz saída(s). Também apresenta um exemplo de algoritmo para elevar um número X ao quadrado e dividir pelo resultado por 3.
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
O documento introduz conceitos fundamentais de algoritmia, incluindo: (1) a definição de algoritmo e suas características; (2) como resolver problemas através de algoritmos; (3) a origem histórica da noção de algoritmo desde a Grécia Antiga.
Este documento apresenta os conceitos fundamentais da Máquina de Turing, incluindo:
1) A Máquina de Turing é constituída por uma fita, unidade de controle e função de transição.
2) A função de transição define o novo estado, símbolo a ser gravado e sentido de movimento da cabeça da fita.
3) Uma Máquina de Turing pode ser usada para reconhecer linguagens, aceitando ou rejeitando palavras de entrada.
O documento discute lógica de programação, apresentando exemplos de algoritmos, considerações sobre algoritmos, dicas para escrever algoritmos e os principais tipos de representação de algoritmos: descrição narrativa, fluxograma e pseudocódigo. Exemplos e exercícios são fornecidos para ilustrar cada tópico.
A máquina de Turing é um dispositivo imaginário criado por Alan Turing que formou a estrutura para fundamentar a ciência da computação moderna. Ela consiste em uma fita de comprimento ilimitado com quadrados de tamanho definido sobre ela, uma cabeça de leitura/escrita que se move pela fita, e um conjunto finito de estados e instruções que permitem executar operações de computação.
ALGORITMO "Soma de dois números"
VAR
num1, num2, resultado: INTEIRO
INICIO
ESCREVA("Digite o primeiro número: ")
LEIA(num1)
ESCREVA("Digite o segundo número: ")
LEIA(num2)
resultado <- num1 + num2
ESCREVA("A soma é: ",resultado)
FIMALGORITMO
ALGORITMO "Média de notas"
VAR
n1, n2, n3, n4, media: DECIMAL
INICIO
ESCREVA("Digite a primeira nota: ")
LEIA(n1
Este documento apresenta os conceitos básicos de lógica, algoritmos e da linguagem de programação Portugol. Introduz os tipos de dados básicos em Portugol como inteiro, real, caractere e lógico, e explica como declarar variáveis e constantes. Também mostra comandos como atribuição, entrada e saída de dados, e operadores aritméticos e lógicos. Por fim, explica comandos de controle como desvios condicionais simples e compostos.
(1) O documento introduz conceitos fundamentais de programação de computadores como algoritmos, variáveis, tipos de dados, operadores aritméticos e a estrutura básica de um algoritmo. (2) Apresenta a pseudolinguagem PORTUGOL que permite ao programador pensar no problema sem considerar o equipamento, facilitando a transposição do problema real para o universo computacional. (3) Discutem variáveis, tipos básicos como inteiro, real, caracter e lógico, e o comando de atribuição para manipular valores nas variáveis.
O documento discute algoritmos e programação, apresentando exemplos de algoritmos para resolver problemas simples. Descreve as etapas para construção de um algoritmo, incluindo descrição narrativa, fluxograma e pseudocódigo. Também aborda estruturas básicas de algoritmos e fluxogramas para representar sequências de passos em problemas.
Este documento apresenta slides sobre análise de algoritmos. Resume um algoritmo para contar o número de inversões em uma permutação e analisa sua complexidade temporal, que é Θ(n2) no pior caso, onde n é o tamanho da entrada. Também introduz a notação assintótica O para classificar algoritmos de acordo com sua taxa de crescimento.
O documento discute conceitos sobre algoritmos computacionais. Explica que um algoritmo recebe entrada(s), executa procedimentos e produz saída(s). Também apresenta um exemplo de algoritmo para elevar um número X ao quadrado e dividir pelo resultado por 3.
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
O documento introduz conceitos fundamentais de algoritmia, incluindo: (1) a definição de algoritmo e suas características; (2) como resolver problemas através de algoritmos; (3) a origem histórica da noção de algoritmo desde a Grécia Antiga.
Este documento apresenta os conceitos fundamentais da Máquina de Turing, incluindo:
1) A Máquina de Turing é constituída por uma fita, unidade de controle e função de transição.
2) A função de transição define o novo estado, símbolo a ser gravado e sentido de movimento da cabeça da fita.
3) Uma Máquina de Turing pode ser usada para reconhecer linguagens, aceitando ou rejeitando palavras de entrada.
O documento discute lógica de programação, apresentando exemplos de algoritmos, considerações sobre algoritmos, dicas para escrever algoritmos e os principais tipos de representação de algoritmos: descrição narrativa, fluxograma e pseudocódigo. Exemplos e exercícios são fornecidos para ilustrar cada tópico.
A máquina de Turing é um dispositivo imaginário criado por Alan Turing que formou a estrutura para fundamentar a ciência da computação moderna. Ela consiste em uma fita de comprimento ilimitado com quadrados de tamanho definido sobre ela, uma cabeça de leitura/escrita que se move pela fita, e um conjunto finito de estados e instruções que permitem executar operações de computação.
ALGORITMO "Soma de dois números"
VAR
num1, num2, resultado: INTEIRO
INICIO
ESCREVA("Digite o primeiro número: ")
LEIA(num1)
ESCREVA("Digite o segundo número: ")
LEIA(num2)
resultado <- num1 + num2
ESCREVA("A soma é: ",resultado)
FIMALGORITMO
ALGORITMO "Média de notas"
VAR
n1, n2, n3, n4, media: DECIMAL
INICIO
ESCREVA("Digite a primeira nota: ")
LEIA(n1
Este documento apresenta os conceitos básicos de lógica, algoritmos e da linguagem de programação Portugol. Introduz os tipos de dados básicos em Portugol como inteiro, real, caractere e lógico, e explica como declarar variáveis e constantes. Também mostra comandos como atribuição, entrada e saída de dados, e operadores aritméticos e lógicos. Por fim, explica comandos de controle como desvios condicionais simples e compostos.
(1) O documento introduz conceitos fundamentais de programação de computadores como algoritmos, variáveis, tipos de dados, operadores aritméticos e a estrutura básica de um algoritmo. (2) Apresenta a pseudolinguagem PORTUGOL que permite ao programador pensar no problema sem considerar o equipamento, facilitando a transposição do problema real para o universo computacional. (3) Discutem variáveis, tipos básicos como inteiro, real, caracter e lógico, e o comando de atribuição para manipular valores nas variáveis.
O documento discute algoritmos e programação, apresentando exemplos de algoritmos para resolver problemas simples. Descreve as etapas para construção de um algoritmo, incluindo descrição narrativa, fluxograma e pseudocódigo. Também aborda estruturas básicas de algoritmos e fluxogramas para representar sequências de passos em problemas.
Este documento apresenta slides sobre análise de algoritmos. Resume um algoritmo para contar o número de inversões em uma permutação e analisa sua complexidade temporal, que é Θ(n2) no pior caso, onde n é o tamanho da entrada. Também introduz a notação assintótica O para classificar algoritmos de acordo com sua taxa de crescimento.
2. Índice
●
Introdução
●
Paradoxo do estudo da vida
●
A máquina AUTO
●
O teorema da recursão
●
Aplicações
○
Teorema da parada
○
Teorema do ponto fixo
○
Vírus de computador
●
Bibliografia
●
Dúvidas
3. Introdução
O teorema da recursão é um resultado
matemático que desempenha um papel
fundamental em teoria da computabilidade.
Ele tem conexões com lógica matemática,
teoria de sistemas auto-reprodutivos e vírus de
computador.
4. Paradoxo do estudo da vida
1. Coisas vivas são máquinas.
2. Coisas vivas podem se reproduzir.
3. Máquinas não podem se auto reproduzir.
5. Paradoxo do estudo da vida
Como resolver o paradoxo:
○ A afirmação 3 está incorreta pois o Teorema
da Recursão mostra como uma máquina
pode se auto reproduzir.
6. A Máquina AUTO
AUTO é uma máquina de Turing que ignora
a entrada e imprime uma cópia de sua própria
descrição.
8. A Máquina AUTO
Passo 1: máquina Pw
Pw = “Sobre a entrada x:
1. Ignore x;
2. Imprima w na fita.”
9. A Máquina AUTO
Passo 2: máquina Q
Lemma (6.1 - Sipser)
Existe uma função computável q: Σ*
Σ*, onde se w é uma cadeia
qualquer, q(w) é a descrição de uma m.T. Pw que imprime w e pára.
10. A Máquina AUTO
Q = “Sobre a entrada w:
1. Construa a m.T. Pw.
2. Imprima <Pw> na fita.”
11. A Máquina AUTO
Passo 3: máquinas A e B
A = P<B>
B = “Sobre <M>, uma porção de uma m.T.:
1. Compute q(<M>) = P<M>
2. Imprima na fita <P<M>o M> e pare”
<P<M>o M> é a concatenação de P<M> e M.
12. A Máquina AUTO
AUTO = “Sobre a entrada x:
1. Ignore x
2. Executa A: Imprime código da máquina B na fita
3. Executa B sobre a string na fita (no caso <B>): Imprime o código
da máquina que imprime B na fita (A) seguido do código de B”
Resultado na fita = <A.B>
16. O Teorema da Recursão
Seja T uma máquina de Turing que computa
t: Σ* x Σ*
Σ*. Existe uma m.T R que computa
uma função r: Σ* Σ*, onde para todo w:
r(w) = t(<R>, w)
Em outras palavras: Uma m.T. pode construir uma réplica de seu
próprio código e continuar o restante de seu cálculo, que pode até
mesmo incluir ações envolvendo seu próprio código.
17. O Teorema da Recursão
A
B
T
( = P(BT))
Controle para R
…….
Onde:
1. A = P(BT) e
2. T recebe como parâmetros (<R>, w)
22. O Teorema da Recursão
Construção de AUTO
T = “Sobre a entrada <M, w>:
1. Imprima <M> e pare.”
23. O Teorema da Recursão
Construção de AUTO
T = “Sobre a entrada <M, w>:
1. Imprima <M> e pare.”
r(w) = t(R, w) - Definição de AUTO
24. O Teorema da Recursão
Construção de AUTO
T = “Sobre a entrada <M, w>:
1. Imprima <M> e pare.”
r(w) = t(R, w) - Definição de AUTO
AUTO = “Sobre uma entrada w:
1. Obtenha, por meio do Teorema da Recursão, a própria
descrição <AUTO>.
2. Imprima <AUTO>.”
25. Aplicações
AMT é indecidível:
Assuma que a m.T. H decide AMT. Construa a seguinte m.
T. M:
M = “Sobre a entrada w:
1. Obtenha, por meio do Teorema da Recursão, sua própria
descrição <M>.
2. Rode H sobre a entrada <M, w>
3. Se H rejeita, aceite. Se H aceita, rejeite.”
26. Aplicações
Teorema do ponto fixo:
Seja t: Σ*
Σ* uma função computável. Então existe uma m.T. F
para a qual t(<F>) descreve uma m.T. equivalente a F. Se a entrada
não for uma descrição válida, a saída será uma m.T. que sempre
rejeita.
Em outras palavras, existe uma m.T F tal que, se t(<F>) = G, sobre a
mesma entrada, G imprimirá a mesma saída que F.
27. Aplicações
Prova:
Seja F a seguinte m.T.:
F = “Sobre a entrada w:
1. Obtenha, por meio do Teorema da Recursão, sua própria
descrição <F>.
2. Compute t(<F>) para obter a descrição de uma m.T. G.
3. Simule G sobre w.”
28. Aplicações
Vírus:
Um programa projetado para se espalhar entre
computadores.
Quando em um computador hospedeiro, começam a
transmitir cópias de si mesmos para outros computadores
acessíveis.
Podem se utilizar do teorema da recursão para se
multiplicarem.
29. Aplicações
Seja a m.T. V, uma m.T. que simula um vírus, tal que
V = ABT
V: “Sobre a entrada w faça:
1. Rode A
2. Rode B
(após a execução do passo 2, tem-se wABT na fita, ou seja, wV)
3. Rode T sobre w. Se T aceita, aceite. Se T rejeita, rejeite.”
30. Bibliografia
➢
SIPSER, Michael. Introdução à teoria da computação. Tradução técnica
Ruy José Guerra Barretto de Queiroz. 2ª ed. São Paulo: Thomson, 2007.
➢
John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. Introduction to
Automata Theory, Languages and Computation. 2ª ed.
➢
Slide: Tópicos Avançados em Teoria da Computação, Sandra de Amo, em
<https://www.google.com.br/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&ved=0CE8QFjAE&url
=http%3A%2F%2Fwww.deamo.prof.ufu.br%2Farquivos%2FTeo-recursao.
ppt&ei=2sChUvGM4HK2gXfhIHYCQ&usg=AFQjCNGDziN8Kp7QccoIYQ2D1cwrpJre3g&si
g2=wQSkbHg5Jzq5v52RPEcVZw&bvm=bv.57752919,d.b2I> acesso em
dez. 2013