Aula 10: Tratabilidade
|
|
|
- Stefany Lancastre de Sá
- 9 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?.
Teoria 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
ACH2043 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 [email protected] 1 Cap 7.2 A classe P 2 Tempo polinomial e exponencial Ex: Máquina de tempo n 3 (tempo
Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão
Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns
Má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)
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
Complexidade 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
Aula 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
Introduçã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
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
5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr [email protected] 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
Complexidade 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
Problemas 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,
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
INTRATABILIDADE 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
Complexidade 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,
Complexidade 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
Teoria 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
Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I
Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I [email protected] Introdução Teoria dos Grafos é o estudo das propriedades e estruturas dos grafos. O objetivo é, após modelar um problema
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
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
Teoria 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
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
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
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
Melhores 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.
Á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
GRAFOS. 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
Projeto 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 [email protected] Universidade Federal de Alfenas Departamento de Ciências Exatas versão da aula: 0.2 Última aula
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
Como 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
Uma 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
Prova 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
Grafos: 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
Linguagens 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
Medida 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
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:
Algoritmos Combinatórios: Introdução
[email protected] 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?
Algoritmo. 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
Aná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
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
ANÁ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)
Grafos: á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
Capí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
3. 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
GRAFOS 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
Matemá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
Projeto 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
Teoria 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
Aula 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
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
Otimizaçã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).
TEORIA 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 [email protected] http://www.dcc.ufmg.br/~loureiro
ANÁ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
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
Definiçã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
Aula 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
Capí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
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.
Complexidade 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
CI065 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
Complexidade 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
Teoria 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:
Algoritmos 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
UNIVERSIDADE 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
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
Noçõ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
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
Medida 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
Projeto 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
Aná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
Teoria 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
Matemá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
