UMA SOLUÇÃO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA EUCLIDIANA UTILIZANDO TRIANGULAÇÃO DE DELAUNAY

Tamanho: px
Começar a partir da página:

Download "UMA SOLUÇÃO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA EUCLIDIANA UTILIZANDO TRIANGULAÇÃO DE DELAUNAY"

Transcrição

1 UMA SOLUÇÃO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA EUCLIDIANA UTILIZANDO TRIANGULAÇÃO DE DELAUNAY Daniel R. Trindade Eduardo Zambon Maria Claudia S. Boeres Flávio M. Varejão UFES Universidade Federal do Espírito Santo Departamento de Informática Av. Fernando Ferrari, s/n Goiabeiras Vitória ES Brasil {danielrt, zambon, boeres, fvarejao}@inf.ufes.br RESUMO Este trabalho trata do problema da Árvore Geradora Mínima Euclidiana, por meio de um método de solução que combina um algoritmo clássico de Teoria dos Grafos (algoritmo de Prim) com um estrutura de dados empregada na área de Geometria Computacional, a triangulação de Delaunay. Inicialmente o algoritmo de Prim, em sua forma original, é apresentado e discutido. Em seguida, um método para se determinar a triangulação de Delaunay é fornecido. Ao final, uma versão do algoritmo de Prim com o uso da triangulação de Delaunay é proposta, e então é feita uma comparação entre essa solução e a clássica. Nos testes realizados, o uso da triangulação de Delaunay permitiu reduzir consideravelmente o tempo de execução do algoritmo de Prim, demonstrando assim as vantagens de seu uso no problema abordado nesse artigo. PALAVRAS CHAVE. Árvore geradora mínima euclidiana, algoritmo de Prim, triangulação de Delaunay. Área de classificação principal: TG - Teoria dos Grafos. ABSTRACT This work deals with the Euclidean Minimum Spanning Tree problem, with a solution method that merges a classical Graph Theory algorithm (Prim algorithm) with a data structure usually employed on the Computational Geometry area, the Delaunay Triangulation. Initially, Prim algorithm, in its original form, is presented and discussed. After that, a method to find the Delaunay triangulation of a set of points is given. Finally, we present a different version of Prim algorithm that uses the Delaunay triangulation, and we compare this algorithm with the original one. In our tests, the use of the Delaunay triangulation lead to a considerable reduction of the execution time of Prim algorithm, showing the advantages of use of the triangulation in the problem here presented. KEYWORDS. Euclidean minimum spanning tree, Prim algorithm, Delaunay triangulation. Main area: Graph Theory. 614

2 1. Introdução O problema da árvore geradora mínima euclidiana (AGME) está presente em diversas situações. Segundo Preparata & Shamos (1985), AGMEs têm sido usadas em aplicações que vão desde a área de reconhecimento de padrões até algoritmos que fornecem soluções aproximadas para o problema do caixeiro viajante. Ainda, Augustson & Minker (1970) tratam de métodos de clustering baseados em grafos que se utilizam de AGMEs. Preparata & Shamos (1985) definem o problema da seguinte maneira: dado um conjunto de pontos em R, deseja-se determinar a árvore de menor peso que liga esses pontos. Este caso é um pouco diferente do problema geralmente abordado pela literatura de Teoria dos Grafos, onde se deseja determinar a árvore de menor peso de um grafo G(V, E), não direcionado e conexo. Para esse último, existem procedimentos clássicos que fornecem bom desempenho, como os algoritmos de Prim (1957), Kruskal (1956) e Borůvka, cujo trabalho foi traduzido por Nesetril et al. (001). Como solução inicial para o problema da AGME pode-se, por exemplo, gerar um grafo G(V,E) completo a partir do conjunto de pontos e então usá-lo como entrada para um dos algoritmos citados. Os pontos correspondem diretamente ao conjunto de vértices V. O conjunto E de arestas é formado pela combinação desses pontos, num total de n(n 1) arestas, onde n é o número de pontos. Apesar de simples, esta solução não apresenta desempenho satisfatório para um conjunto grande de pontos. Segundo Eisner (1997), o tempo de execução para os algoritmos citados anteriormente depende basicamente do tamanho do conjunto de arestas do grafo de entrada. Considerando que para o problema de geração de AGMEs existem n(n 1) arestas, então o tempo de execução acaba sendo proporcional a O(n ). Para contornar essa situação, é preciso reduzir o número de arestas a serem analisadas. Neste trabalho foi observado que isso pode ser feito através do uso de uma estrutura de dados da área de Geometria Computacional: a triangulação de Delaunay, como mostrada por de Berg et al. (000). Pelo fato dessa estrutura pertencer a uma área de pesquisa fora de Teoria de Grafos, seu uso no problema de obtenção de árvores geradoras mínimas não é muito discutido, o que torna conveniente a apresentação de um procedimento que envolva esse tipo de estrutura. O objetivo desse artigo é mostrar as vantagens do uso da triangulação de Delaunay na solução do problema de geração de AGMEs. Para isso, é feita uma comparação entre a aplicação de um dos algoritmos clássicos de Teoria dos Grafos, o algoritmo de Prim, com e sem a utilização desse tipo de estrutura. O restante do texto está organizado da seguinte forma. Inicialmente o algoritmo de Prim é discutido na seção. Em seguida, um procedimento para a determinação da triangulação de Delaunay de um conjunto de pontos é fornecido na seção 3. A seção 4 apresenta uma solução que combina os dois algoritmos anteriores. Finalmente, os resultados computacionais obtidos são mostrados na seção 5 e as conclusões na seção 6.. Algoritmo de Prim O algoritmo de Prim é uma solução clássica para o problema da geração de árvores geradoras mínimas. Sua entrada é um grafo G(V,E), onde cada aresta de E possui um peso associado. Esse procedimento é mostrado no algoritmo 1. O algoritmo começa (linha 1) com a criação de uma variável AGM, inicializada com a representação de uma árvore vazia e que ao fim da execução será igual a uma AGM do grafo G(V,E). Em seguida, um vértice arbitrário v de V é adicionado à AGM (linha ). No laço das linhas 5 9 são determinadas as arestas que irão compor a AGM. Primeiramente é feita a busca pela aresta e de menor peso que não pertence à AGM e que não gera ciclo em AGM (linha 6). Essa aresta é então adicionada em AGM e o contador i, que indica o número de arestas em AGM, é 615

3 Entrada: G(V, E) grafo ponderado Saída: AGM uma das árvores geradoras mínimas de G AGM árvore vazia v algum vértice arbitrário de V Adicione v à AGM i 0 Enquanto i < n 1 faça e a menor aresta de G que não gera ciclo e não pertença à AGM Adicione e à AGM i i + 1 Fim enquanto Retorne AGM Algoritmo 1: Prim incrementado. O laço termina quando o número de arestas em AGM é igual a n 1 (linha 5), onde n é o número de vértices de G(V,E). Nesse momento, AGM é igual a uma AGM de G(V,E) e o algoritmo termina. O tempo de execução do algoritmo de Prim é determinado pelo tempo gasto no processo de busca por uma aresta (linha 6). Segundo Eisner (1997), para se realizar essa tarefa, geralmente é utilizada uma estrutura de dados do tipo heap..1. Algoritmo de Prim com uso de heaps De forma geral, o heap é uma estrutura de dados do tipo árvore que segue a seguinte regra: para todo nó i que não seja a raiz, o pai de i possui uma chave menor que a de i. Essa característica faz com que o elemento de menor chave existente no heap esteja sempre na raiz, permitindo sua rápida localização. Para o problema tratado aqui, é importante citar três operações que podem ser realizadas sobre um heap: InserirElem, que permite a inserção de um novo elemento no heap; ExtrairMin, que extrai o elemento de menor chave do heap; e TentarDiminuirChave, que tenta diminuir o valor da chave de um elemento do heap. Por limitações de espaço, os algoritmos dessas operações não serão mostrados aqui. Para maiores detalhes sobre esse tipo de estrutura, veja Cormen et al. (1990). A versão do algoritmo de Prim com o uso da estrutura de dados heap, adaptado para o problema da AGME, é mostrado no algoritmo. Sua entrada consiste em um conjunto de pontos P em R, onde cada ponto p P possui, além de suas coordenadas, dois outros atributos: agm pai, que guarda o ponto pertencente à AGM mais próximo a p; e chave, que guarda a distância entre p e agm pai. O algoritmo começa com a criação do heap H vazio e a inicialização de AGM como uma árvore vazia (linhas 1 e ). Em seguida, no laço das linhas 3 6, todos os pontos do conjunto P são adicionados em H com o campo chave com o valor. Nas linhas seguintes (7, 8) um elemento é extraído de H e é adicionado na árvore. Observe que nesse momento, como todos os elementos do heap têm o campo chave de mesmo valor, essa operação de extração corresponde a escolher aleatoriamente um ponto de P para adicionar na AGM. No laço das linhas 9 17 ocorre a construção da AGM. Nele, as distâncias entre todos os pontos existentes em H e o último ponto adicionado na AGM são calculadas no laço mais interno (linhas 10 13). O procedimento TentarDiminuirChave é usado nesse momento para guardar as distâncias calculadas quando necessário (linha 1). Sendo agm elem o último ponto adicionado em AGM, heap elem um ponto de H e d a distância entre esses, o procedimento TentarDiminuirChave verifica se d é menor que o valor armazenado no campo chave de heap elem. Se isso ocorre, então chave é atualizada para d e agm pai passa a apontar para agm elem. Em seguida o menor elemento de H, agm elem, é extraído e adicionado 616

4 Entrada: P conjunto de pontos em R Saída: AGM uma árvore geradora mínima que liga os pontos de P H heap vazio AGM árvore vazia Para todo p P faça p.chave InserirElem(H, p) Fim para todo agm elem ExtrairMin(H) Adicione agm elem à AGM Enquanto H.tam > 0 faça Para todo heap elem H faça d distância entre agm elem e heap elem TentarDiminuirChave(H, heap elem, d) Fim para todo agm elem ExtrairMin(H) Adicione agm elem à AGM Adicione a aresta formada pelo nós agm elem e agm elem.agm pai à AGM Fim enquanto Retorne AGM Algoritmo : Prim Heap em AGM (linhas 14 e 15). O campo agm pai de agm elem aponta para o ponto de AGM do qual ele está mais próximo. Isso permite identificar a aresta que deverá ser adicionada em AGM, que é dada pelos pontos agm elem e agm pai. O laço das linhas 9 17 é repetido até que H seja vazio, ou seja, quando AGM contiver todos o pontos de P. Nesse momento, AGM corresponde a uma AGM de P. O tempo necessário para a execução do procedimento Prim Heap é obtido através da soma das contribuições dos procedimentos InserirElem, ExtrairMin e TentarDiminuirChave. Segundo Cormen et al. (1990), o heap de Fibonacci, criado por Fredman & Tarjan (1987), apresenta o melhor desempenho com relação a outros tipos de heap, para essas operações. Seus tempos de execução são proporcionais a Θ(1), O(lg n) e Θ(1), respectivamente. No laço das linhas 3 6, a operação InserirElem é executada n vezes, onde n é o número de pontos em P. Com isso, a contribuição total de InserirElem no tempo total de execução é Θ(n). A operação ExtrairMin também é executada n vezes. Logo, sua contribuição para o tempo de execução de Prim Heap é O(nlg n). Por último, TentarDiminuirChave contribui com O(n ). Isso ocorre pois, considerando o pior caso, quando sempre é necessário alterar o valor da chave, esse procedimento é executado n(n 1) vezes (número total de arestas). Apesar dessa situação dificilmente acontecer, continua sendo necessário calcular a distância para todas as arestas a fim de testá-las, o que ainda é custoso para conjuntos grandes de pontos. Ou seja, o tempo de execução do algoritmo permanece dependente do número de arestas a serem analisadas. Para contornar esse problema, é preciso diminuir o número de arestas candidatas a fazerem parte da AGM. Como mencionado anteriormente, isso é possível com o uso de uma outra estrutura de dados: a triangulação de Delaunay. 3. Triangulação de Delaunay Sendo P um conjunto de pontos no plano, uma triangulação de P consiste na subdivisão T no plano onde não é possível adicionar qualquer aresta conectando dois pontos de P sem que essa intercepte uma das arestas já existentes. A figura 1 mostra duas triangulações distintas para um 617

5 (a) (b) Figura 1: Exemplos de triangulações mesmo conjunto de pontos. Segundo de Berg et al. (000), todas as triangulações de um conjunto de pontos possuem em comum as seguintes características: Cada triangulação tem em comum as arestas que compõem as faces do polígono convexo formado por P ; e Todas as triangulações de P possuem n k triângulos e 3n 3 k arestas, onde n é número de pontos em P e k o número de pontos que fazem parte das faces do polígono convexo formado por P. A triangulação de Delaunay de um conjunto de pontos P é uma triangulação T onde nenhuma de suas arestas é ilegal. Uma aresta pode ser classificada como legal ou ilegal, de acordo com o seguinte critério: seja a aresta {a, b} adjacente aos triângulos t1 e t formados respectivamente pelos pontos a, b e c, e a, b e d. A aresta {a,b} é uma aresta legal se e somente se o ponto d está localizado fora da circunferência definida pelos pontos a, b e c. Caso contrário, {a, b} é ilegal. Ainda, se os pontos a, b, c e d formam um quadrilátero convexo, então exatamente uma das arestas {a,b} e {c,d} é legal. Para mais detalhes sobre essas classificação das arestas, veja a seção Um uso comum para esse tipo de estrutura de dados ocorre na modelagem e visualização em perspectiva de superfícies terrestres. Entretanto, nesse artigo, a aplicabilidade dessa estrutura baseia-se na seguinte propriedade, demonstrada por Preparata & Shamos (1985): se T é a triangulação de Delaunay do conjunto de pontos P, então as arestas que compõem a AGME de P também fazem parte de T. Isso significa que para determinar a AGME de P, é suficiente analisar somente as arestas que fazem parte de T. Dessa forma, o número de arestas candidatas a fazerem parte da AGME é reduzido significativamente, passando de n(n 1) para 3n 3 k arestas Algoritmo para obtenção da triangulação de Delaunay O algoritmo 3, retirado de de Berg et al. (000), é usado para determinar a triangulação de Delaunay de um conjunto de pontos P. Nele, os pontos são adicionados um a um na triangulação de forma aleatória, e busca-se manter a triangulação de Delaunay do conjunto atual de pontos. O parâmetro de entrada para o procedimento Triangulação Delaunay é um conjunto P de pontos, organizado na forma de um vetor indexado de 0 a n 1, onde n é o número de pontos existentes em P. O processo de triangulação começa com a adição dos pontos P[n],P[n + 1] e P[n + ] em P. Esses pontos devem ser escolhidos de forma que o triângulo formado por eles contenha todos os pontos do conjunto. Segundo de Berg et al. (000), se P é um conjunto de pontos em R, os pontos P[n] = (0,3M), P[n + 1] = (3M,0) e P[n + ] = ( 3M, 3M), onde M é o máximo valor absoluto dentre as coordenadas de P, podem ser usados. Esse é o primeiro triângulo a compor a triangulação T. No laço das linhas 4 0 os pontos de P são adicionados em T. Primeiramente o ponto P[i] é inserido em T. Em seguida, é feita uma busca pelo triângulo de T que contém P[i]. Uma vez que o triângulo (P[n],P[n + 1],P[n + ]) contém todos os pontos de P, então é garantido que P[i] pertence a pelo menos um dos triângulos existentes em T. Seja t o triângulo que contém P[i]. Duas situações podem acontecer: (1) P[i] está localizado no interior de t; ou () P[i] está localizado em uma das arestas de t. 618

6 Entrada: P conjunto de pontos em R Saída: T a triangulação de Delaunay de P Acrescente os pontos P[n],P[n + 1] e P[n + ] a P, de maneira que o triângulo (P[n],P[n + 1],P[n + ]) contenha todos os pontos originais de P Inicialize T com (P[n],P[n + 1],P[n + ]) i 0 Enquanto i < n faça Insira P[i] em T Ache o triângulo (P[a], P[b], P[c]) que contém P[i] // veja seção Se P[i] pertence ao interior de (P[a],P[b],P[c]) então Adicione arestas ligando P[i] aos vértices de (P[a],P[b],P[c]) LegalizaAresta(P[i], {P[a],P[b]}, T ) LegalizaAresta(P[i], {P[a],P[c]}, T ) LegalizaAresta(P[i], {P[b],P[c]}, T ) Senão // P[i] está localizado sobre uma das arestas de (P[a], P[b], P[c]), por exemplo, sobre a aresta (P[b], P[c]) Retire a aresta {P[b], P[c]} de T Adicione arestas ligando P[i] aos vértices de (P[a],P[b],P[c]) e ao vértice P[d] do triângulo (P[d],P[b],P[c]) também incidente a aresta {P[b],P[c]} LegalizaAresta(P[i], {P[b],P[a]}, T ) LegalizaAresta(P[i], {P[c],P[a]}, T ) LegalizaAresta(P[i], {P[b],P[d]}, T ) LegalizaAresta(P[i], {P[c],P[d]}, T ) Fim se Fim enquanto Retire os pontos P[n], P[n + 1] e P[n + ] e as arestas incidentes a esses pontos de T Retorne T LegalizaAresta(P[i], {P[a],P[b]}, T ): Se {P[a], P[b]} é uma aresta ilegal então Seja o triângulo (P[a],P[b],P[d]) adjacente ao triângulo (P[a],P[b],P[i]) ao longo da aresta {P[a],P[b]} Substitua {P[a],P[b]} pela aresta {P[i],P[d]} LegalizaAresta(P[i], {P[a],P[d]}, T ) LegalizaAresta(P[i], {P[b],P[d]}, T ) Fim se Algoritmo 3: Procedimento Triangulação Delaunay Se a situação (1) ocorre, então são traçadas arestas que ligam P[i] aos vértices de t (figura (a)). Se a situação () ocorre, a aresta e, na qual P[i] se encontra, é excluída e quatro novas arestas são então criadas ligando P[i] aos pontos do quadrilátero formado pela exclusão de e (figura (b)). Procedendo dessa forma, T continua sendo uma triangulação após a inserção de P[i]. Entretanto não é garantido que T continue sendo uma triangulação de Delaunay, uma vez que a adição de P[i] pode fazer com que algumas das antigas arestas se tornem ilegais. Para identificar quais arestas devem ser analisadas, observe que uma aresta que antes era legal só pode se tornar ilegal se um de seus triângulos incidentes for alterado. Dessa forma, as possíveis arestas ilegais são as do antigo triângulo t no qual P[i] foi inserido. Considerando por exemplo a figura (a), a inserção de P[i] pode fazer com que as arestas {P[a],P[b]}, {P[a],P[c]} 619

7 (a) (b) Figura : Efeito da inserção de um ponto na triangulação e {P[c], P[b]} se tornem ilegais. Para solucionar esse problema, o procedimento LegalizaAresta, definido nas linhas 3 9 do algoritmo 3, é executado para cada aresta potencialmente ilegal. Seus parâmetros de entrada são o ponto inserido P[i], a aresta {P[a],P[b]} que se deseja verificar e a triangulação T. Se {P[a],P[b]} é ilegal, então ela é trocada pela aresta {P[i],P[d]} onde P[d] é o ponto do triângulo (P[a],P[b],P[d]) adjacente a (P[a],P[b],P[i]) ao longo da aresta {P[a],P[b]}. Essa troca pode fazer com que outras arestas se tornem ilegais e LegalizaAresta é então executado recursivamente para essas arestas. Ao final do laço das linhas 4 0, T é uma triangulação de Delaunay. Na linha 1, os pontos P[n],P[n + 1] e P[n + ] e todas as arestas que incidem sobre eles são retirados de T, pois não fazem parte do conjunto original de pontos, e o algoritmo termina Busca por um triângulo Para se realizar a busca por um triângulo, referente à linha 6 do algoritmo 3, um grafo D direcionado e sem ciclos pode ser usado como estrutura de busca. Nele, cada nó que não pertence às folhas representa um triângulo que já existiu em T, mas que foi excluído. As folhas representam os triângulos atuais de T. Como exemplo, considere a figura 3. A figura 3(a) mostra parte de uma triangulação, composta pelos triângulos t1 e t. A estrutura D correspondente tem nesse momento dois nós, cada um representante de seu respectivo triângulo. A figura seguinte, 3(b), mostra o efeito em D da inserção de um ponto P[i]: são criados três nós, na estrutura de busca, correspondentes aos novos triângulos t3, t4 e t5. Esses nós são filhos do nó t1, uma vez que P[i] se encontra no interior do triângulo t1. A estrutura D representa, portanto, a relação entre a posição dos novos triângulos com os antigos. A figura 3(c) mostra o efeito do procedimento LegalizaAresta sobre D: na figura, os triângulos t5 e t foram substituídos pelos triângulos t6 e t7. Para refletir essa mudança em D, os nós t5 e t são ligados a cada um dos nós correspondentes a t6 e t7. Por fim, a figura 3(d) mostra como D trata o caso em que P[i] está localizado sobre umas das arestas de T. Usando a estrutura D, o triângulo que contém o ponto p pode ser encontrado da seguinte forma: a busca começa na raiz t0 de D, que corresponde ao triângulo (P[n],P[n + 1],P[n + ]). Em seguida, são verificados os nós t1, t e t3, filhos de t0. Como o triângulo t0 contém p e os triângulos t1, t e t3 são resultantes da subdivisão de t0, então é garantido que pelo menos um dentre os triângulos t1, t e t3 contém p. Suponha que p esteja localizado em t3. Os nós filhos de t3 são então verificados. Esse processo é repetido até que se chegue a um nó folha, o qual corresponde ao triângulo existente atualmente em T e que contém p. Como cada nó pode possuir no máximo três filhos, então a busca é feita em tempo linear em relação ao número de nós do caminho de busca Determinando se uma aresta é legal ou ilegal Resta ainda discutir como se deve verificar se uma aresta é ilegal ou não. Seja e = {P[b],P[c]} a aresta que se deseja testar, e os triângulos (P[a],P[b],P[c]) e (P[b],P[c],P[d]) adjacentes à e. Se P[d] está localizado no interior da circunferência definida pelos pontos P[a], P[b] e P[c], então e é ilegal. As equações (1) e () permitem determinar rapidamente os parâmetros 60

8 (a) (b) (c) (d) Figura 3: Construção da estrutura de busca D da circunferência formada por três pontos: y centro = {(x c x a) + (yc ya)}(x b x a ) + (x a x c ){(yb y a) + (x b x a)}, (1) (y c y a )(x b x a ) + (x c x a )(y a y b ) x centro = (y b y a ) + (x b x a ) + (y a y b )y centro. () (x b x a ) O teste acima funciona corretamente para a maioria dos casos, mas não pode ser usado quando os pontos P[n], P[n+1] e P[n+] estão envolvidos. Se e, por exemplo, for uma das arestas do triângulo (P[n],P[n+1],P[n+]), então ela não deve ser excluída antes que o algoritmo chegue ao fim. Dessa forma, para testar se uma aresta é ilegal, é necessário considerar também a existência do triângulo (P[n],P[n + 1],P[n + ]). Isso é feito da seguinte maneira: Se b e c são índices maiores ou iguais a n, então significa que {P[b],P[c]} é uma aresta pertencente ao triângulo (P[n],P[n + 1],P[n + ]). Nesse caso, decide-se que a aresta é legal pois o triângulo (P[n],P[n + 1],P[n + ]) deve ser mantido. Se os índices a, b, c e d são todos menores que n, então esse é o caso normal e o teste da circunferência deve ser realizado para determinar se a aresta é ilegal ou não. Se exatamente um dentre a, b, c e d é maior ou igual a n, então podem ocorrer os seguintes casos: b ou c é maior do que n. Nesse caso, se o quadrilátero formado pelos pontos P[a], P[b], P[c] e P[d] é convexo, então a aresta {P[b],P[c]} deve ser substituída por {P[a],P[d]}, uma vez que essa última pode pertencer à triangulação final. Logo, decide-se que a aresta é ilegal. Caso contrário, decide-se que a aresta é legal. a ou d é maior ou igual a n. Nesse caso decide-se que a aresta é legal uma vez que não é correto substituir {P[b],P[c]} por {P[a],P[d]}. Se dois dos índices a, b, c e d são maiores ou iguais a n, então um dentre a e b, e um dentre c e d são maiores ou iguais a n. Não pode ocorrer de b e c serem ambos maiores ou iguais a n pois isso já foi tratado anteriormente. Nesse caso, se o quadrilátero formado pelos pontos P[a], P[b], P[c] e P[d] é convexo, então o teste da circunferência é utilizado para determinar se a aresta é legal ou não. Caso contrário, decide-se que a aresta é legal. O procedimento Triangulação Delaunay tem tempo de execução proporcional a O(nlg n). Sua análise de complexidade pode ser encontrada em de Berg et al. (000). 61

9 4. Algoritmo de Prim com uso da triangulação de Delaunay Como visto anteriormente, somente o uso da estrutura de dados heap não é suficiente para garantir uma solução com um bom tempo de execução para a tarefa de se determinar a AGME de um grande conjunto de pontos. Isso ocorre devido ao elevado número de arestas que ainda precisam ser analisadas pelo algoritmo. Para contornar esse problema, a estrutura de dados triangulação de Delaunay é utilizada juntamente com o heap, como mostra o algoritmo 4. Esse procedimento tem como entrada um conjunto de pontos P e sua idéia principal consiste em obter a triangulação de Delaunay de P a fim de reduzir o conjunto de arestas a serem analisadas pelo algoritmo. Da mesma forma que Prim Heap, Prim HD inicia com a criação de um heap vazio H e uma árvore vazia AGM (linhas 1 e ). Em seguida, a triangulação de Delaunay T dos pontos P é obtida (linha 3). A construção da AGM começa na linha 4. Nesse momento, um ponto p qualquer de P é adicionado em AGM. A partir desse ponto a árvore é expandida até que a AGME seja obtida. O próximo passo é encontrar o ponto que se situa mais próximo de p. No algoritmo Prim Heap, é preciso calcular as distâncias entre p e todos os outros pontos do conjunto a fim de se encontrar o ponto desejado. Com o uso da triangulação de Delaunay isso não é mais necessário, uma vez que essa permite a rápida obtenção dos pontos vizinhos mais próximos de p. Considere, por exemplo, a figura 4, que mostra a triangulação de Delaunay para um conjunto de pontos. O ponto a é vizinho dos pontos b, c, d, e, f e g. Figura 4: Vizinhos mais próximos de um ponto Uma vez obtidos os pontos vizinhos de p, esses são inseridos no heap H através do laço das linhas Para cada novo vizinho, é calculada a distância entre ele e o ponto p, e o resultado é armazenado no campo chave de vizinho. Além disso, o campo agm pai passa a apontar para p (linha 8). Dessa forma, o heap H corresponde a uma lista de vizinhos mais próximos da árvore AGM que está sendo formada. No laço das linhas 11 7 a AGME é construída. Na linha 1, o ponto p mais próximo da árvore parcial é obtido através da operação ExtrairMin. Observe que, diferente do que ocorre em Prim Heap, H não contém todos os pontos de P, mas somente os pontos vizinhos mais próximos de AGM. Isso reduz o tempo execução de ExtrairMin significativamente, assim como o tempo de todas as outras operações sobre H. O ponto p e a aresta que o liga à árvore parcial são então adicionados em AGM. Com a adição de p, AGM passa a ter novos vizinhos. Entretanto, nem todos os vizinhos de p devem ser inseridos. Sendo vizinho um dos vizinhos de p, três situações podem ocorrer: 1. vizinho já existe em AGM: nesse caso a inserção de vizinho em H provoca um ciclo, destruindo a árvore parcial AGM. Portanto, vizinho deve ser descartado;. vizinho não pertence a AGM e nem a H (linha 1): nesse caso, a distância d entre p e vizinho é calculada, e vizinho é inserido em H. Com isso, a lista de pontos vizinhos de AGM passa a conter mais um elemento; 3. vizinho não pertence à AGM, mas já se encontra em H: nessa situação, a distância d entre p e vizinho é calculada. Se d é menor que o valor existente no campo chave de vizinho, então é necessário atualizar seu valor para d, assim como o ponteiro agm pai para p. Isso é feito pela operação TentarDiminuirChave (linha 0). 6

10 Entrada: P conjunto de pontos em R Saída: AGM uma árvore geradora mínima que liga os pontos de P H heap vazio AGM árvore vazia T Triangulação Delaunay(P ) Adicione um ponto p qualquer de P em AGM vizinhos pontos vizinhos de p na triangulação T Para todo vizinho vizinhos faça d distância entre p e vizinho vizinho.agm pai p InserirElem(H, vizinho, d) Fim para todo Enquanto H.tam > 0 faça p ExtrairMin(H) Adicione p em AGM Adicione a aresta formada pelo pontos p e p.agm pai em AGM vizinhos pontos vizinhos de p na triangulação T Para todo vizinho vizinhos faça Se vizinho / AGM então d distância entre p e vizinho Se vizinho H então TentarDiminuirChave(H, vizinho, d) Senão vizinho.agm pai p InserirElem(H, vizinho, d) Fim se Fim se Fim para todo Fim enquanto Retorne AGM Algoritmo 4: Prim HD Quando não existirem mais elementos em H para serem extraídos (linha 11), a variável AGM é igual à AGME do conjunto de pontos P. Como H só contém os vizinhos mais próximos de AGM, o tempo de execução das operações sobre o heap diminui consideravelmente. Além disso, o fato de não ser necessário calcular todas as arestas também influencia positivamente para a redução do tempo de execução, uma vez que as operações de cálculo da distância e TentarDiminuirChave são executadas menos vezes do que acontece no procedimento Prim Heap. 5. Resultados Computacionais Os resultados dos testes realizados são mostrados na tabela 1. Nela, as colunas a 5 indicam os tempos de execução dos algoritmos implementados. As linhas referem-se a arquivos contendo conjunto de pontos no plano, utilizados como entrada. Esses arquivos foram retirados do repositório de dados TSPLIB (008) e o número de pontos contidos em cada um deles aparece em seu nome. Por exemplo, o arquivo pla7397 contém 7397 pontos. Os tempos de execução são dados em segundos. Para o algoritmo Prim Heap foram implementados três tipos de heap, retirados de Cormen et al. (1990): heap binário, heap binomial e heap de Fibonacci. Esses são indicados respecti- 63

11 prim bna prim bno prim fib prim hd pla rl brd d pla pla Tabela 1: Tempos de execução para os algoritmos implementados vamente pelas colunas prim bna, prim bno e prim fib. A coluna prim hd refere-se ao algoritmo 4. Esses algoritmos foram implementados na linguagem Python. Apesar dessa ser uma linguagem interpretada e, por isso mais lenta, ela atende à tarefa de se realizar uma comparação entre diferentes soluções. Estima-se que seja possível reduzir o tempo total de execução em até dez vezes se uma linguagem compilada como C for utilizada. Os testes foram realizados em uma máquina com a seguinte configuração: Processador AMD Athlon(tm) 64 X Dual Core 3800+, Cache 51 KB; Placa mãe ASUS MNPV-VM; 1 GB de memória RAM DDR 533; HD SATA de 80 GB; Sistema operacional Debian GNU/LINUX 4.0; Kernel amd64; Python.4.4. A figura 5 mostra um gráfico construído a partir da tabela 1. Nele é possível visualizar melhor o comportamento dos algoritmos implementados. Como pode ser visto, o algoritmo Prim HD apresentou os melhores resultados dentre as soluções discutidas. Considerando o arquivo pla85900, que contém o maior conjunto de pontos existentes no TSPLIB, o algoritmo Prim HD foi 16 vezes mais rápido do que a pior solução, o Prim Heap com heap binomial, o que demonstra a vantagem do uso da estrutura triangulação de Delaunay no problema tratado nesse artigo. Uma observação especial deve ser feita com relação a um dos resultados obtidos com prim hd: para o conjunto de pontos rl11849, o tempo de execução foi menor do que para o conjunto pla7397, o que contraria a tendência de crescimento. Uma possível causa para esse comportamento é que os pontos do conjunto rl11849 estão dispostos de tal maneira que a estrutura de busca formada durante o procedimento de geração da triangulação de Delaunay torna a busca pelo triângulo que contém um determinado ponto mais rápida. Para finalizar, no gráfico 5 é possível ainda observar que as soluções que utilizam somente o heap possuem curvas semelhantes e com tendência de crescimento quadrático, o que era esperado. 6. Conclusões Este artigo mostra as vantagens do uso da estrutura de dados triangulação de Delaunay na solução do problema de obtenção de árvores geradoras mínimas euclidianas. Para isso é feita uma comparação entre a aplicação do algoritmo de Prim com e sem o uso desse tipo de estrutura. Nos testes realizados, o uso da triangulação de Delaunay permitiu reduzir o tempo de execução do algoritmo de Prim em até 16 vezes, para algumas instâncias do TSPLIB. Esses resultados confirmam a análise de complexidade computacional dos algoritmos estudados. Uma vez que a AGME pode ser empregada na solução de outros problemas importantes, como por exemplo, no Caixeiro Viajante e no projeto de redes, essa melhoria de desempenho também tem efeito positivo no tempo de execução destes algoritmos. No que diz respeito ao algoritmo de obtenção da triangulação de Delaunay, destaca-se como contribuição adicional deste trabalho, uma apresentação mais detalhada em relação ao que se encontra na literatura de Geometria Computacional, além de uma discussão mais aprofundada sobre aspectos de sua implementação. 64

12 tempo prim bna + prim bno prim fib prim hd número de pontos Figura 5: Gráfico de tempo de execução Referências Augustson, J. G. & Minker, J. (1970). An analysis of some graph theoretical cluster techniques. Journal of the ACM, 17(4): Cormen, T. H., Leiserson, C. E., & Rivest, R. L. (1990). Introduction to algorithms. McGraw-Hill, 3rd edition. de Berg, M., van Kreveld, M., Overmars, M., & Schwarzkopf, O. (000). Computational Geometry: Algorithms and Applications). Springer, rd edition. Eisner, J. (1997). State-of-the-art algorithms for minimum spanning trees: A tutorial discussion. jason/papers/ms97. Fredman, M. L. & Tarjan, R. E. (1987). Fibonacci heaps and their uses in improved network optimization algorithms. Journal of the Association for Computing Machinery, 34: Kruskal, J. B. (1956). On the shortest spanning subtree of a graph and the traveling salesman problem. Proceedings of the American Mathematical Society, 7: Nesetril, J., Milkova, E., & Nesetrilova, H. (001). Otakar boruvka on minimum spanning tree problem translation of both the 196 papers, comments, history. Discrete Mathematics, 33:3 36. Preparata, F. P. & Shamos, M. I. (1985). Computational Geometry: An Introduction. Springer. Prim, R. C. (1957). Shortest connection networks and some generalizations. Bell System Technical Journal, 36: TSPLIB (008). 65

Professor: Anselmo Montenegro Conteúdo (aula 7): - Noções de estruturas de dados topológicas. Instituto de Computação - UFF

Professor: Anselmo Montenegro  Conteúdo (aula 7): - Noções de estruturas de dados topológicas. Instituto de Computação - UFF Geometria Computacional Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo (aula 7): - Noções de estruturas de dados topológicas 1 Roteiro Introdução Representação por grafos: grafo de incidências

Leia mais

Sub-grafo. Árvore Geradora Mínima

Sub-grafo. Árvore Geradora Mínima Comentários da aula anterior Componentes Fortemente Conectados (algoritmo) 1. Chama BuscaEmProfundidade (G) para obter os tempos de término (t[u], ou f[u]) para todos os vértices de G, isto é, enquanto

Leia mais

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Grafos: componentes fortemente conexos, árvores geradoras mínimas Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1 Componentes fortemente conexos Um componente fortemente

Leia mais

Árvore Geradora Mínima

Á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 mais

Algoritmos e Estruturas de Dados II

Algoritmos e Estruturas de Dados II Algoritmos e Estruturas de Dados II Grafos VI: Grafos Ponderados & Caminhos Mínimos (Bellman-Ford) Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis

Leia mais

5COP096 TeoriadaComputação

5COP096 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 mais

Terrenos. Triangulações de Delaunay João Comba

Terrenos. Triangulações de Delaunay João Comba Terrenos Triangulações de Delaunay João Comba Terrenos Terrenos Conjunto P de pontos em 2D com altura (2 1/2 D) Nem todos pontos Triangulacao de P Aproximar altura de pontos pelos vizinhos Triangulos com

Leia mais

3 Extração de Regras Simbólicas a partir de Máquinas de Vetores Suporte 3.1 Introdução

3 Extração de Regras Simbólicas a partir de Máquinas de Vetores Suporte 3.1 Introdução 3 Extração de Regras Simbólicas a partir de Máquinas de Vetores Suporte 3.1 Introdução Como já mencionado na seção 1.1, as SVMs geram, da mesma forma que redes neurais (RN), um "modelo caixa preta" de

Leia mais

Grafos Árvores Geradoras Mínimas

Grafos Á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 mais

Grafos: árvores geradoras mínimas. Graça Nunes

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

Leia mais

Triangulação de Delauney

Triangulação de Delauney Triangulação de Delauney Um pedaço da superfície terrestre é chamado de terreno. Um terreno é uma superfície 2-dimensional em um espaço 3-dimensional com uma propriedade especial: cada linha vertical intercepta

Leia mais

Implementação de algoritmos para consultas de segmentos em janelas

Implementação de algoritmos para consultas de segmentos em janelas Implementação de algoritmos para consultas de segmentos em janelas MAC0499 - Trabalho de formatura supervisionado Proposta de Trabalho Aluno: Mateus Barros Rodrigues Orientador: Prof. Dr. Carlos Eduardo

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma Grafos Árvores espalhadas mínimas Conteúdo Introdução Como construir uma árvore geradora miníma Algoritmos Referências Introdução Dado um grafo conectado não orientado G = (V, E) e uma função peso w :

Leia mais

Aula 19 Conjuntos disjuntos (Union-find)

Aula 19 Conjuntos disjuntos (Union-find) MC3305 Algoritmos e Estruturas de Dados II Aula 19 Conjuntos disjuntos (Union-find) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Números de Ackermann 2 3 Ackermann A função de Ackermann

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Otimização em Grafos

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).

Leia mais

Diagrama de Voronoi. INF2604 Geometria Computacional. Waldemar Celes. Departamento de Informática, PUC-Rio.

Diagrama de Voronoi. INF2604 Geometria Computacional. Waldemar Celes. Departamento de Informática, PUC-Rio. Diagrama de Voronoi INF2604 Geometria Computacional Waldemar Celes celes@inf.puc-rio.br Departamento de Informática, PUC-Rio W. Celes Diagrama de Voronoi 1 Figura extraída de Discrete and Computational

Leia mais

Emparelhamentos Máximos em Grafos Bipartidos

Emparelhamentos Máximos em Grafos Bipartidos Introdução à Teoria dos Grafos Emparelhamentos Máximos em Grafos Bipartidos Bacharelado em Ciência da Computação, DCT UFMS, 6/6/2005 Entrega em 04/07/2005 Resumo Quando estudamos emparalhementos e fatorações

Leia mais

Projeto e Análise de Algoritmos

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

Leia mais

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 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 mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto 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 mais

Algoritmos em Grafos

Algoritmos em Grafos Algoritmos em Grafos Baseado em: The Algorithm Design Manual Steven S. Skiena IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/42 Introdução (1) Um grafo G=(V,E)

Leia mais

Otimização Combinatória - Parte 4

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

Leia mais

Geometria Computacional

Geometria Computacional GeoComp 2014 p. 1/16 Geometria Computacional Cristina G. Fernandes Departamento de Ciência da Computação do IME-USP http://www.ime.usp.br/ cris/ segundo semestre de 2014 GeoComp 2014 p. 2/16 Triangulação

Leia mais

Ciclos hamiltonianos e o problema do caixeiro viajante

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.

Leia mais

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO Profa. Kathya Collazos Linares *As aulas baseiam-se no material do Professor Antonio Alfredo Ferreira Loureiro; Jorge Figueiredo e Judith Gersting Árvore

Leia mais

Algoritmo de Dijkstra Estudo e Implementação

Algoritmo de Dijkstra Estudo e Implementação Teoria dos Grafos 0/0 Algoritmo de Dijkstra Estudo e Implementação Professora: Claudia Boeres Alunos: José Alexandre Macedo Maycon Maia Vitali Problema do Caminho Mínimo Qual o caminho mínimo entre um

Leia mais

Teoria dos Grafos. Árvores Geradoras

Teoria dos Grafos. Árvores Geradoras Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Preparado a partir

Leia mais

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

4 Testes e experimentos realizados 4.1. Implementação e banco de dados 32 4 Testes e experimentos realizados 4.1. Implementação e banco de dados Devido à própria natureza dos sites de redes sociais, é normal que a maior parte deles possua uma grande quantidade de usuários

Leia mais

Complexidade de Tempo e Espaço

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

Leia mais

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello Estruturas de Dados Grafos VIII: Árvores Geradoras Mínimas Prof. Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww.datastructures.net

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Geometria Computacional - Notas de aulas. André Guedes

Geometria Computacional - Notas de aulas. André Guedes Geometria Computacional - Notas de aulas André Guedes 24 de novembro de 2016 Aula 1 Introdução O nome Geometria Computacional é bastante recente, e se refere ao estudo de algoritmos para a solução de problemas

Leia mais

5COP096 TeoriadaComputação

5COP096 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 mais

Caminhos mínimos de única origem

Caminhos mínimos de única origem Caminhos mínimos de única origem Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Introdução

Leia mais

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Lista de Exercícios Programação Inteira. x 2 0 e inteiros. Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + 2 y s.a x + y 2 x + y 5 x, y 0, x e y inteiros b) Max z = 2 x + y s.a x + 2y 0 x + y 25 x, y

Leia mais

Professor: Anselmo Montenegro Conteúdo: - Introdução. Instituto de Computação - UFF

Professor: Anselmo Montenegro  Conteúdo: - Introdução. Instituto de Computação - UFF Geometria Computacional Professor: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo: - Introdução 1 Roteiro Origens Definição Problemas geométricos Configurações degeneradas Classificação de problemas

Leia mais

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante Gabriel Freytag Guilherme Arruda Rogério S. M. Martins Edson L. Padoin Universidade Regional do Noroeste do Estado do Rio Grande

Leia mais

CAL - Concepção e Análise de Algoritmos

CAL - Concepção e Análise de Algoritmos 3ª Aula Prática Divisão e Conquista Instruções Faça download do ficheiro cal20102011_fp03.zip da página da disciplina e descomprima-o (contém os ficheiros Test.cpp, Ponto.h, Ponto.cpp, UtilFunctions.cpp

Leia mais

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete

Leia mais

Visualização de terrenos em GPU

Visualização de terrenos em GPU Visualização de terrenos em GPU Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina: Visualização de Modelos Massivos Professor: Alberto Raposo Sumário Introdução Objetivos Visão geral Hierarquia de

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

Estruturas de Dados Grafos

Estruturas de Dados Grafos Estruturas de Dados Grafos Prof. Eduardo Alchieri (introdução) Grafo é um conjunto de pontos e linhas que conectam vários pontos Formalmente, um grafo G(V,A) é definido pelo par de conjuntos V e A, onde:

Leia mais

3 Extensões dos modelos matemáticos

3 Extensões dos modelos matemáticos 3 Extensões dos modelos matemáticos Os modelos matemáticos definidos por (2-1) (2-6) e (2-7) (2-13), propostos por Achuthan e Caccetta e apresentados no Capítulo 2, são reforçados neste trabalho através

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 33 Definição do Problema Dado: um grafo ponderado G = (V, E), orientado ou não, onde d : E R + define as distâncias

Leia mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. 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 mais

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno UFABC Estruturas de Dados para Conjuntos Disjuntos: Introdução Estruturas de Dados para Conjuntos Disjuntos: Introdução

Leia mais

Visualização de terrenos em GPU

Visualização de terrenos em GPU Visualização de terrenos em GPU Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina: Visualização de Modelos Massivos Professor: Alberto Raposo Sumário Introdução Objetivos Visão geral Hierarquia de

Leia mais

Árvores de Suporte de Custo Mínimo

Árvores de Suporte de Custo Mínimo Árvores de Suporte de Custo Mínimo Pedro Ribeiro DCC/FCUP 2016/2017 Pedro Ribeiro (DCC/FCUP) Árvores de Suporte de Custo Mínimo 2016/2017 1 / 28 Árvore de Suporte Uma árvore de suporte ou árvore de extensão

Leia mais

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

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

Leia mais

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved.

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved. Arranjos Claudio Esperança Paulo Roma 1 Arranjos Arranjos de retas e planos são a terceira estrutura em importância em GC. Arranjos de retas são coleções de retas infinitas distribuídas no plano. Arranjos

Leia mais

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+ 1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA - CIÊNCIA DA COMPUTAÇÃO DEPARTAMENTO DE INFORMÁTICA APLICADA CLASSIFICAÇÃO E PESQUISA DE DADOS INF01124 EDUARDO DA SILVA SARDÃO 0981/00-4

Leia mais

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

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

Leia mais

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas Júlio Kiyoshi Hasegawa 26 Fontes: Rogers, D. F. Procedural Elements for Computer Graphics Introdução Linhas e superfícies

Leia mais

Grafos Parte 1. Aleardo Manacero Jr.

Grafos Parte 1. Aleardo Manacero Jr. Grafos Parte 1 Aleardo Manacero Jr. Uma breve introdução Grafos são estruturas bastante versáteis para a representação de diversas formas de sistemas e/ou problemas Na realidade, árvores e listas podem

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Problema do Caminho Mínimo

Problema do Caminho Mínimo Departamento de Engenharia de Produção UFPR 63 Problema do Caminho Mínimo O problema do caminho mínimo ou caminho mais curto, shortest path problem, consiste em encontrar o melhor caminho entre dois nós.

Leia mais

Edsger Wybe Dijkstra

Edsger Wybe Dijkstra Edsger Wybe Dijkstra Maio 90 Agosto 00 Roterdã, Holanda Nuenen, Holanda Cientista da Computação Contribuições: Algoritmos Linguagem de Programação ALGOL 0 Sistema Operacional THE Processamento Distribuído

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica (continuação) Prof. Humberto Brandão

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica (continuação) Prof. Humberto Brandão Projeto e Análise de Algoritmos Projeto de Algoritmos (continuação) Prof. Humberto Brandão humberto@dcc.ufmg.br aula disponível no site: http://www.bcc.unifal-mg.edu.br/~humberto/ Universidade Federal

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Análise e Projeto de Algoritmos junho - 2018 1 / 40 Este material é preparado

Leia mais

As Pontes de Königsberg

As Pontes de Königsberg As Pontes de Königsberg Anderson Freitas Ferreira e Lívia Minami Borges 13 de junho de 2015 Resumo A teoria de grafos teve seu início em 1736, quando Euler utilizou uma estrutura para resolver o Problema

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional Cristina G. Fernandes Departamento de Ciência da Computação do IME-USP http://www.ime.usp.br/ cris/ segundo semestre de 2009 GeoComp 2009 p. 1 Modelo de computação Algoritmo: sequência

Leia mais

Geometria Computacional

Geometria Computacional Geometria Computacional Claudio Esperança Paulo Roma Cavalcanti Estrutura do Curso Aspectos teóricos e práticos Construção e análise de algoritmos e estruturas de dados para a solucionar problemas geométricos

Leia mais

5 VNS com Filtro e Reconexão por Caminhos

5 VNS com Filtro e Reconexão por Caminhos 5 VNS com Filtro e Reconexão por Caminhos A metaheurística VNS (Variable Neighborhood Search) foi proposta por Mladenović e Hansen [40] e possui como idéia básica a mudança de vizinhanças realizada da

Leia mais

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Exercícios: Árvores 1. Utilizando os conceitos de grafos, defina uma árvore.

Leia mais

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M. Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick

Leia mais

Um algoritmo pseudo-periférico genérico para a heurística de Snay

Um algoritmo pseudo-periférico genérico para a heurística de Snay Trabalho apresentado no CNMAC, Gramado - RS, 2016. Proceeding Series of the Brazilian Society of Computational and Applied Mathematics Um algoritmo pseudo-periférico genérico para a heurística de Snay

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

Teorema da Galeria de Arte e Triangularização de Polígonos e Pontos no Plano

Teorema da Galeria de Arte e Triangularização de Polígonos e Pontos no Plano e Triangularização de Polígonos e Pontos no Plano Rocha Corrêa Orientador: Carlos Eduardo Ferreira Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo

Leia mais

Problema da Árvore Geradora Mínima

Problema da Árvore Geradora Mínima Instituto Federal do Espírito Santo Campus Serra Problema da Árvore Geradora Mínima Diego Pasti Jefferson Rios Sumário Apresentação do Problema da AGM...3 Raízes do Problema Definindo o Problema O Problema

Leia mais

Tecnicas Essencias Greedy e Dynamic

Tecnicas Essencias Greedy e Dynamic Tecnicas Essencias Greedy e Dynamic Paul Crocker RELEASE - Reliable and Secure Computation Group Universidade da Beira Interior, Portugal October 2010 1 / 27 Outline 1 Introdução 2 Exemplo Greedy I : Interval

Leia mais

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010 Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

Leia mais

x y Grafo Euleriano Figura 1

x y Grafo Euleriano Figura 1 Grafo Euleriano Um caminho simples ou um circuito simples é dito euleriano se ele contém todas as arestas de um grafo. Um grafo que contém um circuito euleriano é um grafo euleriano. Um grafo que não contém

Leia mais

Grafos: aplicações. Grafos: árvore geradora mínima

Grafos: aplicações. Grafos: árvore geradora mínima árvore geradora mínima caminhos mínimos problemas tipo 1 desejase conectar todos os computadores em um prédio usando a menor quantidade possível de cabos uma companhia aérea deseja voar para algumas cidades

Leia mais

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Algoritmos 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 mais

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3 B-tree B-Trees Material da Prof. Denise Bandeira, aula de Christian Hofsetz B-Trees são árvores balanceadas. Diferente das árvores binárias, os nós de uma B-tree podem ter um número variável de nodos filho.

Leia mais

Algoritmo 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 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 mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO

INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO ANTONIO CARLOS GOMES BASILIO EVANDRO DAS VIRGENS SCARPATI MARCOS AURÉLIO MELO DIAS RENAN COSMO PROBLEMA DO CAMINHO MÍNIMO

Leia mais

Imagination is more important than knowledge A. Einstein. 4. Partição de Polígonos. Mestrado em Matemática e Aplicações

Imagination is more important than knowledge A. Einstein. 4. Partição de Polígonos. Mestrado em Matemática e Aplicações 4. Partição de Polígonos Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Imagination is more important than knowledge A. Einstein 2 Algumas motivações

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter

Leia mais

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M. Quick Sort Considerações Sobre Algoritmos de Ordenação Professor: Claudio F. M. Toledo 26 de Outubro de 2016 Professor: Claudio Quick F. M. Sort Toledo 26 de Outubro de 2016 1 / 14 Quicksort: Escolha do

Leia mais

6 Estudos de Casos Porta Lógica OU de 4 Entradas

6 Estudos de Casos Porta Lógica OU de 4 Entradas 6 Estudos de Casos Com o objetivo de avaliar a síntese automática de circuitos de QCA usando técnicas de Hardware Evolucionário (EHW), alguns circuitos foram sintetizados e serão apresentados a seguir.

Leia mais

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 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 Geometria. 3 A geometria é inerentemente uma disciplina

Leia mais

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

Métodos de Ordenação Parte I

Métodos de Ordenação Parte I Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar

Leia mais

CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES

CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES Alex Zanella Zaccaron1; Adriana Betânia de Paula Molgora2 1Estudante do Curso de

Leia mais

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os

Leia mais

Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach

Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach Introdução É o método de acesso espacial mais referenciado na literatura É o mais importante dentre os métodos

Leia mais

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina Grafos: Busca SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é um problema fundamental Deve-se ter uma forma sistemática

Leia mais

Árvores Genéricas de Busca

Árvores Genéricas de Busca Árvores Genéricas de Busca Árvores não binárias também podem ser usadas para buscar elementos. Essas árvores são chamadas de árvores genéricas de busca, e elas podem ser de dois tipos: árvore de busca

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016 MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números

Leia mais

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos Relações de recorrência 8. RELAÇÕES DE RECORRÊNCIA Introdução a relações de recorrência Modelagem com relações de recorrência Solução de relações de recorrência Exemplos e aplicações Relações de recorrência

Leia mais

AULA 15. Algoritmos p.600/637

AULA 15. Algoritmos p.600/637 AULA 15 Algoritmos p.600/637 Programação dinâmica CLRS 15.1 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p.601/637 Programação dinâmica "Dynamic programming

Leia mais