Algoritmos Combinatórios: Introdução
|
|
|
- Sebastião Eger Malheiro
- 8 Há anos
- Visualizações:
Transcrição
1 UFSC, Fevereiro, 2010
2 Estruturas e Problemas Combinatórios Introdução a Algoritmos Combinatórios O que são: Estruturas Combinatórias? Algoritmos Combinatórios? Problemas Combinatórios?
3 Estruturas e Problemas Combinatórios Objetos Combinatórios Básicos I Conjuntos finitos e seus subconjuntos Exemplo: X = {1, 2, 3, 5} estrutura não ordenada, sem repetições {1, 2, 3, 5} = {2, 1, 5, 3} = {2, 1, 1, 5, 3} cardinalidade (tamanho) de um conjunto é o número de elementos do conjunto X = 4. um k-conjunto e um conjunto de cardinalidade k. X é um 4-conjunto. Um k-subconjunto de um conjunto finito X é um k-conjunto S com S X. Exemplo: {2, 5} é um 2-subconjunto de X.
4 Estruturas e Problemas Combinatórios Objetos Combinatórios Básicos II Lista finita ou tupla finita L = [1, 5, 2, 1, 3] estrutura ordenada, repetições permitidas [1, 5, 2, 1, 3] [1, 1, 2, 3, 5] [1, 2, 3, 5] comprimento = número of itens, o comprimento de L é 5. Um n-tupla e uma lista/tupla de comprimento n. Permutações Uma permutação de um n-conjunto X é um lista de comprimento n tal que todo elemento de X aparece exatamente uma vez. X = {1, 2, 3} duas permutações de X: π 1 = [2, 1, 3] π 2 = [3, 1, 2]
5 Estruturas e Problemas Combinatórios Estruturas Combinatórias Estruturas combinatórias são coleções de k-subconjuntos/k-tuplas/permutações de um conjunto (finito) base. Grafos não direcionados: Coleções de 2-subconjuntos (arestas) de um conjunto base (vértices). V = {1, 2, 3, 4} A = {{1, 2}, {1, 3}, {1, 4}, {3, 4}} Grafos direcionados: Coleções de 2-tuplas (arestas direcionadas) de um conjunto base (vértices). V = {1, 2, 3, 4} A = {(2, 1), (3, 1), (1, 4), (3, 4)} Hipergrafos ou Sistemas de Conjuntos: Similar a grafos, mas hiper-arestas são conjuntos com arestas não necessariamente com 2 elementos. V = {1, 2, 3, 4} E = {{1, 3}, {1, 2, 4}, {3, 4}}
6 Estruturas e Problemas Combinatórios Grafos Definição Um grafo é um par (V, A) onde: V é um conjunto finito (seus elementos são chamados vértices). A é um conjunto de 2-subconjuntos (chamados arestas) de V. G 1 = (V, A) V = {0, 1, 2, 3, 4, 5, 6, 7} A = {{0, 4}, {0, 1}, {0, 2}, {2, 3}, {2, 6}, {1, 3}, {1, 5}, {3, 7}, {4, 5}, {4, 6}, {4, 7}, {5, 6}, {5, 7}, {6, 7}}
7 Estruturas e Problemas Combinatórios Grafos completos são grafos com todas as arestas possíveis. Denotamos o grafo completo com n vértices por K n. K 1 K 2 K 3 K 4
8 Estruturas e Problemas Combinatórios Subestruturas de um grafo: circuito hamiltoniano Definição Um circuito hamiltoniano é um caminho fechado que passa por cada vértice exatamente uma vez. A lista [0, 1, 5, 4, 6, 7, 3, 2] descreve um circuito hamiltoniano no grafo: (note que várias listas podem descrever o mesmo circuito hamiltoniano.) Problema (Problema do caixeiro viajante) Dados pesos/custos nas arestas de G = (V, A), isto é, uma função w : A R, encontre o circuito hamiltonianos de menor peso em G.
9 Estruturas e Problemas Combinatórios Subestruturas de um grafo: cliques Definição Um clique de um grafo G = (V, A) é um subconjunto C V tal que {x, y} A, for all x, y C with x y. (Ou equivalentemente: o subgrafo induzido por C é completo) Alguns cliques: {1, 2, 3}, {2, 4, 5}, {4, 6}, {1}, Cliques máximos (maiores): {1, 2, 3, 4}, {3, 4, 5, 6}, {2, 3, 4, 5}
10 Estruturas e Problemas Combinatórios Problemas famosos envolvendo cliques Problema (Problema do clique máximo) Encontre um clique de cardinalidade máxima num grafo. Problema (Problema de todos os cliques) Encontre todos os cliques de um grafo sem repetições.
11 Estruturas e Problemas Combinatórios Sistemas de conjuntos/hipergrafos Definição Um sistema de conjuntos (ou hipergrafo) é um par (X, B) onde: X é um conjunto finito (elementos chamados pontos/vértices). B é um conjunto de subconjuntos de X (blocos/hiperarestas).
12 Estruturas e Problemas Combinatórios Sistemas de conjuntos/hipergrafos Definição Um sistema de conjuntos (ou hipergrafo) é um par (X, B) onde: X é um conjunto finito (elementos chamados pontos/vértices). B é um conjunto de subconjuntos de X (blocos/hiperarestas). Grafo: Um grafo é um sistema de conjuntos com cada bloco tendo cardinalidade 2
13 Estruturas e Problemas Combinatórios Sistemas de conjuntos/hipergrafos Definição Um sistema de conjuntos (ou hipergrafo) é um par (X, B) onde: X é um conjunto finito (elementos chamados pontos/vértices). B é um conjunto de subconjuntos de X (blocos/hiperarestas). Grafo: Um grafo é um sistema de conjuntos com cada bloco tendo cardinalidade 2 Partição de um conjunto finito: X = {1, 2, 3, 4, 5, 6, 7, 8, 9} B = {{1, 2, 4}, {3, 9}, {5, 6, 7, 8}}
14 Estruturas e Problemas Combinatórios Sistemas de conjuntos/hipergrafos Definição Um sistema de conjuntos (ou hipergrafo) é um par (X, B) onde: X é um conjunto finito (elementos chamados pontos/vértices). B é um conjunto de subconjuntos de X (blocos/hiperarestas). Grafo: Um grafo é um sistema de conjuntos com cada bloco tendo cardinalidade 2 Partição de um conjunto finito: X = {1, 2, 3, 4, 5, 6, 7, 8, 9} B = {{1, 2, 4}, {3, 9}, {5, 6, 7, 8}} Sistema de triplas de Steiner: B é um conjunto de 3-subconjuntos de X tal que para cada {x, y} X, x y, existe um único bloco B B com {x, y} B. X = {0, 1, 2, 3, 4, 5, 6} B = {{0, 1, 2}, {0, 3, 4}, {0, 5, 6}, {1, 3, 5}, {1, 4, 6}, {2, 3, 6}, {2, 4, 5}}
15 Algoritmos Combinatórios Algoritmos Combinatórios Algoritmos combinatórios são algoritmos para investigar estruturas combinatórias. Geração Construa todas as estruturas combinatórias de um certo tipo. Enumeração Compute o número de todas as distintas estruturas de um certo tipo. Busca Encontre pelo menos um exemplo de uma estrutura combinatória de um certo tipo (se tal estrutura existir). Problemas de otimização podem ser vistos como um tipo especial de problema de busca (a busca de um objeto ótimo)
16 Algoritmos Combinatórios Geração Construir todas as estruturas combinatórias de um certo tipo. Gere todos os subconjuntos/permutações/partições de um conjunto. Gere todos os cliques de um grafo. Gere todos os cliques máximos de um grafo. Gere todos os sistemas de tripla de Steiner de um conjunto finito.
17 Algoritmos Combinatórios Geração Construir todas as estruturas combinatórias de um certo tipo. Gere todos os subconjuntos/permutações/partições de um conjunto. Gere todos os cliques de um grafo. Gere todos os cliques máximos de um grafo. Gere todos os sistemas de tripla de Steiner de um conjunto finito. Enumeração Compute o número de todas as distintas estruturas de um certo tipo. Compute o número de todos os subconjuntos/permutações/partições de um conjunto. Compute o número de todos os cliques de um grafo. Compute o número de todos os cliques máximos de um grafo. Compute o número de todos os sistemas de tripla de Steiner de um conjunto finito.
18 Algoritmos Combinatórios Busca Encontre pelo menos um exemplo de uma estrutura combinatória de um certo tipo (se tal estrutura existir). Problemas de otimização podem ser vistos como um tipo especial de problema de busca (a busca de um objeto ótimo) Encontre um sistema de triplas de Steiner de um conjunto finito, se existir. (viabilidade) Encontre um clique de tamanho máximo. (otimização) Encontre, se existir, um circuito hamiltoniano num grafo. (viabilidade) Encontre circuito hamiltoniano de menor peso/custo num grafo [problema do caixeiro viajante] (otimização).
19 Dificuldade computacional de problemas combinatórios Complexidade de algoritmos e complexidade de problemas A partir dos anos 70 se estabeleceu a noção de que algoritmos eficientes são os que tem um tempo assintótico que é uma função polinomial do tamanho da entrada. A análise de algoritmos visa estudar o comportamento assintótico dos algoritmos. A teoria de complexidade computacional visa estudar a dificuldade relativa de diversos problemas. Os problemas para os quais existe um algoritmo polinomial para sua solução fazem parte da classe computacional de problemas P. Exemplo: A ordenação de um vetor de n elementos pode ser feita em tempo O(n log n). Ou seja, o problema de ordenação pertence a classe P. Para muitos problemas de busca e otimização combinatória, se desconhece um algoritmo polinomial para sua solução, mas se conhece um algoritmo polinomial para a verificação de uma solução. Fazem parte da classe NP, e são os problemas mais difíceis em NP.
20 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos.
21 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos. P = classe de problemas de decisão que podem ser resolvidos em tempo polinomial. (ex.: Caminho mais curto em um grafo P)
22 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos. P = classe de problemas de decisão que podem ser resolvidos em tempo polinomial. (ex.: Caminho mais curto em um grafo P) NP = classe de problemas de decisão que podem ser verificados em tempo polinomial. Note que P NP. (ex.: Existência de um caminho hamiltoniano em um grafo NP)
23 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos. P = classe de problemas de decisão que podem ser resolvidos em tempo polinomial. (ex.: Caminho mais curto em um grafo P) NP = classe de problemas de decisão que podem ser verificados em tempo polinomial. Note que P NP. (ex.: Existência de um caminho hamiltoniano em um grafo NP) Problemas NP-completos são aqueles em NP que são pelo menos tão difíceis quanto qualquer problema em NP (com respeito a reducibilidade polinomial).
24 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos. P = classe de problemas de decisão que podem ser resolvidos em tempo polinomial. (ex.: Caminho mais curto em um grafo P) NP = classe de problemas de decisão que podem ser verificados em tempo polinomial. Note que P NP. (ex.: Existência de um caminho hamiltoniano em um grafo NP) Problemas NP-completos são aqueles em NP que são pelo menos tão difíceis quanto qualquer problema em NP (com respeito a reducibilidade polinomial). Um dos problemas matemáticos e computacionais mais importantes é a pergunta P=NP?.
25 Dificuldade computacional de problemas combinatórios Dificuldade/complexidade de problemas de busca e otimização combinatória Muitos problemas de busca e otimização são NP-completos. P = classe de problemas de decisão que podem ser resolvidos em tempo polinomial. (ex.: Caminho mais curto em um grafo P) NP = classe de problemas de decisão que podem ser verificados em tempo polinomial. Note que P NP. (ex.: Existência de um caminho hamiltoniano em um grafo NP) Problemas NP-completos são aqueles em NP que são pelo menos tão difíceis quanto qualquer problema em NP (com respeito a reducibilidade polinomial). Um dos problemas matemáticos e computacionais mais importantes é a pergunta P=NP?. Muitos pensam que P NP, o que implicaria a inexistência de algoritmos polinomiais p/ todos os problemas NP-completos.
26 Dificuldade computacional de problemas combinatórios Algoritmos Combinatórios lidam com problemas NP-completos Busca exaustiva algoritmos de tempo exponencial; resolvem o problema exatamente. Métodos: Backtracking, Branch-and-Bound. Busca heurística (tópico não será coberto neste curso) algoritmos que exploram o espaço de possíveis soluções tentando encontrar uma solução ótima do problema; aproximam uma solução ao problema, sem garantia de valor objetivo próximo ao ótimo. Métodos: Algoritmos de busca local, Hill-climbing, Simulated annealing, Busca Tabu, Algoritmos Genéticos, etc. Algoritmos de aproximação (tópico não será coberto neste curso) algoritmos de tempo polinomial; neste caso, temos uma garantia de que a solução encontrada tem um valor objetivo próximo do ótimo.
27 Geração de Objetos Básicos Geração de Objetos Básicos Isto inclui geração de objetos combinatórios básicos, como: n-tuplas de um alfabeto finito, subconjuntos de um conjunto finito, k-subconjuntos de um conjunto finito, permutações, etc. Para fazer uma geração sequencial, precisamos impor uma ordem no conjunto de objetos a serem gerados. As ordens mais comuns são ordem lexicográfica e ordem de mudança mínima.
28 Geração de Objetos Básicos Geração Combinatória: um assunto antigo Extraido de: D. Knuth, History of Combinatorial Generation, in pre-fascicle 4B, The Art of Computer Programming Vol 4.
29 Geração de Objetos Básicos Geração de k-subconjuntos (de um n-conjunto): Ordem Lexicográfica Exemplo: k = 3, n = 5. rank T T 0 {1, 2, 3} [1, 2, 3] 1 {1, 2, 4} [1, 2, 4] 2 {1, 2, 5} [1, 2, 5] 3 {1, 3, 4} [1, 3, 4] 4 {1, 3, 5} [1, 3, 5] 5 {1, 4, 5} [1, 4, 5] 6 {2, 3, 4} [2, 3, 4] 7 {2, 3, 5} [2, 3, 5] 8 {2, 4, 5} [2, 4, 5] 9 {3, 4, 5} [3, 4, 5] Algoritmos: sucessor rank unrank
30 Geração de Objetos Básicos Gerando todos os k-subconjuntos via algoritmo de sucessor Exemplo/idéia: n = 10, Sucessor({..., 4, 8, 9, 10})={..., 5, 6, 7, 8} ksubconjuntolexsucessor ( T, k, n) U T ; i k; while (i 1) and (t i = n k + i) do i i 1; if (i = 0) then U = indefinido ; else for j i to k do u j (t i + 1) + j i; return U; Main (k, n) /* Gerar todos os k-subconjuntos de {1, 2,..., n} */ T [1, 2,..., k] repeat output T T ksubconjuntolexsucessor ( T, k, n) until T = indefinido
31 Geração de Objetos Básicos Geração de Permutações: Ordem Lexicográfica Uma permutação é uma bijeção Π : {1, 2,..., n} {1, 2,..., n}. Nós a representamos como uma lista : Π = [Π[1], Π[2],..., Π[n]]. Ordem Lexicográfica: n = 3 rank permutação 0 [1, 2, 3] 1 [1, 3, 2] 2 [2, 1, 3] 3 [2, 3, 1] 4 [3, 1, 2] 5 [3, 2, 1]
32 Geração de Objetos Básicos Sucessor para permutações em ordem lexicográfica Exemplo: Π = [3, 5, 4, 7, 6, 2, 1] Seja i = índice anterior ao sufixo decrescente = 3. Seja j= índice do sucessor de π[i] in {Π[i + 1],..., Π[n]} π[i] = 4, sucessor de π[i] = 4 em {7, 6, 2, 1} é 6, π[5] = 6, então j = 5. Troque Π[i] e Π[j], e inverta a ordem de {Π[i + 1],..., Π[n]}. Sucessor(Π) = [3, 5, 6, 1, 2, 4, 7]
33 Geração de Objetos Básicos Note que: i = max{l : Π[l] < Π[l + 1]} j = max{l : Π[l] > Π[i]}. No algoritmo seguinte, criamos uma sentinela: Π[0] = 0. PermLexSucessor(n, Π) Π[0] 0; i n 1; while (Π[i] > Π[i + 1]) do i i 1; if (i = 0) then return indefinido j n; while (Π[j] < Π[i]) do j j 1; t Π[j]; Π[j] Π[i]; Π[i] t; (troque Π[i] e Π[j]) // Inversão de Π[i + 1],..., Π[n] no local: for h i + 1 to n i 2 do t Π[h]; Π[h] Π[n + i + 1 h]; Π[n + i + 1 h] t; return Π;
34 Geração de Objetos Básicos Main (n) /* Gerar todos as permutações de {1, 2,..., n} */ Π [1, 2,..., n] repeat output Π Π PermLexSucessor(n, Π) until Π = indefinido
35 Geração de Objetos Básicos: Ordem de Mudança Mínima Geração de k-subconjuntos: Ordem de Mudança Mínima A menor diferença possível entre dois k-subconjuntos ocorre quando eles contém exatamente k 1 elementos em comum. Ordem da Porta Giratória Baseia-se na identidade (triângulo) de Pascal: ( ) ( n k = n 1 ) ( + n 1 k k 1). Defina a sequência de k-subconjuntos A n,k baseada em A n 1,k e o reverso de A n 1,k 1, da seguinte maneira: [ ] A n,k = A n 1,k 0,..., A n 1,k {n},..., An 1,k 1 0 {n}, A n,0 = [ ] for 1 k n 1 A n,n = [{1, 2,..., n}] (, n 1 k ) 1 An 1,k 1 ( k 1) 1
36 Geração de Objetos Básicos: Ordem de Mudança Mínima Exemplo: Construção de A 5,3 usando A 4,3 e A 4,2 A 4,3 = [{1, 2, 3}, {1, 3, 4}, {2, 3, 4}, {1, 2, 4}] A 4,2 = [{1, 2}, {2, 3}, {1, 3}, {3, 4}, {2, 4}, {1, 4}] A 5,3 = [{1, 2, 3}, {1, 3, 4}, {2, 3, 4}, {1, 2, 4}, {1, 4, 5}, {2, 4, 5}, {3, 4, 5}, {1, 3, 5}, {2, 3, 5}, {1, 2, 5}]
37 Geração de Objetos Básicos: Ordem de Mudança Mínima Para verificar que a ordem da porta giratória é uma ordem de mudança mínima, prove: 1 A n,k = {1, 2,..., k 1, n}. ( n k) 1 2 A n,k 0 = {1, 2,..., k}. 3 Para todo n, k, 1 k n, A n,k é uma ordem de mudança mínima de S n k. Omitimos os algoritmos para gerar k-subconjuntos seguindo a ordem da porta giratória, já que requereria mais tempo.
38 Geração de Objetos Básicos: Ordem de Mudança Mínima Geração de permutações: Ordem de Mudança Mínima Ordem de Mudança Mínima para permutações: duas permutações contíguas devem diferir por uma transposição de elementos adjacentes. O algoritmo de Trotter-Johnson usa a seguinte ordem: T 1 = [[1]] T 2 = [[1, 2], [2, 1]] T 3 = [[1, 2, 3], [1, 3, 2], [3, 1, 2][3, 2, 1], [2, 3, 1], [2, 1, 3]]
39 Geração de Objetos Básicos: Ordem de Mudança Mínima Como construir T 3 usando T 2 : Exercício: construa T 4 usando T Omitimos os algoritmos para gerar permutações seguindo a ordem detrotter-johnson, já que requereria mais tempo.
Algoritmos Combinatórios: Sudoku via Backtracking e o Problema da Cobertura Exata
Algoritmos Combinatórios: Sudoku via Backtracking e o Problema da [email protected] UFSC, Fevereiro, 2010 Solução Sudoku O jogo/puzzle Sudoku consiste de uma matriz 9 9, dividida em 9 regiões, que
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
BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1
BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.
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,
Recursividade, Tentativa e Erro
Recursividade, Tentativa e Erro Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho [email protected] BCC402 Aula 07 Algoritmos e Programação Avançada Na aula anterior Prova 2 Na aula de hoje Técnicas
Algoritmos Combinatórios: Backtracking com Bounding
Algoritmos Combinatórios: Backtracking com Bounding [email protected] UFSC, Fevereiro, 2010 Backtracking com bounding Backtracking com bounding Quando aplicamos backtracking para um problema de otimização,
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
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
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
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
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
Ciclos hamiltonianos e o problema do caixeiro viajante
Ciclos hamiltonianos e o problema do caixeiro viajante Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.
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,
Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.
Redução polinomial Permite comparar o grau de complexidade de problemas diferentes. Uma redução de um problema Π a um problema Π é um algoritmo ALG que resolve Π usando uma subrotina hipotética ALG que
Análise de Algoritmos. Slides de Paulo Feofiloff
Análise de Algoritmos Slides de Paulo Feofiloff [com erros do coelho e agora também da cris] Algoritmos p. 1 Redução polinomial Permite comparar o grau de complexidade de problemas diferentes. Uma redução
Melhores momentos AULA 24. Algoritmos p.906/953
Melhores momentos AULA 24 Algoritmos p.906/953 Problemas polinomiais Analise de um algoritmo em um determinado modelo de computação estima o seu consumo de tempo e quantidade de espaço como uma função
Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá
Grafos Hamiltonianos e o Problema do Caixeiro Viajante Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Grafo Hamiltoniano Definição: Um circuito hamiltoniano em um
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
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
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
04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II
04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr.
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
Otimização Combinatória - Parte 4
Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional
Redução de Cook-Levin e Considerações Finais
Redução de Cook-Levin e Considerações Finais André Vignatti DINF- UFPR Fechando o Ciclo de Reduções Nós reduzimos o SAT para diversos problemas de busca, como mostra a figura: Todos problemas NP CIRCUIT
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
Aula 10: Tratabilidade
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
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br A Classe de Problemas P A classe de algoritmos P é formada pelos procedimentos
Estruturas de Dados II. Caixeiro Viajante
Estruturas de Dados II Prof. a Mariella Berger Caixeiro Viajante 1. Objetivo O objetivo deste trabalho é implementar diferentes soluções para o problema clássico do Caixeiro Viajante. 2. Introdução O Problema
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
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
Programação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares
Programação Dinâmica Prof. Anderson Almeida Ferreira Adaptado do material elaborado por Andrea Iabrudi Tavares Programação Dinâmica 1950, Bellman Evitar recálculos dos subproblemas em comum Menor para
Teoria da Computação. Clique de um Grafo. Alexandre Renato Rodrigues de Souza 1
Teoria da Computação Clique de um Grafo Alexandre Renato Rodrigues de Souza 1 O que é um grafo? Definição 1: grafo é uma estruturas utilizada para representar relações entre elementos de um dado conjunto.
Algoritmos de Aproximação para o Problema do Caixeiro Viajante
TSP p.1/19 Algoritmos de Aproximação para o Problema do Caixeiro Viajante 24 de agosto de 2004 TSP p.2/19 Problema do Caixeiro Viajante Dados grafo comprimento da aresta ( ) TSP p.2/19 Problema do Caixeiro
Algoritmos de aproximação - Problema do caixeiro viajante
Algoritmos de aproximação - Problema do caixeiro viajante Marina Andretta ICMC-USP 30 de setembro de 2015 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M. R. Cerioli,
Eduardo Camponogara. DAS-9003: Introdução a Algoritmos
Caminhos Mínimos entre Todos os Vértices 1/ 48 Caminhos Mínimos entre Todos os Vértices Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: Introdução
DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios
DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios - 2013 1. Uma pessoa sobe uma escada composta de n degraus, com passos que podem alcançar entre 1 e k n degraus. Escrever equações
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios 1 Conceitos 1. Prove o Teorema da Amizade: em qualquer festa com pelo menos seis pessoas, ou três se conhecem
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
ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão
Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros
COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.
UMA BREVE INTRODUÇÃO À TEORIA DE COMPLEXIDADE PARAMETRIZADA PARTE 1 Rafael Coelho [email protected] Instituto de Matemática e Estatística Universidade de São Paulo Seminários de Teoria da Computação,
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
Percursos em um grafo
Percursos em um grafo Definição Um percurso ou cadeia é uma seqüência de arestas sucessivamente adjacentes, cada uma tendo uma extremidade adjacente à anterior e a outra a subsequente (à exceção da primeira
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios 1 Conceitos 1. Prove o Teorema da Amizade: em qualquer festa com pelo menos seis pessoas, ou três se conhecem
> Princípios de Contagem e Enumeração Computacional 1/13
Princípios de Contagem e Enumeração Computacional > Princípios de Contagem e Enumeração Computacional 1/13 Objetivos Contar/listar o número de elementos de conjuntos finitos Aplicações > Princípios de
Problema do Caixeiro Viajante
Problema do Caixeiro Viajante 1 Introdução Minimizar o custo de um ciclo hamiltoniano em um grafo completo (William R. Hamilton,1857,Around The World); Solução por enumeração: R( n ) = ( n - 1 )! Um computador
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
Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ
Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ Suponha que temos um grupo de pessoas (funcionário de uma empresa) que serão submetidos a um treinamento. Queremos identificar os grupos de
MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47
1 / 47 MATEMÁTICA DISCRETA Patrícia Ribeiro Departamento de Matemática, ESTSetúbal 2018/2019 2 / 47 1 Combinatória 2 Aritmética Racional 3 3 / 47 Capítulo 3 4 / 47 não orientados Um grafo não orientado
Escola Básica e Secundária Mouzinho da Silveira. MACS 11.º Ano Problema do Caixeiro Viajante
Escola Básica e Secundária Mouzinho da Silveira MACS 11.º Ano Problema do Caixeiro Viajante Problema do Caixeiro Viajante Trata-se de um problema matemático que consiste, sendo dado um conjunto de cidades
Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)
1 Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 3 Comparação
Introdução à classe de problemas NP- Completos
Introdução à classe de problemas NP- Completos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Introdução Considerações Práticas Em alguns casos práticos, alguns
Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7.
Matemática Discreta Capítulo 7 SUMÁRIO CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7 Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante Newton José Vieira 30 de julho de 2007
Teoria dos Grafos Aula 2
Teoria dos Grafos Aula 2 Aula passada Logística Objetivos Grafos, o que são? Formando pares Aula de hoje Mais problemas reais Definições importantes Algumas propriedades Objetivos da Disciplina Grafos
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 Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo
PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré
PERCURSOS André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré Serra 2011 Índice 1...O que é caminho e circuito 1.1...Caminho 1.2...Circuito 1.3...Classificação 2...Caminhos Eulerianos 2.1...Definição
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).
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
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
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
1.3 Isomorfismo 12 CAP. 1 CONCEITOS BÁSICOS
12 CAP. 1 CONCEITOS BÁSICOS I i I j. Essa relação de adjacência define um grafo com conjunto de vértices {I 1,...,I k }. Esse é um grafo de intervalos. Faça uma figura do grafo definido pelos intervalos
PCC173 - Otimização em Redes
PCC173 - Otimização em Redes Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de abril de 2016 Marco Antonio M. Carvalho
Matemática Discreta 10
Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 10 Prof. Jorge Cavalcanti [email protected] - www.univasf.edu.br/~jorge.cavalcanti 1 Muitas
ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron
Percursos em um grafo
Percursos em um grafo Definição Um percurso ou cadeia é uma seqüência de arestas sucessivamente adjacentes, cada uma tendo uma extremidade adjacente à anterior e a outra a subsequente (à exceção da primeira
CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:
Matemática Discreta ESTiG\IPB Cap4. Elementos da Teoria de Grafos pg 1 CAP4. ELEMENTOS DA TEORIA DE GRAFOS Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E), sendo: Exemplos
Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo
Projeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais [email protected] 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II
05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr.
O Problema da 3- Coloração de Grafos
Otimização Combinatória O Problema da - Coloração de Grafos Guilherme Zanardo Borduchi Hugo Armando Gualdron Colmenares Tiago Moreira Trocoli da Cunha Prof.ª Marina Andretta Introdução ao Problema Problema
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação
