Capítulo 2: Procedimentos e algoritmos
|
|
|
- Patrícia Bentes Frade
- 9 Há anos
- Visualizações:
Transcrição
1 Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo matemático que represente o que se entende por computação. Entretanto, cada estudioso do assunto tem seu modelo matemático favorito, e por isso há diversas definições essencialmente distintas. (Por exemplo, um programador FORTRAN tenderia certamente a afirmar que computável é exatamente aquilo que pode ser feito por um programa FORTRAN). Diversos modelos foram apresentados, e podem ser estudados na literatura (veja, por exemplo, [BrLa74] 1 ). Neste curso veremos apenas dois destes modelos: as funções recursivas parciais e as máquinas de Turing. O modelo das funções recursivas parciais se baseia em idéias semelhantes às da programação funcional, enquanto o modelo das máquinas de Turing procura introduzir um computador elementar, com repertório de instruções e estrutura de memória com a maior simplicidade possível. Outros modelos, que não veremos aqui, são baseados em algoritmos de Markov (com algumas semelhanças com a linguagem SNOBOL), em linguagens de programação mais convencionais (como o FORTRAN citado acima), ou em outras arquiteturas de computadores ideais ou linguagens de programação. O fato surpreendente a respeito disso é que (até hoje) todos os modelos usados (se não são completamente absurdos) concordam na definição do que quer dizer "computável". Uma conjectura, enunciada por Alonzo Church, diz que todos os modelos razoáveis do processo de computação, definidos e por definir, são equivalentes. Essa conjectura é conhecida como a tese de Church. Por sua própria natureza, a tese de Church não admite nenhuma prova formal, mas até hoje todos os modelos propostos se mostraram equivalentes. Neste capítulo, entretanto, não queremos ainda definir modelos matemáticos precisos, mas queremos apenas trabalhar com a idéia intuitiva do que quer dizer computável. Para isso, vamos introduzir, mais abaixo, informalmente, dois conceitos relacionados: o conceito de procedimento, e o conceito de algoritmo. Codificação: Na discussão que se segue, levaremos em consideração apenas conjuntos enumeráveis. A razão para isto é que nenhum modelo "razoável" proposto para o processo de computação admite o tratamento de conjuntos não enumeráveis. Precisamos ter alguma garantia de que podemos representar de forma finita todos os elementos do conjunto considerado, e isso não seria possível no caso de conjuntos não enumeráveis. Por exemplo, o conjunto dos números reais não é enumerável, mas o conjunto dos números racionais é enumerável, e, por essa razão, o tratamento computacional de números reais é feito através de aproximações racionais. Adicionalmente, sem perda de generalidade, é conveniente considerar que todos os conjuntos considerados ou são conjuntos de números naturais (subconjuntos de Nat) ou são linguagens em algum alfabeto Γ conhecido (subconjuntos de Γ*). Sabemos que Γ*, Nat e seus subconjuntos são enumeráveis, e que existe uma bijeção entre quaisquer 1 Walter S. Brainerd, Lawrence H. Landweber, Theory of Computation, John Wiley, 1974 J.L.Rangel - Ling. Formais - 2-1
2 dois conjuntos enumeráveis infinitos. Isso significa que podemos, usando essa bijeção como codificação, usar valores em um conjunto enumerável qualquer para substituir valores em outro. Em particular, a codificação através de números naturais (numeração), e a descrição através de cadeias de símbolos (muitas vezes conhecidos como identificadores) são idéias familiares. Procedimentos. Vamos definir um procedimento como sendo uma sequência finita de instruções, e definir instrução como uma operação claramente descrita, que pode ser executada mecanicamente, em tempo finito. "mecanicamente" quer dizer que não há dúvidas sobre o que deve ser feito; "em tempo finito" quer dizer que não há dúvidas de que a tarefa correspondente à instrução pode, em qualquer caso, ser levada até sua conclusão. Para descrever um procedimento podemos usar uma linguagem natural, uma linguagem de programação, ou a linguagem normalmente usada em matemática. Frequentemente, usamos uma mistura de todas estas. Sobre a forma de descrever instruções e procedimentos, suporemos apenas que existe uma linguagem, comum a todos os interessados, em que instruções e procedimentos podem ser descritos sem ambiguidades. Como exemplos, citamos: o algoritmo de Euclides para cálculo do máximo divisor comum de dois números naturais; um programa em FORTRAN que calcula a soma de dois números; a fórmula que calcula as raízes da equação do segundo grau. Exemplo: O procedimento a seguir pára e diz "sim" se o número inteiro i, dado como entrada, for par e não negativo. 1. se i = 0, pare e diga "sim". 2. diminua o valor de i de duas unidades. 3. vá para 1. Note que se i for originalmente ímpar ou negativo, o procedimento não pára. Na definição de procedimento, dada acima, exigimos que cada instrução possa ser executada em tempo finito, mas não exigimos nada de semelhante para os procedimentos. Isso significa, em particular, que não poderíamos usar como instrução em algum outro procedimento uma chamada do procedimento do exemplo acima, uma vez que não podemos garantir sua parada em tempo finito, para qualquer valor da entrada. Exemplo: O procedimento a seguir pára e diz "sim" se o número inteiro i for par e não negativo; pára e diz "não" nos demais casos. J.L.Rangel - Ling. Formais - 2-2
3 1. se i = 0, pare e diga "sim". 2. se i < 0, pare e diga "não". 3. diminua o valor de i de duas unidades 4. vá para 1. Algoritmo. Definimos um algoritmo como sendo um procedimento que sempre pára, quaisquer que sejam os valores de suas entradas. O segundo exemplo de procedimento dado acima é, portanto, um algoritmo. Programas corretos normalmente são algoritmos; em geral, um programa que não pára para alguns valores de suas entradas é um programa incorreto, um "programa com loop", um "programa com erro de lógica". Em alguns casos, entretanto, isso não é verdade, e o desejado é, exatamente, que a execução do programa se estenda por um tempo ilimitado. O exemplo mais característico desse tipo de procedimento parece ser o de um sistema operacional: uma vez iniciada sua execução, ela continua (em condições normais) até que a máquina seja desligada. A seguir temos outro exemplo de procedimento que não tem parada prevista: Exemplo: O procedimento a seguir enumera as sequências de {a, b}*, emitindo (imprimindo, por exemplo) todas essas sequências. 1. Faça X = {ε}. 2. Emita todas as sequências de X. 3. Para cada y X, acrescente a X as sequências ya e yb. 4. Vá para 2. O procedimento acima emite todas as sequências formadas por a's e b's. ε, ε, a, b, ε, a, b, aa, ab, ba, bb, ε, a, b, Cada sequência é emitida uma infinidade de vezes, como permitido numa enumeração. Exemplo: Seja uma função f: Nat Nat. Suporemos que está disponível um algoritmo para calcular f(i), a partir de qualquer i Nat. Considere o procedimento a seguir: 1. faça i = calcule j = f(i), usando o algoritmo dado 3. se j = k, emita i, e pare 4. incremente o valor de i de 1 5. vá para 2. Note que o passo 2 só pode ser considerado uma instrução por causa da disponibilidade de um algoritmo para cálculo dos valores da função. O procedimento do exemplo aceita como entrada um valor k Nat, e só pára se existir um valor de i tal que f(i) = k. Em particular, o valor de i emitido é o menor possível. Conjuntos recursivamente enumeráveis. Dizemos que um conjunto A é recursivamente enumerável (r.e.) se existe um procedimento que enumera os elementos J.L.Rangel - Ling. Formais - 2-3
4 de A. Isto quer dizer que existe um procedimento que emite todos os elementos de A, possivelmente com repetições. Exemplo: Em um dos exemplos anteriores vimos que existe um procedimento que enumera as sequências pertencentes ao conjunto A = { a, b } *. Logo, o conjunto A é recursivamente enumerável. Exemplo: Seja f: Nat Nat. O procedimento a seguir mostra que o contradomínio de f é recursivamente enumerável, supondo que existe um algoritmo que calcula o valor de f(i), a partir de i. 1. i := 0; 2. emita f(i); 3. i := i + 1; 4. vá para 2. Conjuntos recursivos. Dizemos que um conjunto A é recursivo se existe um algoritmo que determina, para um valor arbitrário de sua entrada x, se x A ou se x A. Embora isso não seja estritamente necessário, podemos, para fixar as idéias, especificar que o algoritmo deve parar e dizer "sim" ou "não", respondendo à pergunta "x A?". Exemplo: O conjunto dos naturais pares é recursivo. Basta examinar o algoritmo a seguir, cuja entrada é um natural i: 1. Se i = 0, pare e diga "Sim". 2. Se i = 1, pare e diga "Não". 3. faça i := i vá para 1. Fato: Todo conjunto recursivo é recursivamente enumerável. Dem.: Se o conjunto A Nat é recursivo, existe um algoritmo α que, para cada entrada i determina se i A. Considere o procedimento a seguir: 1. i := execute α com entrada i. 3. se α respondeu "Sim", emita i. 4. i := i vá para 2. Note que: i assume todos os valores naturais α sempre pára, qualquer que seja sua entrada i; α responde "Sim" exatamente para os valores de i que pertencem a A. Portanto, os valores de i emitidos são exatamente aqueles pertencentes a A. J.L.Rangel - Ling. Formais - 2-4
5 Fato: A classe dos conjuntos recursivos é fechada para as operações de união, interseção e complementação. Dem.: (união) Sejam A e B conjuntos recursivos. Sejam α e β algoritmos que determinam pertinência em A e em B, respectivamente. Podemos construir um algoritmo γ que determina se x A B, da seguinte forma: 1. execute α com entrada x. 2. se α respondeu "Sim", responda "Sim" e pare. 3. execute β com entrada x. 4. pare e responda o que β respondeu. (interseção) Sejam A, B, α, β como acima. Construa um algoritmo γ que determina se x A B da seguinte forma: 1. execute α com entrada x. 2. se α respondeu "Não", responda "Não" e pare. 3. execute β com entrada x. 4. pare e responda o que β respondeu. (complemento) Sejam A e α como acima. Construa um algoritmo γ que determina se x A = Nat - A da seguinte forma: 1. execute α com entrada x. 2. se α respondeu "Sim", responda "Não" e pare. 3. se α respondeu "Não", responda "Sim" e pare. Fato: Um conjunto A é recursivamente enumerável se e somente se existe um procedimento que, com entrada x, pára e diz "Sim", se x A, o que não acontece se x A. Isto quer dizer que, se x Α, ou (1) o procedimento não pára, ou (2) pára, mas não diz "Sim". Dem.: ( ) Se A é r.e., existe um procedimento α que enumera seus elementos. Construa um procedimento β que aceita um elemento x qualquer como entrada, modificando α da seguinte maneira: quando α emite um valor y, β testa se y = x. Se isso acontecer, β pára e diz "Sim". Portanto, β dirá "Sim" exatamente quando sua entrada for emitida por α, ou seja quando for um elemento de A. ( ) Seja α um procedimento que pára e diz "Sim" quando sua entrada x A, e que ou não pára, ou não diz "Sim", quando x A. Um procedimento β que enumera os elementos de A pode ser construído usando α, da seguinte maneira: 1. faça k = 0; 2. para cada x = 0,, k execute (2.1) e (2.2) execute um passo (adicional) de α com entrada x 2.2. se α parou e disse "Sim", emita x. 3. faça k = k vá para 2. J.L.Rangel - Ling. Formais - 2-5
6 Note que é necessário executar "em paralelo" α com as várias entradas x porque, se os diversos valores de x fossem tentados sequencialmente, e α não parasse para algum valor de x, α nunca chegaria a ser executado com os valores subsequentes de x. Fato: A classe dos conjuntos recursivamente enumeráveis é fechada para as operações de união e de interseção. Dem.: (união) Sejam A e B conjuntos r.e. e sejam α e β procedimentos que enumeram os elementos de A e de B, respectivamente. Um procedimento γ que enumera os elementos de A B executa α e β em paralelo é: 1. execute um passo de α. 2. se α emitiu i, emita i. 3. execute um passo de β. 4. se β emitiu i, emita i. 5. vá para 1. Os elementos emitidos por γ são exatamente os elementos de A e os elementos de B, ou seja, os elementos de A B. (interseção) Sejam A, B, α e β como acima. O procedimento γ que enumera os elementos de A B executa em paralelo α e β, guardando os elementos já emitidos por α e por β nos conjuntos X e Y, respectivamente: 0. Faça X = e Y =. 1. execute um passo de α. 2. se α emitiu i, acrescente i ao conjunto X. 3. execute um passo de β. 4. se β emitiu i, acrescente i ao conjunto Y. 5. emita os elementos comuns a X e a Y. 6. vá para 1. Os elementos emitidos por γ são aqueles pertencentes aos conjuntos finitos X e Y, ou sejam aqueles já emitidos por α e por β. Fato: Se um conjunto A e seu complemento A são ambos recursivamente enumeráveis, então A (e o complemento A ) são ambos recursivos. Dem.: Já vimos que se A é r.e., existe um procedimento α que pára e diz "Sim", exclusivamente quando sua entrada x é um elemento de A; como A também é r.e., existe um procedimento β que pára e diz "Sim" exclusivamente quando sua entrada x é um elemento de A, ou seja, exatamente quando x não é um elemento de A. Podemos construir um algoritmo γ que executa os procedimentos α e β em paralelo, com entrada x, para determinar se x pertence ou não a A. O procedimento a seguir é um algoritmo porque eventualmente um dos dois passos (2) ou (4) será executado: ou x A ou x A, não havendo terceira possibilidade. J.L.Rangel - Ling. Formais - 2-6
7 1. execute um passo (adicional) de α com entrada x. 2. se α parou e disse "Sim", pare e diga "Sim". 3. execute um passo (adicional) de β com entrada x. 4. se β parou e disse "Sim", pare e diga "Não". 5. vá para 1. (revisão de 27fev97) J.L.Rangel - Ling. Formais - 2-7
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar
Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.
Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel 8.1 - Introdução. Como observado no capítulo anterior, podemos substituir a definição informal de procedimento pela
Capítulo 1: Alfabetos, cadeias, linguagens
Capítulo 1: Alfabetos, cadeias, linguagens Símbolos e alfabetos. Um alfabeto é, para os nossos fins, um conjunto finito não vazio cujos elementos são chamados de símbolos. Dessa maneira, os conceitos de
Aula 10: Decidibilidade
Teoria da Computação Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas são sim ou não. Exemplo
I.2 Introdução a Teoria da Computação
I.2 Introdução a Teoria da Computação O que é? Fundamento da Ciência da Computação Tratamento Matemático da Ciência da Computação Estudo Matemático da Transformação da Informação Qual sua importância?
Capítulo 0: Conjuntos, funções, relações
Capítulo 0: Conjuntos, funções, relações Notação. Usaremos Nat para representar o conjunto dos números naturais; Int para representar o conjunto dos números inteiros. Para cada n Nat, [n] representa o
Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação
Universidade Federal de Santa Maria Disciplina de Teoria da Computação Quais são as capacidades e limitações fundamentais dos computadores? Funções Computáveis Algoritmo: descrição finitade uma computação
Aula 10: Decidibilidade
Teoria da Computação Segundo Semestre, 2014 Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas
Máquinas de Turing - Computabilidade
BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma
Linguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected]
Aulas 10 e 11 / 18 e 20 de abril
1 Conjuntos Aulas 10 e 11 / 18 e 20 de abril Um conjunto é uma coleção de objetos. Estes objetos são chamados de elementos do conjunto. A única restrição é que em geral um mesmo elemento não pode contar
Linguagens Formais e Problemas de Decisão
Linguagens Formais e Problemas de Decisão Mário S. Alvim ([email protected]) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim ([email protected]) Linguagens Formais e Problemas
Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.
Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma
ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:
ECO026 TEORIA DA COMPUTAÇÃO Prof: Rafael Santos Email: [email protected] Site: http://sites.google.com/site/rafafic Máquinas de Turing Uma linguagem Turing-reconhecível (Linguagem recursivamente enumeravel),
Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)
Redutibilidade Mário S. Alvim ([email protected]) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim ([email protected]) Redutibilidade DCC-UFMG (2018/02) 1 / 46 Redutibilidade:
Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.
DEINFO - UFRPE Julho, 2014 Motivação Introdução O que pode ser computado? E mais intrigantemente, o que não pode ser computado? Motivação Introdução O que pode ser computado? E mais intrigantemente, o
Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas.
Teoria dos Conjuntos Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas. Porém, não é nosso objetivo ver uma teoria axiomática dos conjuntos.
1 INTRODUÇÃO E CONCEITOS BÁSICOS
1 INTRODUÇÃO E CONCEITOS BÁSICOS Inicia com uma breve história do surgimento e do desenvolvimento dos conceitos, resultados e formalismos nos quais a Teoria da Computação é baseada. Formalização dos conceitos
Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Marcos Castilho. DInf/UFPR. 16 de maio de 2019
16 de maio de 2019 Motivação Quais são os limites da computação? O que é um Problema de decisão? Um problema de decisão é um conjunto de perguntas, cada uma das quais tem um SIM ou um NÃO como resposta.
Análise I Solução da 1ª Lista de Exercícios
FUNDAÇÃO EDUCACIONAL SERRA DOS ÓRGÃOS CENTRO UNIVERSITÁRIO SERRA DOS ÓRGÃOS Centro de Ciências e Tecnologia Curso de Graduação em Matemática Análise I 0- Solução da ª Lista de Eercícios. ATENÇÃO: O enunciado
Capítulo 3: Gramáticas
Capítulo 3: Gramáticas Já vimos que procedimentos podem ser usados para definir linguagens de duas maneiras essenciais: como geradores, procedimentos que enumeram os elementos da linguagem, e como reconhecedores
Máquina de Turing. Controle finito
Máquinas de Turing Máquinas de Turing podem fazer tudo o que um computador real faz. Porém, mesmo uma Máquina de Turing não pode resolver certos problemas. Estes problemas estão além dos limites teóricos
Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente
ESIN/UCPel 058814 Linguagens Formais e Autômatos TEXTO 5 Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente Prof. Luiz A M Palazzo Maio de 2007 0. Introdução A Ciência da Computação
LINGUAGENS FORMAIS E AUTÔMATOS
LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.
Teoria da Computação
Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: [email protected] Máquinas Universais Máquinas Universais podem ser entendidas de duas formas: Se é capaz
Teoria Ingênua dos Conjuntos (naive set theory)
Teoria Ingênua dos Conjuntos (naive set theory) MAT 131-2018 II Pouya Mehdipour 5 de outubro de 2018 Pouya Mehdipour 5 de outubro de 2018 1 / 22 Referências ALENCAR FILHO, E. Iniciação à Lógica Matemática,
Capítulo 1 Números Reais
Departamento de Matemática Disciplina MAT154 - Cálculo 1 Capítulo 1 Números Reais Conjuntos Numéricos Conjunto dos naturais: N = {1,, 3, 4,... } Conjunto dos inteiros: Z = {..., 3,, 1, 0, 1,, 3,... } {
Dízimas e intervalos encaixados.
Dízimas e intervalos encaixados. Recorde que uma dízima com n casas decimais é um número racional da forma a 0.a a 2...a n = a 0 + a 0 + a 2 0 2 + + a n n 0 n = a j 0 j em que a 0,a,...,a n são inteiros
LINGUAGEM ALGORÍTMICA
LINGUAGEM ALGORÍTMICA Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto Linguagem Computacional Introdução! Para uma melhor padronização de nosso estudos, vamos agora definir uma linguagem
Computabilidade e Complexidade (ENG10014)
Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: [email protected] Decidibilidade O estudo da decidibilidade objetiva determinar a solucionabilidade
Máquinas de Turing para construção: Foram encontrados dois modelos que se destacaram em nossas pesquisas.
Máquina de Turing É um dispositivo imaginário que formou a estrutura para fundamentar a ciência da computação moderna. Seu inventor, o matemático Alan Mathison Turing, mostrou que a computação das operações
Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)
Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q
Teoria da Computação. Computabilidade e complexidade computacional
Teoria da Computação Computabilidade e complexidade computacional 1 Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade
Resolução Exe 2.12 Monolítico Recursivo
Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R
Draft-v0.1. Máquinas de Turing Máquinas de Turing
13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal
Aula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
Dado um inteiro positivo n, definimos U(n) como sendo o conjunto dos inteiros positivos menores que n e primos com n. Não é difícil ver que a
Exemplo (U(n)) Dado um inteiro positivo n, definimos U(n) como sendo o conjunto dos inteiros positivos menores que n e primos com n. Não é difícil ver que a multiplicação módulo n é uma operação binária
Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)
Decidibilidade Mário S Alvim (msalvim@dccufmgbr) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S Alvim (msalvim@dccufmgbr) Decidibilidade DCC-UFMG (2018/02) 1 / 45 Decidibilidade:
LINGUAGENS FORMAIS E AUTÔMATOS
LINGUGENS FORMIS E UTÔMTOS Introdução reve Histórico Em 1936, lan Turing (matemático) propôs a possibilidade de se construir um computador digital através da formalização de um procedimento em tempo finito.
Linguaguens recursivamente enumeráveis e recursivas
Linguaguens recursivamente enumeráveis e recursivas Uma linguagem diz-se recursivamente enumerável (r.e) ou semi-decidível se é aceite por uma máquina de Turing. SD: classe de linguagens recursivamente
ESTRUTURAS DE REPETIÇÃO - PARTE 1
AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a
Máquinas de Turing 3
Máquinas de Turing 3 Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens decidíveis por Máquinas de Turing (Recursivas) Linguagens
Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.
Teoria da Computação Capítulo 1 Máquina de Turing Prof. Wanderley de Souza Alencar, MSc. Pauta 1. Introdução 2. Definição de Máquina de Turing 3. Variações de Máquina de Turing 4. A Tese de Church-Turing
Capítulo 2. Conjuntos Infinitos. 2.1 Existem diferentes tipos de infinito
Capítulo 2 Conjuntos Infinitos O conjunto dos números naturais é o primeiro exemplo de conjunto infinito que aprendemos. Desde crianças, sabemos intuitivamente que tomando-se um número natural n muito
Hewlett-Packard CONJUNTOS NUMÉRICOS. Aulas 01 a 08. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz Ramos
Hewlett-Packard CONJUNTOS NUMÉRICOS Aulas 01 a 08 Elson Rodrigues, Gabriel Carvalho e Paulo Luiz Ramos Ano: 2019 Sumário CONJUNTOS NUMÉRICOS... 2 Conjunto dos números Naturais... 2 Conjunto dos números
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 03 Programas (Monolítico e Iterativo) Prof.ª Danielle Casillo Programas, Máquinas e Computações Diferentes
Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.
Máquinas Universais Máquina de Celso Olivete Júnior [email protected] http://www2.fct.unesp.br/docentes/dmec/olivete/ Roteiro Hipótese de Church - Máquinas Universais: Máquina de Máquina de : Noção
Apostila 05 Assunto: Linguagens dos tipos 0 e 1
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Produtos de potências racionais. números primos.
MATEMÁTICA UNIVERSITÁRIA n o 4 Dezembro/2006 pp. 23 3 Produtos de potências racionais de números primos Mário B. Matos e Mário C. Matos INTRODUÇÃO Um dos conceitos mais simples é o de número natural e
Linguagens Formais e Autômatos Decidibilidade
Linguagens Formais e Autômatos Decidibilidade Andrei Rimsa Álvares Sumário Introdução A tese de Church-Turing Máquinas de Turing e problemas de decisão Máquina de Turing Universal O problema da parada
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 08 Equivalência de programas Parte 2 Prof.ª Danielle Casillo Poder computacional dos diversos tipos de programas
Roteiro da segunda aula presencial - ME
PIF Enumerabilidade Teoria dos Números Congruência Matemática Elementar Departamento de Matemática Universidade Federal da Paraíba 29 de outubro de 2014 PIF Enumerabilidade Teoria dos Números Congruência
Matemática Discreta para Ciência da Computação
Matemática Discreta para Ciência da Computação P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação
Computabilidade e Complexidade (ENG10014)
Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: [email protected] Modelo de computação poderoso concebido pelo matemático britânico Alan Turing
1 Postulado de Church-Turing 1
1 Postulado de Church-Turing 1 Alguns modelos alternativos no estudo da computabilidade Turing: Máquina de Turing Gödel-Kleene: Funções recursivas Church: Cáluculo λ (funções definidas por termos λ) Post:
Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375
Capítulo 9 Máquinas de Turing 9.1. A máquina de Turing (TM) padrão 9.2. Combinações de máquinas de Turing 9.3. A Tese de Turing ADC/TC/Cap.9/2009-10/LEI/DEIFCTUC 375 Linguagens regulares Autómatos finitos
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Proposta por Alan Turing em 1936; É universalmente conhecida e aceita como formalização de algoritmo; Teoria
TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO
LICENCIATURA EM CIÊNCIAS DA COMPUTAÇÃO TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho Braga, Portugal 31 de Maio de 2010
Sumário. 2 Índice Remissivo 9
i Sumário 1 Teoria dos Conjuntos e Contagem 1 1.1 Teoria dos Conjuntos.................................. 1 1.1.1 Comparação entre conjuntos.......................... 2 1.1.2 União de conjuntos...............................
Programação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Conceito de Algoritmo Pseudocódigo Tipos de
Modelos de Computação Folha de trabalho n. 10
Modelos de Computação Folha de trabalho n. 10 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada
formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas
Capítulo 11 Uma hierarquia de linguagens formais e autómatos 11.1. Linguagens g recursivas e recursivamente enumeráveis. 11.2. Gramáticas não-restringidas 11.3. Gramáticas e linguagens dependentes do contexto
Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 8 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 7/4/8 Valor: pontos. Uma versão do problema
Modelos de Computação
Modelos de Computação 2.ano LCC e LERSI URL: http://www.ncc.up.pt/~nam/aulas/0405/mc Escolaridade: 3.5T e 1P Frequência:Semanalmente serão propostos trabalhos aos alunos, que serão entregues nas caixas
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Máquina de Turing Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa [email protected] Teoria da Computação Ciência da Computação
Lema do Bombeamento para Linguagens Livres do Contexto
Lema do Bombeamento para Linguagens Livres do Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz [email protected] Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 44
ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada
ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Aula 18 Cap 4.2 - O Problema da Parada Profa. Ariane Machado Lima [email protected] 1 Nas últimas aulas Tese de Church-Turing Problemas computacionais descritos
Limites da Computação Algorítmica: Problemas Indecidíveis
Capítulo 10 Limites da Computação Algorítmica: Problemas Indecidíveis Tendo estudado o que as máquinas de Turing podem fazer, estudaremos, agora, o que elas não podem fazer. Embora a tese de Turing nos
A = B, isto é, todo elemento de A é também um elemento de B e todo elemento de B é também um elemento de A, ou usando o item anterior, A B e B A.
Capítulo 1 Números Reais 1.1 Conjuntos Numéricos Um conjunto é uma coleção de elementos. A relação básica entre um objeto e o conjunto é a relação de pertinência: quando um objeto x é um dos elementos
Fundamentos da Teoria da Computação
Fundamentos da Teoria da Computação Primeira Lista de Exercícios - Aula sobre dúvidas Sérgio Mariano Dias 1 1 Doutorando em Ciência da Computação Estagiário em docência II Departamento de Ciência da Computação
Primeira Lista de Exercícios 2005/1... Exercício 1 Desenhe Diagrama de Estados para Máquinas que Decidem as Linguagens:
UFLA Universidade Federal de Lavras Departamento de Ciência da Computação COM167 Teoria da Computação Prof. Rudini Sampaio Monitor: Rodrigo Pereira dos Santos Primeira Lista de Exercícios 2005/1 Exercício
Por meio de uma figura fechada, dentro da qual podem-se escrever seus elementos. Diagrama de Venn-Euler.
REPRESENTAÇÕES Um conjunto pode ser representado da seguinte maneira: Enumerando seus elementos entre chaves, separados por vírgulas; Exemplos: A = { 1, 0, 1} N = {0, 1, 2, 3, 4,...} Indicando, entre chaves,
Faculdade de Computação
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra de Amo Solução da Lista de Exercícios n o 8 - Indecidibilidade Exercicio 1-5.5 do Livro
Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem
Conceitos Básicos Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto.
PCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 5 de dezembro de 2017 Marco Antonio
Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018
22 de Fevereiro de 2018 Motivação O que é um computador? O que é um algoritmo? Para que serve um algoritmo? Quando um algoritmo é bom? A análise de um algoritmo depende do computador? Motivação Em teoria
