Aula 10: Tratabilidade
|
|
- Stefany Lancastre de Sá
- 7 Há anos
- Visualizações:
Transcrição
1 Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas que podem ser computados e nosso interesse é saber quão rápido a computação é realizada. Trataremos, portanto, de problemas decidíveis que podem ser computados de forma eficiente e problemas decidíveis que não podem ser computados de forma eficiente. Nossa definição de tempo para execução de um algoritmo será considerada em termos de passo realizados por uma Máquina de Turing. Definição O tempo de processamento de uma Máquina de Turing M sobre uma string w é o número de passos realizados pela máquina antes de parar. Se a máquina não parar, o tempo de processamento é infinito. Definição A complexidade de tempo de uma Máquina de Turing M é a função t(n) cujo valor é o tempo de processamento máximo sobre todas as entradas de tamanho n. Exemplo 10.1 Considere a Máquina de Turing para a linguagem L = {0 i 1 i i 1}. Para decidir L a máquina pode fazer as seguintes operações: 1. Percorre a fita e se um 0 é encontrado à direita de um 1 a máquina pára em um estado não final. 2. Iterativamente corta um único 0 e um único 1. Se sobrar algum 0 ou 1 não cortado, a máquina pára em um estado não final. Caso contrário, a máquina pára em um estado final. Dada uma string w de entrada com tamanho w = n, no passo 1, a máquina percorre no máximo todos os elementos de w. São realizadas n operações no máximo. O passo dois realiza no máximo n operações para cada iteração. Cada iteração corta dois elementos, um 0 e um 1. Portanto, são realizadas n n2 iterações que contabilizam 2 2 operações. A complexidade da máquina é então no máximo t(n) = n + n2 2, ou seja, O(n2 ). A linha divisória de eficiência é basicamente estabelecida entre algoritmos que podem ser computados em tempo polinomial e algoritmos que exigem tempo exponencial. Problemas 1
2 2 Aula 10: Tratabilidade que não possuem um algoritmo polinomial são chamados intratáveis enquanto aqueles que possuem são chamados tratáveis. Porque a divisão entre tempos polinomial e exponencial? Como um exemplo prático, considere funções como n 3 e 2 n, que surgem com frequência para descrever a complexidade de tempo para algoritmos. Para uma entrada de tamanho razoável, como n = 1000, temos n 3 igual a um bilhão. Ou seja, uma máquina com complexidade n 3 realizaria um bilhão de passos antes de parar. Uma máquina com complexidade exponencial realizaria operações. Para ter uma ideia do que esse número significa, o número máximo de átomos no universo é estimado em algo próximo a Algoritmos exponenciais são raramente úteis, uma vez que para entradas comuns esses algoritmos podem levar um tempo computacional que possivelmente o universo não gostaria de esperar. Definição Seja T : N R +. A classe de complexidade de tempo T IME(t(n)) é definida como o conjunto de todas as linguagens que são decidíveis por uma Máquina de Turing com tempo de processamento O(t(n)). A linguagem do Exemplo 10.1 pertence à classe de complexidade T IME(n 2 ). No entanto, é possível obter algoritmos assintoticamente melhores que O(n 2 ) para a linguagem. Em uma Máquina de Turing com uma fita é possível obter uma algoritmo O(n log n) e numa máquina com duas fitas é possível obter um algoritmo O(n). Esses resultados dependem do modelo usado. No entanto, o modelo não afeta tanto assim a complexidade. A diferença é polinomial e estamos interessados em classificar problemas em polinomiais e exponenciais, tratáveis ou intratáveis. Vamos definir a primeira classe de problemas que nos interessa. Definição P é o conjunto de linguagens que são decidíveis em tempo polinomial em uma Máquina de Turing determinística com uma fita. P = k T IME(n k ). Exemplo 10.2 Uma árvore geradora é um subconjunto de arestas sem ciclos que conectam todos os nodos de um grafo. Uma árvore geradora mínima é uma árvore geradora com o menor total de peso de arestas entre todas as árvores geradoras. O algoritmo de Kruskal computa uma árvore geradora mínima da seguinte forma: 1. Cada nodo do grafo é mantido em uma estrutura de componente conexa. Inicialmente nenhuma aresta é selecionada e cada nodo forma uma componente conexa.
3 Aula 10: Tratabilidade 3 2. A cada iteração, a aresta de menor custo é recuperada. Se a aresta une nodos em componentes conexas diferentes, seleciona a aresta para a árvore geradora e une as componentes conexas dos dois nodos Considere o grafo abaixo Inicialmente é escolhida a aresta (1,3). Depois a aresta (2,3). A aresta (1,2) é testada na sequência, mas não é escolhida pois formaria um ciclo. A aresta (3,4) é então escolhida. A última aresta testada é a (2,4), mas esta também forma ciclo. Neste momento temos a árvore geradora mínima mostrada abaixo. Com uma estrutura union-find o algoritmo pode ser implementado em tempo O( V + E log E ) Vamos desenvolver um algoritmo mais simples que pode ser implementado em uma Máquina de Turing. Manteremos uma estrutura do tipo vetor com tamanho V em que cada posição, relacionada com um vértice específico, vai armazenar a componente conexa de um vértice. O algoritmo computa os passos a seguir. 1. A aresta de menor custo é encontrada em tempo O( E ) percorrendo todas as arestas. 2. As componentes conexas dos vértices da aresta de menor custo são descobertas percorrendo o vetor auxiliar em tempo O( V ). 3. Se as componentes são diferentes, todos os vértices que estão na mesma componente são marcados para a componente de um dos vértices. Isso pode é feito em O( V ).
4 4 Aula 10: Tratabilidade Fazendo o processo para todas as arestas obtemos um tempo total de O( E ( E + V )) que é polinomial. Quando usamos MT s é mais fácil tratar problemas como linguagens, como problemas de decisão. O problema de decisão para árvores geradoras mínimas pode ser pensado como: Dado um grafo G e um peso W, existe uma árvore geradora mínima de peso W em G?. Este problema parece mais fácil que o problema de achar uma resposta. Mas estamos interessados em saber o quão difícil é um problema. Neste caso, se o problema da linguagem for difícil, o problema de encontrar a resposta será tão ou mais difícil. A linguagem do problema das árvores geradoras mínimas é P agm = {(G, W ) G é um grafo com uma árvore geradora mínima de custo máximo W }. Se W 40, o grafo do exemplo anterior pertence à linguagem. Outra consideração importante é quanto ao tamanho da entrada (da string) na MT. Pensamos em tamanhos de grafos como o número de vértices mais o número de arestas. Em uma MT o grafo de entrada dever ser codificado como uma string. Essa representação não pode ser bem maior do que um fator polinomial. Se a codificação transformasse um grafo numa string com tamanho exponencialmente maior do que o número de vértices e arestas, o tempo de computação polinomial já seria violado. Felizmente, em geral, é possível obter uma codificação cujo tamanho não é maior do que um fator polinomial. Quando usamos uma codificação binária, seu tamanho até aproxima-se mais do que seria a codificação real em bits usada por um computador. Exemplo 10.3 Poderíamos representar o grafo para o problema da árvore mínima geradora da seguinte forma. 1. Os vértices são numerados de 1 a V. 2. O código inicia com o valor binário de V separado por vírgula do peso W em binário. 3. Para cada aresta existente (i, j), codificamos como (enc(i), enc(j), enc(w)), onde a função enc(.) codifica o valor binário respectivo para os vértices e peso. Para o grafo de exemplo, com limite W = 40, teríamos a codificação: 100, (1, 10, 1111)(1, 11, 1010)(10, 11, 1100)(10, 100, 10100)(11, 100, 10010).
5 Aula 10: Tratabilidade 5 Vimos que a classe P é formada por linguagens para as quais existe um algoritmo de tempo polinomial que as aceite. No entanto, existem linguagens para as quais não são conhecidos algoritmos de tempo polinomial. Vamos analisar o problema do Caixeiro Viajante. A entrada para este problema é um grafo, com pesos nas arestas, e um valor limite de custo W. A pergunta do problema é: Existe um Ciclo Hamiltoniano de peso máximo W em G?. Um Ciclo Hamiltoniano é uma sequência de arestas que conectam todos os vértices sem repetir vértices. Em geral, pensamos no problema como um vendedor que precisa visitar um conjunto de cidades percorrendo estradas que as conectam sem repetir cidades, a não ser a primeira que deve ser também a última. A linguagem do problema é então P cv = {(G, W ) G é um grafo com um ciclo hamiltoniano de custo máximo W }. Exemplo 10.4 O grafo da figura abaixo possui um ciclo hamiltoniano, dado pela sequência de vértices 1, 2, 4, 3, 1. O peso total deste ciclo é 63. Se W 63, a resposta para a pergunta do problema é sim Por força bruta é possível descrever um algoritmo muito simples para o problema. Basta testa todas as permutações dos vértices de um grafo. Para cada permutação testamos se existem vértices repetidos que não sejam os finais. Isso leva tempo O( V ). Como existem O( V!) permutações, o algoritmo computa aproximadamente V! vezes V operações, ou seja, tem complexidade O( V!). Isso é ainda pior do que tempo exponencial. É possível escrever algoritmos mais espertos, que evitem certas operações. No entanto, parece que não importa o que fizermos, um número exponencial de ciclos ainda precisa ser verificado antes de concluir se existe ou não um Ciclo Hamiltoniano. Ninguém conseguiu produzir um algoritmo com tempo menor do que exponencial (no pior caso). Mesmo que não seja conhecido um algoritmo polinomial para o problema do Caixeiro
6 6 Aula 10: Tratabilidade Viajante, o problema apresenta uma propriedade importante para entender sua complexidade: é possível verificar que existe um Ciclo Hamiltoniano se ele for descoberto, ou seja, de alguma forma o ciclo é dado. Definição Um verificador para uma linguagem L é um algoritmo V tal que L = {w V aceita (w, c) para alguma string c}. O tempo de V é medido em termos do tamanho de w. Portanto, um verificador de tempo polinomial executa em tempo polinomial no tamanho de w. Uma linguagem é polinomialmente verificável se ela tem um verificador de tempo polinomial. A string c do verificador é uma informação adicional para verificar que uma string w pertence a L. Essa informação é chamada de certificado de que w pertence a L. Para verificadores polinomiais, o certificado necessariamente tem que ter tamanha polinomial em relação ao tamanho de w. Caso tivesse tamanho exponencial o verificador não seria mais polinomial porque o verificador neste caso seria limitado pelo tempo de acesso (leitura, processamento) ao certificado. Exemplo 10.5 Para o problema do Caixeiro Viajante, o certificado para uma string (G, W ) seria um ciclo hamiltoniano em G. Para verificar o certificado basta percorrê-lo e realizar as seguintes operações: 1. Para todo vértice do certificado marca o vértice correspondente do grafo. 2. Verifica se existem as arestas entre dois vértices subsequentes do certificado. 3. Verifica se o custo total das arestas é no máximo W. 4. Se todos os vértices foram marcados no passo 1 e existem as arestas verificadas no passo 2, então o certificado é um Ciclo Hamiltoniano. Todos os passo podem ser feitos em O( V ). Logo o verificador tem tempo polinomial. Definição tempo polinomial. A classe N P é formada por linguagens que possuem um verificador de O nome N P vem de uma definição alternativa para essa classe de problemas. Definição Uma linguagem L pertence à classe N P (polinomial não-determinística), se existe uma Máquina de Turing Não-Determinística M e uma complexidade de tempo
7 Aula 10: Tratabilidade 7 polinomial t(n) tal que L = L(M) e com uma entrada de tamanho n não existem caminhos com mais de t(n) operações em M. Exemplo 10.6 Uma NTM que decide o problema do caixeiro viajante em tempo polinomial: 1. Escolhe uma lista de números p 1, p 2,.., p m, p 1 onde cada uma dos números é um nodo de G. 2. Checa por repetições nos nodos p 2,..., p m. Se achar rejeita. 3. Checa se o custo é menor que W. Se não for rejeita. 4. Checa se cada par de nodos subsequentes formam uma aresta em G. Se não formar rejeita. 5. Se passou em tudo responde sim. A máquina não-determinística consegue escolher todas as possíveis listas de vértices no passo 1 e executá-las em paralelo. Cada um dos ramos executados leva tempo polinomial pois todas as etapas do algoritmo fazem no máximo um número polinomial de operações. Definição Seja T : N R +. A classe de complexidade de tempo NT IME(t(n)) é definida como o conjunto de todas as linguagens que são decidíveis por uma NTM com tempo de processamento O(t(n)). Definição N P é o conjunto de linguagens que são decidíveis em tempo polinomial em uma máquina de Turing Não-Determinística, N P = k NT IME(n k ). Exemplo 10.7 Uma clique de um grafo é um subgrafo que tem todos os vértices conectados por uma aresta. Uma k-clique é uma clique que contém k vértices. O grafo do exemplo abaixo possui uma 5-clique.
8 8 Aula 10: Tratabilidade O problema da clique consiste em encontrar, em um grafo G, uma clique de tamanho k P C = {(G, k) G contém uma k-clique } O problema da clique pertence a N P e podemos verificar isso usando uma clique c como certificado e construindo o verificador V com entrada ((G, k), c): 1. Testa se c é um conjunto de k nós em G; 2. Testa se G contém todas as arestas conectando nós em c. 3. Se ambos os testes são verdadeiros responde sim, senão responde não. Ou podemos provar por uma MT não-determinística M: 1. Seleciona não-deterministicamente um subconjunto de k nodos em G como c. 2. Testa se G contém todas as arestas conectando nós em c. 3. Se aceita responde sim, se não aceita responde não. Agora sabemos que P contém os problemas que podem ser testados em tempo polinomial enquanto N P contém os problemas que podem ser verificados em tempo polinomial. Uma MT determinística é um MT não-determinística que não tem escolha de movimentos, portanto a classe P N P. No entanto, não sabemos se tudo o que pode ser feito em tempo polinomial por um MT não-determinística pode também ser feito por uma MT determinística em tempo polinomial. Essa é a grande questão da Teoria da Computação: P = N P?.
Uma forma de classificação
Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos Outra forma de classificação Problemas Indecidíveis
Leia maisTeoria da Computação. Complexidade computacional classes de problemas
Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos
Leia maisACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25
ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO Aula 25 Cap 7.2 A classe P Profa. Ariane Machado Lima ariane.machado@usp.br 1 Cap 7.2 A classe P 2 Tempo polinomial e exponencial Ex: Máquina de tempo n 3 (tempo
Leia maisProjeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão
Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns
Leia maisMáquinas de Turing 3
Máquinas de Turing 3 Exercícios 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)
Leia maisMelhores momentos AULA PASSADA. Complexidade Computacional p. 205
Melhores momentos AULA PASSADA Complexidade Computacional p. 205 MT multifita por MT fita única Duas máquinas são equivalentes se elas reconhecem a mesma linguagem. Teorema. Dada uma máquina de Turing
Leia maisTeoria 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
Leia maisComplexidade de Algoritmos. Edson Prestes
Edson Prestes O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve. nlog 2 n é um limite superior para o problema de classificação. O limite inferior de um problema
Leia maisAula 9: Máquinas de Turing
Teoria da Computação Aula 9: Máquinas de Turing DAINF-UTFPR Prof. Ricardo Dutra da Silva Uma máquina de Turing é uma máquina de estados finitos que pode mover o cabeçote em qualquer direção, ler e manipular
Leia maisProblemas Intratáveis ou computação eficiente X computação ineficiente
Problemas Intratáveis ou computação eficiente X computação ineficiente Problemas Tratáveis Os problemas que podem ser resolvidos em tempo polinomial em um computador típico são exatamente os mesmos problemas
Leia maisIntrodução à Teoria da Computação Exercícios
Introdução à Teoria da Computação Exercícios Livro: Michel Sipser, Introdução à Teoria da Computação 2ª Ed. Capítulo 07 Obs: Exercícios 7.7 e 7.20 estão apresentados em versões simplificadas. NP Dicas
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Estudo da Tratabilidade de Problemas
Leia maisAula 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
Leia mais5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema
Leia maisComplexidade computacional
Complexidade computacional CLRS sec 34.1 e 34.2 Algoritmos p. 1 Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Algoritmos p. 2 Algumas questões
Leia maisTécnicas de Extensão de MT
Máquinas de Turing Técnicas de Extensão de MT Permanecer parada após a leitura (STILL) Máquinas de Turing com Múltiplas Fitas e Cabeças Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing
Leia maisProblemas de otimização
Problemas de otimização Problemas de decisão: Existe uma solução satisfazendo certa propriedade? Resultado: sim ou não Problemas de otimização: Entre todas as soluções satisfazendo determinada propriedade,
Leia maisÁrvore Geradora Mínima
GRAFOS ÁRVORE GERADORA MÍNIMA Prof. André Backes Árvore Geradora Mínima Definição Uma árvore geradora (do inglês, spanning tree) é um subgrafo que contenha todos os vértices do grafo original e um conjunto
Leia maisPCC104 - 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
Leia maisINTRATABILIDADE e NP-COMPLETUDE
INTRATABILIDADE e NP-COMPLETUDE Sandro Santos Andrade Doutorado Multiinstitucional em Ciência da Computação UFBA/UNIFACS/UEFS Junho/2008 Grafos e Análise de Algoritmos Introdução Para alguns problemas
Leia maisComplexidade computacional
Complexidade computacional Marina Andretta ICMC-USP 15 de setembro de 2015 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M. R. Cerioli, R. Dahab, P. Feofiloff,
Leia maisComplexidade de Tempo
Complexidade de Tempo 1 Complexidade de Tempo Quando um problema é decidível, ele pode não ser solúvel na prática se a solução requer uma quantidade excessiva de tempo ou memória Medindo a complexidade
Leia maisComplexidade de Algoritmos. Edson Prestes
Edson Prestes A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis) A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (Problemas
Leia maisTeoria da Complexidade Computacional
Teoria da Complexidade Computacional Letícia Rodrigues Bueno UFABC Motivação Motivação I can t find an efficient algorithm, I guess I m just too dumb. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and
Leia maisAlgoritmos em Grafos COM11087-Tópicos Especiais em Programação I
Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I edmar.kampke@ufes.br Introdução Teoria dos Grafos é o estudo das propriedades e estruturas dos grafos. O objetivo é, após modelar um problema
Leia maisTEORIA DE COMPLEXIDADE
TEORIA DE COMPLEXIDADE Fundamentos: classes P e N P Mauricio Ayala-Rincón Grupo de Teoria da Computaç~ao http://ayala.mat.unb.br/tcgroup Instituto de Ciências Exatas Universidade de Brasília, Brasília
Leia maisCapí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
Leia maisCapí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
Leia maisTeoria da Complexidade Computacional
Teoria da Complexidade Computacional 25 de novembro de 2011 Enquanto a teoria de análise de algoritmos estuda a análise de complexidade de algoritmos, a teoria da complexidade estuda a classificação de
Leia maisACH2043 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 ariane.machado@usp.br 1 Nas últimas aulas Tese de Church-Turing Problemas computacionais descritos
Leia maisAlgoritmos de Aproximação Segundo Semestre de 2012
Algoritmos de Aproximação Segundo Semestre de 2012 Aproximação p. 1 Problema de decisão Problema de decisão: conjunto I de instâncias e função f : I {SIM, NÃO} Aproximação p. 2 Problema de decisão Problema
Leia maisModelos 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
Leia maisAula 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
Leia maisAnálise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34
Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais
Leia maisMelhores momentos AULA PASSADA. Complexidade Computacional p. 136
Melhores momentos AULA PASSADA Complexidade Computacional p. 136 Configurações controle q 7 cabeça 1 0 1 1 0 1 1 1 fita de leitura e escrita Configuração 1 0 1q 7 1 0 1 1 1 Complexidade Computacional p.
Leia maisÁrvores Árvores Geradoras de Custo Mínimo 0/16
Conteúdo 1 Árvores 2 Árvores Geradoras de Custo Mínimo Árvores Árvores Geradoras de Custo Mínimo 0/16 Árvores Definição (Grafo Acíclico) Um grafo acíclico é um grafo que não contém ciclos. Árvores Árvores
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 14 Máquinas de Turing humberto@bcc.unifal-mg.edu.br Última aula Autômatos com Pilha Controle de estado a b a a b X Y Y X O que já vimos...
Leia maisGRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?
8/0/06 GRAFOS Prof. André Backes Definição Como representar um conjunto de objetos e as suas relações? Diversos tipos de aplicações necessitam disso Um grafo é um modelo matemático que representa as relações
Leia maisPreliminares. Profa. Sheila Morais de Almeida. agosto
Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa
Leia maisProjeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão
Projeto e Análise de Algoritmos NP Completude Parte 2 Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas Departamento de Ciências Exatas versão da aula: 0.2 Última aula
Leia maisMá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
Leia maisComo saber se um problema está em NP e não está em P?
? P = NP Uma das principais questões em aberto é se P = NP, isto é, se de fato tudo o que pode ser feito em tempo polinomial por uma MTND poderia ser feito por uma MTD em tempo polinomial, talvez com um
Leia maisProblemas de Busca (a.k.a NP) - parte 2
Problemas de Busca (a.k.a NP) - parte 2 André Vignatti DINF- UFPR Euler e Rudrata No verão de 1735 Leonhard Euler, o famoso matemático suíço, estava andando nas pontes da cidade de Königsberg, na Prússia
Leia maisUma introdução à complexidade parametrizada
Vinicius Fernandes dos Santos - CEFET-MG Uéverton dos Santos Souza - UFF/CEFET-RJ 34 o JAI - Jornadas de Atualização em Informática XXXV Congresso da Sociedade Brasileira de Computação Recife, Julho 20
Leia maisProva Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade
Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem
Leia maisLinguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de
Linguagem Universal 1. Uma máquina de Turing representa um PC? Ou representa um possível problema que um PC pode resolver? 2. Uma máquina de Turing pode ser utilizada para simular uma de Turing máquina.
Leia maisAnálise e Síntese de Algoritmos
Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Algoritmos em Grafos Estruturas de Dados para Conjuntos Disjuntos Programação Linear Programação Dinâmica Algoritmos Greedy
Leia maisGrafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes
Grafos: Busca Algoritmos e Estruturas de Dados Graça Nunes Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é uma tarefa fundamental Pense no caso de se procurar uma certa informação associada
Leia maisLinguagens recursivamente enumeráveis
Linguagens recursivamente enumeráveis Uma palavra x Σ é aceite por uma máquina de Turing M ( x L(M)) se M iniciando com a palavra x na fita e no estado inicial, pára num estado final. Caso contrário, M
Leia maisMedida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então
Leia maisRedutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)
Redutibilidade Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Redutibilidade DCC-UFMG (2018/02) 1 / 46 Redutibilidade:
Leia maisAlgoritmos Combinatórios: Introdução
lucia@site.uottawa.ca UFSC, Fevereiro, 2010 Estruturas e Problemas Combinatórios Introdução a Algoritmos Combinatórios O que são: Estruturas Combinatórias? Algoritmos Combinatórios? Problemas Combinatórios?
Leia maisAlgoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas
Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos
Leia maisModelos Universais de Computação
Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)
Leia maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos 2018.2 Classes P e NP P São os problemas que podem ser resolvidos em tempo polinomial por uma Máquina de Turing Determinística. NP São os problemas que podem ser decididos
Leia maisTeoria 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
Leia maisANÁLISE DE COMPLEXIDADE DOS ALGORITMOS
1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)
Leia maisProblemas Computáveis
Indecidibilidade Problemas Computáveis Máquinas de Turing ou Problemas Computáveis ou Linguagens Recursivamente Enumeráveis LER (*) podem ser divididas em 2 classes: as MT que sempre param (Algoritmos),
Leia maisGrafos: árvores geradoras mínimas. Graça Nunes
Grafos: árvores geradoras mínimas Graça Nunes 1 Motivação Suponha que queremos construir estradas para interligar n cidades Cada estrada direta entre as cidades i e j tem um custo associado Nem todas as
Leia maisCapítulo 2: Procedimentos e algoritmos
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
Leia mais3. Resolução de problemas por meio de busca
Inteligência Artificial - IBM1024 3. Resolução de problemas por meio de busca Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Resolução de problemas por
Leia maisGRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira
Ciência da Computação GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira Árvore Geradora (spanning tree) É um subconjunto de um grafo G que possui todos os vértices
Leia maisMatemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação
Aula 06: Teoria dos Grafos Tópico 01: Grafos e suas Representações Nesta aula nós passamos a estudar um outro assunto, mas que também tem muita aplicação na vida prática, a Teoria dos Grafos. Para esta
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Leia maisTeoria dos Grafos Aula 2
Teoria dos Grafos Aula 2 Aula passada Logística, regras Objetivos Grafos, o que são? Formando pares Encontrando caminhos Aula de hoje Outro problema real Definições importantes Algumas propriedades Grafo
Leia maisAula 3: Autômatos Finitos
Teoria da Computação Segundo Semestre, 24 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor
Leia maisComputabilidade e Complexidade (ENG10014)
Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com Decidibilidade O estudo da decidibilidade objetiva determinar a solucionabilidade
Leia maisGrafos Árvores Geradoras Mínimas
ALGORITMOS E ESTRUTURAS DE DADOS II Grafos Árvores Geradoras Mínimas Profa. Elaine Parros Machado de Sousa adaptações: Cris.na Dutra de Aguiar Ciferri Material baseado em aulas dos professores: Gustavo
Leia maisOtimização em Grafos
Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 35 Teoria dos Grafos - Relembrando Árvore Um grafo G é uma árvore se é conexo e não possui ciclos (acíclico).
Leia maisPROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017
PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 Resumo Complexidade Computacional Problemas Instâncias Algoritmos n Número de Passos
Leia maisComplexidade de Algoritmos
Compleidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Reduções de Problemas X NP-Completo
Leia maisAlgoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3
Algoritmo Aproximação Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3 Heurísticas para Problemas NP- Completo Heurística: algoritmo que pode produzir um bom resultado (ou até a solução ótima),
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Tempo polinomial Verificação de tempo polinomial Diane Castonguay diane@inf.ufg.br Instituto de Informática Universidade Federal de Goiás Tempo polinomial Um algoritmo é
Leia maisTEORIA DE COMPLEXIDADE
UFMG/ICEX/DCC PROJETO E ANÁLISE DE ALGORITMOS TEORIA DE COMPLEXIDADE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 1 O SEMESTRE DE 2008 Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro
Leia maisANÁLISE DE ALGORITMOS (INF 1721)
PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão (3WA) Horário: 2as. e 4as. 9-11hs (3WA) 3 de dezembro de 2016 Período: 2016.2 ANÁLISE DE ALGORITMOS (INF 1721) 3 a Lista de
Leia maisTuring e Complexidade
(baseado em material da disciplina PCS2214) PMR2300 Escola Politécnica da Universidade de São Paulo Máquina de Turing Máquina de Turing: modelo mais poderoso de computador, proposto pelo inglês Alan M.
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias P, NP e NP-Completos Introdução O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve. O limite
Leia maisFaculdade 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
Leia maisProf. Marco Antonio M. Carvalho
Prof. Marco Antonio M. Carvalho Lembretes Lista de discussão Endereço: programaacao@googlegroups.com Solicitem acesso: http://groups.google.com/group/programaacao Página com material dos treinamentos http://www.decom.ufop.br/marco/extensao/obi/
Leia maisDefinição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.
1 Árvores Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. Um grafo simples sem ciclos mas não conexo (em que cada componente conexa é portanto uma árvore) chama-se uma floresta. Numa
Leia maisAula 3: Autômatos Finitos
Teoria da Computação Primeiro Semestre, 25 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor
Leia maisCapítulo 2- Modelos de grafos.
Capítulo 2- Modelos de grafos. 2.1- Introdução (pág. 8) [Vídeo 24] Grafo- é um esquema constituído por pontos (ou vértices) e por segmentos (ou arestas). (8) Exemplo 1(pág.8) Um grafo diz-se conexo se
Leia maisMarcos 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.
Leia mais5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 12 Prof. Dr. Sylvio Barbon Junior Sumário - Árvore Geradora Mínima - Teorema pare reconhecer arestas seguras; - Algoritmo de Prim; - Algoritmo
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
Leia maisCI065 CI755 Algoritmos e Teoria dos Grafos
CI065 CI755 Algoritmos e Teoria dos Grafos Exercícios 11 de outubro de 2017 1 Fundamentos 1. Seja S = {S 1,..., S n } uma família de conjuntos. O grafo intercessão de S é o grafo G S cujo conjunto de vértices
Leia maisComplexidade de Tempo e Espaço
Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando
Leia maisTeoria da computabilidade Indecidíveis Decidíveis
Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:
Leia maisAlgoritmos Genéticos
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Algoritmos Genéticos Aluno: Fabricio Aparecido Breve Prof.: Dr. André Ponce de Leon F. de Carvalho São Carlos São Paulo Maio
Leia maisUNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO MATEMÁTICA COMBINATÓRIA 5 a Lista de Exercícios 1. O grafo de intersecção de uma coleção de conjuntos A 1,..., A n é o grafo
Leia maisPolinomial: função de complexidade é O(p(n)), onde p(n) é um polinômio.
UFMG/ICEX/DCC PROJETO E ANÁLISE DE ALGORITMOS Introdução TEORIA DE COMPLEXIDADE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 1 O SEMESTRE DE 2008 Problemas intratáveis ou difíceis são comuns na natureza e nas
Leia maisIntroduçã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
Leia maisNoções da Teoria dos Grafos. André Arbex Hallack
Noções da Teoria dos Grafos André Arbex Hallack Junho/2015 Índice 1 Introdução e definições básicas. Passeios eulerianos 1 1.1 Introdução histórica..................................... 1 1.2 Passeios
Leia maisJuliana 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
Leia maisMedida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa Livro Projeto de Algoritmos Nívio Ziviani Capítulo 1 Seção 1.3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Comportamento Assintótico de Funções O parâmetro n
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Apresentação da Disciplina Edirlei Soares de Lima Por que Estudar Algoritmos? Razões Práticas e Teóricas: Devemos conhecer um conjunto de algoritmos
Leia maisAnálise de Algoritmos
Análise de Algoritmos Aula 04 Prof. Fernando Freitas Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então O(f) é considerada a complexidade assintótica ou o
Leia maisTeoria dos Grafos. Edson Prestes
Edson Prestes Grafos Enumeração de Passeios/Caminhos O processo associado à enumeração de caminhos de um grafo/dígrafo é semelhante ao processo de contagem com a diferença de que usaremos uma matriz de
Leia maisMatemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)
Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17) Professor: Pedro Nóia Livro adotado: Matemática Aplicada às Ciências Sociais- 11º ano Elisabete Longo e Isabel
Leia mais1. Uma linguagem de uma máquina de Turing
Linguagem de uma Máquina de Turing 1. Uma linguagem de uma máquina de Turing, é. 2. Linguagens aceitas por uma MT são chamdas recursivamente enumeráveis. O recursivo nesta caso significa decidível, ou
Leia mais