Tony Ítalo Abreu Santiago

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

Download "Tony Ítalo Abreu Santiago"

Transcrição

1 FACULDADE LOURENÇO FILHO Curso de Bacharelado em Ciência da Computação Tony Ítalo Abreu Santiago UM ALGORITMO HEURÍSTICO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA DE GRAU RESTRITO BASEADO NA META-HEURÍSTICA GRASP E NO ALGORITMO DE PRIM Fortaleza 2010

2 1 Tony Ítalo Abreu Santiago UM ALGORITMO HEURÍSTICO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA DE GRAU RESTRITO BASEADO NA META- HEURÍSTICA GRASP E NO ALGORITMO DE PRIM Monografia apresentada à Faculdade Lourenço Filho como exigência parcial para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. MSc. André Barros Pereira. Fortaleza 2010

3 2 Tony Ítalo Abreu Santiago UM ALGORITMO HEURÍSTICO PARA O PROBLEMA DA ÁRVORE GERADORA MÍNIMA DE GRAU RESTRITO BASEADO NA META- HEURÍSTICA GRASP E NO ALGORITMO DE PRIM Monografia apresentada à Faculdade Lourenço Filho como requisito parcial para obtenção título de Bacharel em Ciência da Computação. Monografia aprovada em: / / Orientador: Prof. MSc. André Barros Pereira 1º Examinador: Prof. MSc. Emanuel Ferreira Coutinho 2º Examinador: Prof. MSc. João Frederico Roldan Viana Coordenador do Curso; Prof. MSc. Carlos Manso

4 3 RESUMO Os problemas de Otimização Combinatória são muito comuns no mundo dos negócios, e fazem parte do cotidiano da maioria das pessoas, principalmente entre profissionais de engenharia de telecomunicações, que em seus projetos buscam resolver as mais diversas situações com o menor gasto de material. Esses problemas buscam a melhor configuração de um conjunto finito de variáveis para atingir um objetivo. Estes geralmente se resumem a aumentar lucros e/ou diminuir custos. Existem na literatura atual, vários métodos propostos para resolução desse tipo de problema, que normalmente buscam um equilíbrio entre qualidade de solução e tempo computacional. Esses métodos ao serem utilizados em instâncias de médio e grande porte, podem se tornar procedimentos muito exaustivos, ou até mesmo inviáveis, pois métodos que produzem soluções exatas ou pelo menos de boa qualidade geralmente são computacionalmente muito custosos e métodos que produzem uma solução rapidamente podem estar muito distantes da solução exata. A monografia apresenta uma proposta para resolver um problema bastante comum entre empresas de telecomunicações, de engenharia, de distribuição de energia, enfim, entre empresas que tenham em seu projeto o intuito de diminuir gastos de ligação. Este é conhecido como o Problema da Árvore Geradora Mínima de Grau Restrito. No decorrer deste trabalho serão descritos todos os conceitos necessários para o entendimento do problema, mostrando algumas técnicas de resolução. Será apresentada uma proposta utilizando uma combinação de dois métodos de resolução: Meta-heurística GRASP e o Algoritmo de Prim, formando assim um procedimento que obteve soluções de qualidade com baixo custo computacional, conforme os resultados computacionais disponíveis neste trabalho. Palavras-Chave: Meta-heurística, GRASP, Otimização Combinatória, Árvore Geradora Mínima de Grau Restrito, Algoritmo de Prim

5 4 ABSTRACT The combinatorial optimization problems are very common in the business world and are part of everyday life for most people, especially among engineering professionals in telecommunications, which in their projects seek to solve the different situations with the least expenditure of material. These problems seek the best configuration of a finite set of variables to achieve a goal. These usually boil down to increase profits and/or reduce costs. Exist in current literature, several methods for resolution of this problem, they typically look for a balance between solution quality and computational time. These methods to be used in instances of medium and large, can become very extensive procedures, or even that is impractical because methods that produce exact solutions or at least of good quality are often computationally very expensive and methods to produce a solution quickly may be far from the exact solution. This paper presents a proposal to solve a common problem existing on telecom companies, engineering, power distribution, finally, or undertakings which have in your project in order to lower costs of connection. This is known as the Problem of Minimum Spanning Tree Grade Restricted. In this paper will describe the necessary concepts for understanding the problem, showing some resolution techniques. It will be showed a proposal using a combination of two methods of resolution: Meta-heuristic GRASP and Prim's algorithm to form a procedure that obtained good quality solutions with low computational cost, as will be showed through the computational results available in this work. Keywords: Meta-heuristics, GRASP, combinatorial optimization, minimum spanning tree Degree Restricted, Prim's algorithm

6 5 SUMÁRIO LISTA DE FIGURAS...06 LISTA DE TABELAS...07 LISTA DE QUADROS INTRODUÇÃO PROBLEMA DA ÁRVORE GERADORA MÍNIMA DE GRAU RESTRITO Conceitos Básicos sobre Grafos Árvore Geradora Mínima Árvore Geradora Mínima com Grau Restrito TÉCNICAS DE RESOLUÇÃO Meta-heurísticas Meta-heurística GRASP Fase de Construção Fase de Busca Local Algoritmos para Árvore Geradora Mínima O ALGORITMO PROPOSTO Fase de Construção Fase de Busca Local Codificação Exemplo Numérico Modelo Matemático RESULTADOS COMPUTACIONAIS CONCLUSÃO E TRABALHOS FUTUROS...43 REFERÊNCIAS...44

7 6 LISTA DE FIGURAS 1. Exemplo de um grafo Exemplo de um grafo completo Grafo Valorado Exemplo de ciclo em um grafo Árvore (G1) e Floresta (G2) Exemplo de Rede Grafo com as possíveis arestas Algoritmo de Prim Passo Algoritmo de Prim Passo Algoritmo de Prim Passo Algoritmo de Prim Passo Algoritmo de Prim Passo Algoritmo de Prim Passo Algoritmo de Prim Solução Obtida Representação Gráfica do Grafo G Algoritmo Proposto Passo Algoritmo Proposto Passo Algoritmo Proposto Passo Algoritmo Proposto Passo Algoritmo Proposto Solução da Fase de Construção Algoritmo Proposto Início da Fase de Busca Local Algoritmo Proposto Final da Iteração de Busca Local Algoritmo Proposto Solução Encontrada...34

8 7 LISTA DE TABELAS 1. Tabela de Custos do grafo G Exemplo de Grafo com 5 vértices Resultados Obtidos para Exemplo de Grafo com 5 vértices Matriz de Custos de um grafo de 10 vértices Resultados obtidos pelo Algoritmo para um grafo de 10 vértices Matriz de custos de um grafo de 20 vértices Resultados obtidos pelo Algoritmo para um grafo de 20 vértices...41

9 8 LISTA DE QUADROS 1. Passos do Algoritmo de Prim Algoritmo Proposto Passos da Fase de Construção Algoritmo Proposto Passos da Fase de Busca Local Modelagem Método Exato... 35

10 9 1 INTRODUÇÃO Os problemas de Otimização Combinatória são importantes tanto no meio científico como no mundo dos negócios. Estes problemas consistem na busca da melhor configuração de um conjunto finito de variáveis para atingir algum objetivo. Usualmente estes objetivos se resumem a maximizar lucros e/ou reduzir custos. Para esses problemas existem vários métodos de resolução, que normalmente passam por um dilema entre qualidade da solução e tempo computacional: métodos que produzem soluções ótimas ou pelo menos de boa qualidade podem ser computacionalmente muito custosos ou mesmo inviáveis, enquanto que métodos que fornecem rapidamente uma solução podem estar bem distantes da solução ótima do problema. O grande desafio para os projetistas de algoritmos para resolução de problemas de otimização combinatória é, sem dúvida, encontrar um equilíbrio entre qualidade da solução e tempo computacional. Normalmente, problemas de Otimização Combinatória tais como: sistemas de irrigação, projetos de rodovias, redes de telecomunicações, computadores, telefonia, entre outros, possuem uma série de parâmetros como custo, capacidades de ligação, demandas dos serviços, entre outros. Este fato faz com que a modelagem e resolução desses problemas através de um método exato se tornem um processo exaustivo ou até mesmo inviável, levando em consideração o tempo gasto pelo computador para analisar todas as possibilidades observando as restrições existentes no problema. Durante muitos anos, têm-se estudado métodos para resolver problemas de otimização combinatória. Um tipo particular destes métodos, chamado de heurística, caracteriza-se pela busca de características e informações intrínsecas ao problema a ser explorado, facilitando o encontro de um mínimo global no espaço de soluções viáveis. As heurísticas são limitadas e fornecem sempre a mesma solução quando iniciadas de um mesmo ponto de partida. Somente a partir dos anos 80, começaram a surgir na literatura o que se denomina de meta-heurísticas ou heurísticas inteligentes, tais como: Algoritmos Genéticos, GRASP, Busca Tabu, entre outras diversas. Esta nova técnica heurística veio suprir a deficiência das heurísticas e, tem como objetivo principal explorar um espaço de pesquisa de forma inteligente, ou seja, encontrar soluções de alta qualidade movendo-se para áreas não exploradas quando necessário. Formalmente, Meta-heurística é um processo iterativo ou de refinamento de solução de

11 10 problemas, que organiza e direciona heurísticas subordinadas, pela combinação de diferentes conceitos, podendo manipular soluções completas, incompletas ou um conjunto de soluções, tentando evitar a parada prematura em um ótimo local, através de mecanismos que permitam escapar deste, podendo assim obter um desempenho superior ao comparar com heurísticas tradicionais. A utilização de meta-heurísticas visando à solução de problemas, tais como o problema da Árvore Geradora de custo Mínimo com Grau Restrito (AGMGR), que será estudado neste trabalho, é justificada pela complexidade do problema em geral, motivo que inviabiliza a utilização de técnicas exatas para resolvê-los, para instâncias de médio e grande porte. A meta-heurística GRASP, atualmente possui um grande destaque na literatura para problemas de otimização. Tal destaque deve-se aos bons resultados obtidos nas aplicações já realizadas, pela facilidade de paralelização e principalmente por sua flexibilidade, sendo tais características o motivo da escolha desta meta-heurística para ser aplicada ao problema da Árvore Geradora Mínima com Grau Restrito. A utilização de uma meta-heurística GRASP neste caso se torna viável devido à complexidade existente nesse tipo de problema, principalmente quando existem vários vértices envolvidos no problema. Neste trabalho, procura-se fazer uma melhoria no desempenho dessa meta-heurística inserindo na fase de construção da solução inicial o Algoritmo de Prim, visando-se obter um resultado de qualidade no inicio da execução do algoritmo, aumentando, desta forma, a possibilidade de encontrar a solução ótima do problema com um número menor de iterações. Esta monografia está organizada da seguinte forma: o Capítulo 2 apresenta uma revisão bibliográfica sobre o problema da Árvore Geradora Mínima de Grau Restrito; o Capítulo 3 apresenta os métodos de resolução dos problemas de Otimização Combinatória mais conhecidos; no Capítulo 4 é apresentada uma proposta de resolução para o problema da Árvore Geradora Mínima de Grau Restrito; no Capítulo 5 os resultados dos testes computacionais são reportados; e por fim, no Capítulo 6 são apresentadas as conclusões e as pesquisas futuras.

12 11 2 PROBLEMA DA ÁRVORE GERADORA MÍNIMA DE GRAU RESTRITO 2.1 Conceitos Básicos Sobre Grafos O problema da árvore geradora mínima de grau restrito, cuja resolução consiste no foco deste trabalho, pertence à Teoria dos Grafos, que é um ramo da matemática que estuda a relação entre os objetos de um determinado conjunto. Antes de apresentarmos o problema propriamente dito, faz-se necessário resgatar alguns conceitos da Teoria dos Grafos baseados nos trabalhos escritos por Arroyo (2002), Rosseti (2003), Nascimento (2007), Szwarcfiter (1984), Christofides (1975) Wai-Kai (1990), Even (1980), Chartrand (1993), Boaventura (1996), a fim de se obter uma melhor compreensão sobre o problema estudado e suas variações. Grafo é uma estrutura G(V, A) onde V é um conjunto não vazio de objetos denominados vértices e A um conjunto de pares ordenados de V, chamados arcos. O primeiro vértice do par é a ponta inicial do arco e o segundo vértice é a ponta final do arco. Um arco com ponta inicial u e ponta final v é denotado (u, v) ou simplesmente uv. Dizemos que o arco uv vai de u até v. A Figura 1 mostra um exemplo de um grafo G em que V é o conjunto composto pelos vértices {a, b, c, d} e A o conjunto de arestas denotado pelos pares ordenados {(a, b), (b, c), (c, a), (c, b), (c, d), (d, d)}. Dizemos que um arco xy sai de um vértice u, se x=u. Analogamente um arco xy entra no vértice u se y=u. Dados vértices u e v de um grafo, existe no máximo um arco uv e no máximo um arco vu. Em outras palavras, em grafos não existem arcos paralelos. Por outro lado podem existir arcos do tipo uu, onde a ponta final coincide com a inicial. Um arco desse tipo é conhecido

13 12 como laço. No caso de existir no mesmo par de vértices um arco do tipo uv e um arco do tipo vu, esse par de arcos pode ser denominado simplesmente de aresta, conceitos ilustrados na Figura 1. Um grafo é dito completo, Figura 2, se não possuir laços e para cada vértice deve haver uma aresta ligando este vértice a cada um dos demais vértices. Ou seja, em um grafo com n vértices, cada um dos vértices possui n-1 arestas. Uma aresta conecta dois vértices e esses dois vértices usualmente são denominados incidentes à aresta. O grau, ou valência, de um vértice é o número de arestas incidentes a ele. Nos casos em que o vértice possui um laço, este é contado duas vezes. Percebe-se que em um grafo completo de n vértices todos os vértices possuem o mesmo grau (n-1). O grau de um grafo é definido como o maior grau entre seus vértices. Dependendo do que se deseja modelar através do uso de grafos, arestas podem ou não ter direção. Vértices ou arestas podem ter um peso (numérico) associado. Se as arestas têm uma direção associada (indicada por uma seta na representação gráfica), como ilustrado na Figura 1, o grafo é dito direcionado, orientado ou dígrafo. Se tiver pesos associados às arestas, é chamado de valorado, que é mostrado na Figura 3. Em Teoria dos Grafos, um caminho em um grafo é uma sequência de vértices tal que, de cada dois vértices consecutivos há uma aresta unindo-os no grafo. O primeiro vértice é

14 13 chamado de vértice inicial e o último de vértice final. Um caminho sem vértices repetidos é chamado de caminho simples. A Figura 4 mostra um caminho cujo vértice inicial coincide com o vértice final. Um caminho com esta característica é denominado ciclo. Observe que a escolha do vértice inicial em um ciclo é arbitrária. Um laço pode ser considerado um ciclo de comprimento igual a um. Se o ciclo envolve todos os vértices do grafo, ele é chamado de ciclo hamiltoniano. Um ciclo simples é um ciclo que tem comprimento maior ou igual a 3 e no qual o vértice inicial só aparece mais uma vez, como vértice final, e os demais vértices aparecem só uma vez. Um grafo é denominado acíclico se não contém ciclos simples. Um grafo é denominado conexo se, para qualquer par de vértices u e v do grafo, existe um caminho de u para v. Na Teoria dos Grafos, uma árvore é um grafo conexo e acíclico. Caso o grafo seja acíclico, mas não conexo, ele é dito uma floresta. Estes conceitos estão ilustrados na Figura 5. Uma floresta também é definida como uma união disjunta de árvores. Uma árvore de um grafo G é um subgrafo de G = (V, A) conexo e acíclico. Uma Árvore Geradora de G é uma árvore que contém todos os nós do grafo. Uma Árvore Geradora Mínima é uma árvore geradora cuja soma dos pesos de suas arestas é mínima em G. A importância dessa estrutura é enorme tanto na prática dos problemas de otimização, como parte da solução de vários outros modelos. Suas maiores aplicações na área de Pesquisa

15 14 Operacional estão associadas aos problemas de comunicação e conexões. Outra maneira usual de definir o Problema da Árvore Geradora Mínima diz respeito ao conceito de grafo do tipo rede. Esta estrutura é bastante utilizada nos mais diversos problemas de Otimização. Um grafo que possui valores numéricos associado à suas arestas, ou vértices, ou até mesmo em ambos é chamado de Rede, demonstrado pela Figura 6. Uma rede básica, N, é um dígrafo que possui as seguintes características: N tem, exatamente, uma origem e um destino e para cada arco v de N está associado um número positivo c(v) que se designa capacidade do arco v e representa a quantidade máxima de fluxo nesse arco em um determinado período de tempo. A capacidade de cada arco de uma rede geralmente é distinta, de uma maneira geral. A capacidade de transporte dos arcos que saem do vértice inicial e chegam por diferentes caminhos ao vértice final em uma rede é chamada de fluxo de rede. Um fluxo numa rede básica N com origem S e destino T consiste na atribuição de um número não negativo f(v) a cada arco de N. Os fluxos de uma rede devem obedecer a algumas restrições: Em cada arco, o fluxo não pode exceder a capacidade do arco, e os vértices, ou nós, não são pontos de consumo, isto é, a soma que chega ao nó deve ser igual à soma que sai do nó. Exceto os nós de origem e destino. Quando o fluxo de um arco é igual à capacidade do mesmo, esse arco é chamado de arco saturado, e quando o fluxo é menor do que a capacidade é dito arco não saturado Árvore Geradora Mínima Baseado em Goldbarg e Luna (2002), o problema da Árvore Geradora Mínima (AGM) pode ser descrito da seguinte forma: considere uma rede não direcionada, conectada e associada a cada arco um valor (peso, tempo, etc.) não negativo, o objetivo é encontrar o caminho mais curto de tal maneira que os arcos forneçam um caminho entre todos os pares de nós.

16 15 Esse problema pode ser aplicado em diversas situações como: projetos de redes de telecomunicação (redes de computadores, de fibra óptica, de telefonia, de televisão a cabo), no projeto de rodovias, estradas e ferrovias, projetos de redes de transmissão de energia, e diversas outras aplicações com o intuito de diminuir gastos de ligação ou melhorar desempenho de sistemas. Sobre o problema da Árvore Geradora Mínima alguns conceitos fundamentais estão envolvidos. Uma rede com n nós, requer somente n-1 arcos para produzir uma ligação entre cada par de nós. Os n-1 arcos devem formar uma árvore geradora. O problema é achar a árvore geradora com menor custo total. Parte do princípio que existe apenas os nós de uma rede e arcos potenciais. 2.3 Árvore Geradora Mínima com Grau Restrito O problema abordado nesse trabalho é uma situação específica do problema da Árvore Geradora Mínima, conhecido como Problema da Árvore Geradora Mínima com Grau Restrito. Esse problema específico visa identificar uma Árvore Geradora Mínima cujos vértices possuem um determinado grau máximo k, onde k>=2. O objetivo do algoritmo que resolve esse problema é ligar todos os nós que compõem o grafo em questão com o menor custo possível, obedecendo a capacidade de ligação de cada nó, como por exemplo, cada nó do grafo deve conter no máximo três ligações. O problema da Árvore Geradora Mínima de Grau Restrito é considerado NP - Difícil. Problemas da classe NP são problemas onde o número de computações do melhor algoritmo conhecido cresce exponencialmente em função do tamanho da instância e não existe a garantia da existência de algoritmos melhores. Um problema é NP - Difícil se todos os problemas da classe NP forem redutíveis a ele. Como o número de computações cresce exponencialmente, para instâncias maiores desse problema, a utilização de um algoritmo exato se torna inviável devido ao algoritmo levar um tempo enorme para resolver o problema ou até mesmo levar o computador a situações de instabilidade como o travamento. Então, para resolver esse problema, será utilizado nesse trabalho um método aproximativo chamado de meta-heurística, que não garante a solução ótima, mas para problemas complexos normalmente oferece uma solução muito boa em tempo relativamente pequeno.

17 16 3 TÉCNICAS DE RESOLUÇÃO 3.1 Meta-heurísticas Até o final dos anos 80, os métodos heurísticos propostos para resolver problemas de otimização combinatória eram, em sua maioria, específicos e dedicados a um dado problema. A partir daí, esse paradigma muda e surge um grande interesse em técnicas que sejam mais gerais e por isso, aplicáveis a diversos problemas. Técnicas assim são conhecidas por Metaheurísticas. Dentre elas destacam-se: Simulated Annealing, Tabu Search, Genetic Algorithm, Scatter Search, GRASP (Greedy Randomized Adaptive Search Procedures), Colônia de Formigas, VNS (Variable Neighbourhood Search), e outras técnicas. Meta-heurísticas são heurísticas genéricas que são utilizadas para obter, em tempo hábil, soluções viáveis e eventualmente ótimas, principalmente para problemas de otimização combinatória de elevada complexidade computacional. A seguir será descrito, de forma breve, um pouco sobre as meta-heurísticas mais conhecidas e mais utilizadas. As Meta-heurísticas vêm tendo um ótimo desempenho nos últimos anos quando se diz respeito a problemas de otimização. Por essa razão, acredita-se ser importante discorrer sobre algumas meta-heurísticas mais conhecidas para a resolução desse tipo de problema, com o objetivo de ter uma visão geral sobre o procedimento utilizado por cada uma delas a fim de se obter resultados satisfatórios em um tempo hábil. Uma grande vantagem das meta-heurísticas em relação a outros métodos de resolução de problemas de otimização é que elas são bastante adaptáveis. Cada uma delas pode ser, com mais ou menos esforço, personalizada para resolver praticamente todo tipo de problema de otimização, independente de suas peculiaridades. Para que uma meta-heurística explore o espaço de busca de forma inteligente, obtenha soluções de ótima qualidade e consiga mover-se para áreas não exploradas quando necessário, os conceitos de intensificação e diversificação devem ser contemplados. A intensificação consiste em concentrar as buscas em regiões promissoras em torno de boas soluções. A diversificação consiste em fazer buscas em regiões ainda não exploradas, visando fugir de ótimos locais. Toda meta-heurística deve possuir componentes de diversificação e intensificação. Esses dois componentes devem ser balanceados e bem utilizados. Baseando-se nos trabalhos realizados por Campello e Maculan (1994), Feo e Resende (1995), Osman e Kelly (1995), Pirlot (1992) e Viana (1998), será descrito os aspectos mais

18 17 relevantes de algumas Meta-heurísticas que possuem destaque na literatura atual. Sobre a Meta-heurística Simulated Annealing pode-se afirmar que: Considerando a diferença de Energia dada por E E = Ei+1 Ei. É um algoritmo de busca local que explora a analogia entre os problemas de otimização combinatória e os da mecânica estatística. Tal analogia é feita associando-se as soluções viáveis dos problemas de otimização combinatória a estados dos sistemas físicos sendo que seus custos são associados à energia desses estados. Considerando dois estados sucessivos de energia Ei e Ei+1, correspondendo a duas soluções vizinhas e tomemos E E = 0, há situação de estabilidade e, portanto, não há alteração de energia, isto é, a função custo do problema permanece inalterada; se E E<0, há redução de energia e o processo continua, ou seja, há redução na função custo do problema e a nova alocação deve ser aceita; se E E > 0, fica caracterizado um aumento de energia, útil no processo físico para permitir uma futura acomodação das partículas, ou seja, a função custo do problema sofre aumento. Ao invés desta alocação ser eliminada, ela poderá eventualmente ser aproveitada. Para isso, uma função de probabilidade deverá ser acionada para evitar a convergência da função para mínimos locais indesejáveis. Sobre a Meta-heurística Busca Tabu afirma-se que é um algoritmo de busca local introduzido por Glover (1989) para problemas de programação inteira, com o objetivo de encontrar soluções de boa qualidade. Caracteriza-se pela existência de uma lista atualizada das melhores soluções encontradas no decorrer do algoritmo, onde cada solução possui um valor de prioridade ou critério de aspiração. Seus ingredientes básicos são uma lista tabu, para armazenar um histórico da evolução do processo de busca, um mecanismo que permite aceitar ou rejeitar uma nova alocação na vizinhança, baseado nas informações armazenadas na lista tabu e suas respectivas prioridades e um mecanismo que permite alternar entre estratégias de diversificação e intensificação na vizinhança. Algoritmos Genéticos são definidos como técnicas que se apóiam nos mecanismos de seleção e adaptação natural das espécies. Tais algoritmos mantêm uma população formada por um subconjunto de indivíduos, que no caso dos problemas de otimização combinatória são as soluções viáveis, com valores de aptidão associados aos custos de tais soluções. Através dos chamados operadores genéticos e de critérios de seleção, cada algoritmo substitui uma população de indivíduos por outra, com valores de aptidão, em média, melhores. A idéia básica consiste em acreditar que os melhores indivíduos sobrevivem e geram descendentes com suas características hereditárias, de maneira semelhante à teoria biológica das espécies. De forma análoga, os algoritmos genéticos partem de um conjunto de soluções iniciais

19 18 geradas aleatoriamente, avaliam seus custos, selecionam um subconjunto das melhores soluções e realizam operações genéticas sobre elas, gerando um novo conjunto de soluções ou uma nova população. A Meta-heurística Scatter Search foi introduzida por Glover (1977) em um estudo heurístico de problemas de programação linear inteira. É um método evolutivo que considera combinações lineares de vetores-solução para produzir novos vetores-solução através de gerações sucessivas. Esta metaheurística é composta por uma fase inicial e outra evolutiva. Na primeira, se constitui um conjunto de soluções, das quais as melhores são escolhidas para fazerem parte de um conjunto referência. Na fase evolutiva, novas soluções são geradas utilizando combinações de subconjuntos referência que são selecionados estrategicamente. A partir daí, um conjunto das melhores soluções geradas é incluído no conjunto referência. Os procedimentos da fase evolutiva são repetidos até que o processo satisfaça a um critério de parada qualquer. O GRASP (Greedy Randomized Adaptive Search Procedures) é uma técnica aleatória e iterativa onde, a cada iteração, uma solução aproximada para o problema é obtida. A melhor solução resultante de todas as iterações é a solução final. Em cada iteração, a primeira solução é construída através de uma função gulosa aleatória e as soluções posteriores são obtidas aplicando-se, sobre a solução anterior, um algoritmo de busca local que forneça uma nova solução melhor que a anterior. Ou seja, cada iteração é composta por duas fases, uma de construção e outra de busca local. Ao final de todas as iterações, a solução resultante é a melhor solução gerada. Nada garante que soluções geradas por uma construção GRASP não recaiam em ótimos locais. Assim, é importante aplicar a fase de busca local na tentativa de melhorar tais soluções. Com o uso de estruturas de dados personalizadas e uma implementação cuidadosa, uma fase construtiva eficiente pode produzir boas soluções iniciais, possibilitando uma busca local eficiente. O método Colônia de Formigas trata-se de uma classe de algoritmos distribuídos que tem como principal característica, a definição de propriedades na interação de vários agentes simples. Tem como princípio a forma como as formigas são capazes de encontrar um caminho do formigueiro até uma fonte de alimento e vice-versa. Cada agente simples é chamado de formiga e o conjunto de formigas, cooperando numa atividade comum para resolver um problema, constitui o sistema. A principal característica do método é que a interação desses agentes gera um efeito sinérgico, pois a qualidade da solução obtida aumenta quando tais agentes trabalham juntos, interagindo entre si, para a resolução de um mesmo problema.

20 19 A Meta-heurística de Busca em Vizinhança Variável, conhecida por VNS (Variable Neighbourhood Search), foi introduzida por Mladenović (1995) e Mladenović & Hansen (1997). É baseada na mudança sistemática das vizinhanças utilizadas na busca e vem sendo aplicada na resolução de grandes exemplares para problemas combinatórios. Não resta dúvida que, embora essas Meta-heurísticas tenham sido criadas a partir de conceitos distintos, todas possuem características em comum que na prática tem produzido resultados confiáveis, e eventualmente soluções ótimas têm sido encontradas. Além disso, como regra geral no campo das Meta-heurísticas, a solução tem sido encontrada em tempo relativamente baixo se comparada com os métodos de solução exatos. 3.2 Meta-heurística GRASP A meta-heurística que será abordada nesse trabalho, GRASP Greedy Randomized Adaptive Search Procedure baseia-se na construção de uma solução inicial e, a partir desta, realizar vários procedimentos de busca local visando uma melhoria na solução inicial. É importante frisar que esta meta-heurística atualmente possui um grande destaque na literatura para problemas de otimização em geral, devido aos bons resultados obtidos e, por esse motivo, foi escolhida para a solução do problema estudado neste trabalho. O GRASP que significa em português Procedimento de Busca Gulosa Adaptativa Aleatória é um processo iterativo em que cada iteração consiste em múltiplas aplicações de busca local, cada uma iniciando de uma solução diferente. O método em geral divide-se em duas fases: uma fase de construção e uma fase de busca local Fase de Construção Na fase de construção da meta-heurística GRASP, é utilizado um método para a construção de uma solução viável do problema para ser adotada como solução inicial. Nesta fase são geradas soluções iniciais através de algum tipo de construção randômica gulosa ou algum esquema de perturbação. O método de construção varia de acordo com o problema a ser resolvido. Nessa fase a solução inicial é construída elemento a elemento. Inicialmente o elemento está em uma lista de candidatos (LC) e através de um fator α (alfa), cujo valor se situa entre 0 e 100%, é criada uma lista restrita de candidatos LRC que possui os melhores elementos de LRC. O tamanho da LRC é determinado por: CardinalidadeLRC = α * CardinalidadeLC

21 20 Após a definição da LRC, seleciona-se um elemento da mesma para compor a solução. A seleção do elemento pode ser realizada aleatoriamente ou através de um critério guloso. Esses dois tipos de seleção provocam duas variações do GRASP conforme a construção da solução: gulosa ou aleatória. Após a adição do elemento na solução, o processo continua com a atualização de ambas as listas LC e LRC. À medida que os elementos vão sendo escolhidos para compor a solução, vão sendo retirados da LC. O processo de construção é finalizado quando a cardinalidade de LC possuir o valor zero, ou seja, não há mais elementos candidatos a constituir a solução, pois uma solução já está disponível. O valor de α influencia na qualidade e diversidade da solução gerada na fase de construção. Valores baixos de α geram soluções gulosas de boa qualidade, mas com pouca diversidade. Um valor alto de α, próximo a 100%, leva a uma grande diversidade, potencializando a obtenção de soluções de qualidade inferior. Isso também influencia o processo de busca local, pois soluções de qualidade inferior tornam o processo de busca local mais lento. O valor de α pode ser constante ao longo do algoritmo, mas pode sofrer também alterações a cada iteração ou por meio de um esquema aleatório ou adaptativo Fase de Busca Local A segunda fase da meta-heurística GRASP consiste em refinar a solução encontrada na primeira fase aplicando um método de busca local para fazer pequenas alterações na solução corrente denominada perturbações. Isso corresponde a uma intensificação na solução encontrada, explorando regiões vizinhas através da busca local para encontrar um ótimo local. A busca local pode ser sofisticada, entretanto, não se deve esquecer o diferencial do GRASP, que é explorar o espaço de soluções com gerações rápidas. Quanto melhor for a qualidade da solução gerada na primeira fase, maior será a velocidade para encontrar um ótimo local. Nesta fase o algoritmo utiliza a solução atual, que no inicio é a solução construída na fase anterior, e nela faz uma série de pequenas perturbações, pequenas alterações, que modificarão levemente a solução, visando uma melhoria no custo final. Após cada perturbação é verificada se a solução continua viável. Após um ciclo de perturbações, é avaliada se houve melhoria na solução ou não. Caso em qualquer uma das perturbações tenha sido achada uma solução melhor que a atual, esta solução será adotada como solução atual para o início de uma nova iteração. Caso não tenha sido identificada melhoria em nenhuma

22 21 das perturbações, a melhor solução encontrada após o término da fase de busca local é adotada como solução do problema sobre análise. No final de um ciclo de iterações, é destacado o melhor resultado encontrado dentre todas elas, que pode não ser a solução ótima, mas espera-se que seja pelo menos uma solução muito boa, com a vantagem de ter sido encontrada em um tempo relativamente pequeno. 3.3 Algoritmos para Árvore Geradora Mínima Existem vários algoritmos que propõem soluções para o problema da Árvore Geradora Mínima e suas variantes, dentre os quais, os mais conhecidos e utilizados serão descritos a seguir. Todos eles são procedimentos que sempre encontram a solução ótima para qualquer instância. Um dos algoritmos para Árvores Geradoras Mínimas mais conhecidos é o de Kruskal. Este algoritmo inicia sua procura da solução fazendo uma busca na tabela de custos das arestas, selecionando as arestas de menor peso e inserindo-a na solução. Logo após, o algoritmo vai analisar a tabela de custos novamente, procurando entre as arestas do grafo, a menor destas que ainda não foi adicionada a solução. Quando a encontra, é verificado dentre as restrições do problema, se a aresta pode ser adicionada à solução sem que a mesma se torne inviável ou nula. Esse passo de buscar a menor aresta e verificar a possibilidade de sua adição na solução é repetido até que todos os vértices façam parte da solução e formem uma Árvore Geradora. Outro algoritmo bastante utilizado para resolver o mesmo tipo de problema é o Algoritmo de Boruvka. Ele funciona da seguinte forma: dado um grafo, representado sob qualquer uma das suas possíveis formas, o Algoritmo consiste em encontrar a mínima distância entre todos os pontos do grafo. Caracteriza-se pela divisão do grafo original em vários subgrafos para os quais é calculado a Árvore Geradora Mínima, ou seja, pode ser considerado uma variação do Algoritmo original de Dijkstra, que é usado para resolver o problema do caminho mais curto em um grafo direcionado ou não direcionado, com arestas de peso não negativo. Trata-se de um algoritmo guloso, ou seja, toma a decisão que parece ótima no momento. O algoritmo de Boruvka é um procedimento com velocidade e convergência bastante rápida, sendo ideal para implementação em computadores paralelos já que a Árvore Geradora Mínima de cada um dos subgrafos pode ser calculada numa máquina diferente. Este algoritmo é recursivo e só termina quando existe apenas um vértice.

23 22 O Algoritmo escolhido para ser utilizado neste trabalho, se não é o mais conhecido dos algoritmos propostos para este problema, é o mais utilizado e seu processo de busca pela solução é fácil de compreender. O Algoritmo de Prim é um algoritmo em Teoria dos Grafos que busca uma Árvore Geradora Mínima para um grafo conexo, ou seja, que possua ligações entre todos os seus nós, e com pesos mínimos. O Algoritmo de Prim é um exemplo de um algoritmo guloso. Um algoritmo guloso, ou ganancioso, é uma técnica de algoritmos para resolver problemas de Otimização, sempre realizando a escolha que parece ser a melhor no momento, fazendo uma escolha ótima local, na esperança de que essa escolha nos leve a uma solução ótima global. Esse tipo de algoritmo tem a vantagem de ser de fácil implementação e ser considerado simples, e tem como desvantagens o fato de, nem sempre, conduzir a soluções ótimas globais e também podem efetuar cálculos repetitivos. No caso do Algoritmo de Prim ele sempre encontra a solução ótima. O Algoritmo de Prim é uma técnica de resolução que parte do princípio de se fazer uma análise da vizinhança adicionando gradativamente os nós candidatos, buscando ligar todos os nós com o menor custo. O algoritmo é muito eficiente em pequenas situações, porém, por se tratar de uma técnica que analisa todas as possibilidades de ligação, não se torna viável para grandes configurações. Os passos do Algoritmo de Prim são mostrados no Quadro 1: Um dos nós candidatos é escolhido para ser o nó inicial do algoritmo. Esse nó passa a fazer parte da solução atual. Na solução atual é feita uma busca pela sua vizinhança considerando-se o valor das possíveis arestas, dentre as quais será escolhida a melhor delas, que no caso do problema da árvore geradora mínima é a aresta de menor custo. A aresta escolhida e o nó que está ligado à aresta passarão a fazer parte da nova solução atual, que agora vai conter o nó inicial, a aresta e o nó escolhido. Com a nova configuração, é feita uma nova pesquisa dentre as vizinhanças nas possíveis arestas que poderão ligar os nós que fazem parte da solução atual aos nós vizinhos que ainda não fazem parte da solução. Novamente é identificado o nó de menor custo e este nó, juntamente com sua respectiva aresta farão parte da nova configuração. O processo de pesquisa de vizinhança e adição de arestas e nós se repetirá até que todos os nós do grafo façam parte da solução. Quadro 1: Passos do Algoritmo de Prim

24 23 Com a finalidade de ilustrar o procedimento usado pelo Algoritmo de Prim, será apresentado um pequeno exemplo numérico e serão descritas, passo a passo, todas as operações realizadas por esse algoritmo de resolução. De acordo com a Figura 7, considere que uma grande multinacional do ramo de medicamentos deseja interligar suas filiais utilizando uma rede de dados de fibra óptica privada com o intuito de melhorar o desempenho de seu sistema de transmissão de dados. Cada filial está representada por um nó do grafo e as conexões potenciais entre as filiais são representadas pelas arestas. As distâncias em km entre as filiais são exibidas como pesos nas arestas do grafo. Arbitrariamente, o algoritmo seleciona um nó para se tornar o vértice inicial do problema. Na Figura 8, o algoritmo seleciona o nó O para inicio do procedimento. Qualquer outro nó poderia ter sido escolhido. O nó não conectado mais próximo de O é o nó A, então o algoritmo irá conectar o nó A ao nó O. O nó não conectado mais próximo dos nós O e A é o nó B, que está mais próximo de A. O algoritmo irá conectar o nó B ao nó A. Passo ilustrado através da Figura 9.

25 24 Na Figura 10, o nó não conectado mais próximo dos nós O, A, B é o nó C, que está mais próximo de B. Então o algoritmo vai conectar o nó C ao nó B. Como se pode observar na Figura 11, o nó não conectado mais próximo dos nós O, A, B, C é o nó E, que está mais próximo do nó B. Logo, o algoritmo irá conectar o nó E ao nó B. O nó não conectado mais próximo dos nós O, A, B, C, E é o nó D, que está mais próximo de E. Então o algoritmo conecta o nó D ao nó E. Passo ilustrado na Figura 12.

26 25 Como representado na figura 13, o nó não conectado mais próximo dos nós O, A, B, C, E, D é o nó T, que está mais próximo do nó D. O algoritmo irá conectar o nó T ao nó D. Na Figura 14, é apresentada a solução final que possui uma distância total de 14 quilômetros. Através dessa rede, é possível ir de uma filial até qualquer outra filial. A solução final encontrada pelo procedimento do Algoritmo de Prim mostrada na Figura 14 é dita Árvore Geradora Mínima do grafo inicial, com custo total da solução de quatorze quilômetros, que é uma solução ótima do problema. Independente do nó inicial escolhido pelo algoritmo, a solução final terá sempre o mesmo custo.

27 26 4 O ALGORITMO PROPOSTO Nesse trabalho foi abordado o problema da Árvore Geradora Mínima de Grau Restrito. Como esse problema é classificado como NP Difícil foi utilizada uma meta-heurística (GRASP) para resolvê-lo. A seguir será descrito em detalhes o algoritmo que foi utilizado na resolução do problema da Árvore Geradora Mínima com Grau Restrito. 4.1 Fase de Construção Na fase de construção da solução inicial de uma meta-heurística GRASP comum normalmente é utilizada uma técnica gulosa ou aleatória para a formação de uma solução inicial viável, para o início do procedimento computacional. Somente na fase seguinte, é utilizada sobre essa solução inicial, técnicas de melhoramento visando aprimorar a solução. Optamos por utilizar para a construção da solução inicial, uma adaptação do Algoritmo de Prim. Com isso, espera-se encontrar na fase de construção, uma solução muito boa, eventualmente ótima, e com isso diminuir o número de iterações de busca local. Desta forma, almeja-se melhorar o tempo computacional gasto para resolver o problema, porém tentandose assegurar a qualidade da solução obtida. O Algoritmo de Prim modificado que compõe a fase de construção da Meta-heurística é apresentado no Quadro 2. Entrada: Grafo G (V, A) conexo, grau máximo do grafo k, tamanho percentual da lista restrita de candidatos. Algoritmo: Passo 1: Escolha aleatoriamente um vértice inicial s. Insira-o na solução S. Passo 2: Selecione os vértices que não estão em S e que são adjacentes a vértices que estão em S, verificando se, uma vez conectados, não ultrapassam o grau k em S e não formam ciclos. Passo 3: Ordene-os do mais próximo ao mais distante de algum vértice de S (ou seja, das arestas de menor peso às de maior peso incidentes aos vértices de S). Passo 4: Selecione os % melhores vértices (ou seja, aqueles cujas arestas possuem menor peso) para formar a lista restrita de candidatos (LRC). Se o valor de LRC não for inteiro, selecione a quantidade de elementos correspondentes ao menor inteiro maior que LRC.

28 27 Passo 5: Escolha aleatoriamente um vértice da LRC para compor a solução. Insira-o, juntamente com sua aresta correspondente à solução S. Passo 6: Repita os passos 2 a 6 até que não se tenha mais vértices fora da solução S. Saída: Solução S contém uma árvore geradora. Quadro 2: Algoritmo Proposto Passos da Fase de Construção 4.2 Fase de Busca Local Na fase de busca local de uma meta-heurística GRASP, utiliza-se uma técnica sobre a solução inicial de forma a explorar a vizinhança desta solução obtida em busca de melhoramento no custo da solução. A técnica é aplicada até que não se consiga mais obter melhoramento da solução. A forma de exploração da vizinhança da solução obtida na fase de construção que propomos é apresentada no Quadro 3: Entrada: Solução inicial S Algoritmo: Passo 1: Para cada par de vértices v de grau 1 (ou seja, folhas da árvore) de S e sua respectiva aresta (v, u) faça: Passo 2: Para cada vértice w de S, tal que w u, crie uma solução S removendo a aresta (v, u) e inserindo a aresta (v, w). Verifique se a solução continua viável (se a aresta formada existe no grafo original e se o grau k está sendo respeitado). Se S for viável, insira-a em uma lista de soluções candidatas LSC. Passo 3: Seja C a melhor solução da LSC (a solução de menor custo). Passo 4: Se o custo de C for menor que o de S, então S=C e retorne ao passo 1. Senão, Fim do Algoritmo. Saída: Solução final S contendo uma árvore geradora. Quadro 3: Algoritmo Proposto Passos da Fase de Busca Local O algoritmo terá ainda como parâmetro o número de iterações GRASP desejado. Cada iteração GRASP consiste na geração de uma solução através da execução da Fase de Construção e a respectiva tentativa de refinamento da mesma através da execução da Fase de Busca Local. A Solução final S do algoritmo será a melhor solução obtida em todas as iterações GRASP.

29 Codificação A fim de verificar o desempenho computacional do algoritmo proposto, foi realizada uma implementação computacional do algoritmo. Para a implementação foi utilizada a linguagem de programação C e o editor utilizado para a edição e compilação do código foi o Bloodshed Dev C++ Versão 4, que possui um ambiente integrado que aborda as linguagens C e C++. Como guia de referência para codificação do programa na linguagem C foi utilizado Schildt (1997). Nesse primeiro momento, foi implementada uma solução que tem como objetivo resolver problemas de Árvore Geradora Mínima com Grau Restrito em grafos completos. 4.4 Exemplo Numérico Para uma melhor compreensão desse trabalho, aqui será descrito um exemplo numérico da aplicação do algoritmo proposto e para o qual foram realizados testes computacionais. Também será exibido um modelo matemático que foi executado por um resolvedor a fim de se obter a solução ótima. Considere um grafo completo G de vértices V = {1, 2, 3, 4, 5}, deseja-se obter a Árvore Geradora Mínima de G com o grau de vértice k = 3 e matriz de distância entre vértices descrita pela Tabela 1: Tabela 1: Tabela de Custos do grafo G Figura 15. Resolvendo através de um método exato solução ótima deste problema é ilustrada na

30 29 Agora será mostrado passo a passo, todo o processo feito pelo algoritmo proposto em busca da solução final do problema. Na Figura 16, o algoritmo inicia seu procedimento a partir de uma fase de construção de uma solução inicial. Para esta fase, considere que α = 50% e que o grau de cada vértice seja no máximo k = 3. O algoritmo iniciará com o vértice inicial 1 e a partir do mesmo criará uma LRC contendo as 50% melhores arestas da lista de candidatos. Dentre as arestas existentes na LRC o algoritmo faz uma seleção aleatória do vértice e em seguida faz uma ligação entre o vértice escolhido e o vértice inicial. A aresta escolhida por método aleatório foi a aresta (1-2) com custo igual a dois, conforme Figura 17.

31 30 Agora o grupo solução já possui dois vértices. O grupo que já faz parte da solução possui seis arestas candidatas, a LRC deste grupo conterá as três melhores arestas e, dentre estas, uma será escolhida aleatoriamente para fazer parte do grupo solução. Neste passo o algoritmo selecionou a aresta (1, 3) com o custo dois, como se pode observar na Figura 18. Até este ponto a solução possui três vértices e, como mostrado na figura 18, o grupo solução possui seis arestas candidatas. Logo, a lista restrita de candidatos possui as cinqüenta por cento melhores arestas que participarão da seleção aleatória. Agora a aresta selecionada pelo método aleatório foi (1, 4) com custo de três unidades, conforme Figura 19. Neste passo a solução possui quatro vértices e aqui o grupo solução possui somente três arestas na lista de candidatos, pois devido à restrição do grau do vértice que é k = 3 no vértice 1 que já possui três ligações, todos os vértices candidatos ligados a ele deixarão de fazer parte da lista de candidatos. Então, dentre as três arestas da LC as cinqüenta por cento melhores (ou seja, as duas melhores) arestas da LC farão parte da LRC. Como se pode verificar na Figura 20, o algoritmo escolheu de maneira aleatória a aresta (2, 5) de custo quatro.

32 31 Aqui o algoritmo chegou ao final da fase de construção da solução inicial. Foi encontrada uma árvore geradora que tem o custo total onze, a qual servirá como parâmetro de entrada para a fase de busca local, ilustrada na Figura 21. A fase que se inicia agora fará uma busca pela vizinhança da solução tendo como objetivo a redução do custo total da solução já existente. O procedimento de perturbação executado por esta fase trata-se de encontrar um nó com grau de vértice igual a um, desconectá-lo da árvore, tentar conectá-lo a outro vértice que possa receber uma ligação e verificar o custo da nova solução. Esse vértice será testado em todos os vértices da solução. Esse procedimento será feito com todos os nós que possuem grau igual a um. Se houver melhora em alguma dessas tentativas, o algoritmo adota essa configuração melhor como solução corrente e inicia uma nova iteração de busca local, até que sejam feitos todos os testes na vizinhança e em nenhum destes tenha havido melhoria de custo. No final de todo esse processo, se dá por encerrada uma iteração GRASP. Como mostra a Figura 21, no início da fase de busca local o algoritmo identifica todos os nós da solução corrente, que possuem grau de vértice igual a um. No exemplo ilustrado, os nós 3, 4, 5, foram identificados com grau 1, o vértice 2 possui grau 2 e o vértice 1 possui grau 3. Os nós 3, 4, 5, passarão pelos processos de perturbações de busca local.

33 32 Primeiro serão feitas perturbações com o vértice 3, que será desconectado do nó 1 e será conectado ao nó 2. Com isso, a solução passa a ter custo total igual a doze, que é maior que o custo da solução corrente. Logo, essa perturbação será desconsiderada e o algoritmo avança para a próxima perturbação. O próximo passo do algoritmo é desconectar o nó 3 da solução e conectá-lo ao nó 4, com isso, a nova configuração passa a ter custo igual a dezesseis e essa configuração também será descartada pelo algoritmo. Na última ligação possível do nó 3, o mesmo será desconectado do nó 1 e conectado ao nó 5; com essa configuração, a solução passaria a ter custo igual a dezenove e seria descartada pelo algoritmo. Como o nó 3 não pode ser conectado a nenhum outro vértice da solução, o algoritmo passa a analisar o próximo nó de grau igual a um da solução corrente. A próxima tentativa será com o nó 4, que na solução corrente encontra-se ligado ao vértice 1 através de uma aresta com custo de ligação três. Este será desconectado da solução e primeiramente será conectado ao vértice 2, o que eleva o custo total da solução para doze; isto fará com que o algoritmo descarte essa configuração. O próximo passo é conectar o nó 4 ao nó 3, o que resulta que essa configuração possui custo igual a quinze e também será descartada pelo algoritmo. No passo seguinte, o nó 4 será conectado ao vértice 5; essa configuração faz com que o custo da solução, que antes era de onze, passe a ser de nove, e, portanto faz com que o algoritmo guarde esta configuração em memória para que no final da fase de busca, possivelmente substitua a solução corrente. Porém, a iteração não é interrompida e o algoritmo continua testando as possibilidades de configurações identificadas no inicio da fase de busca local. O último vértice de grau um identificado na solução corrente é o vértice 5, que primeiramente será desconectado do nó 2 e será conectado ao nó 3, fazendo com que o custo da solução seja igual a 17 e o algoritmo descarte a configuração. Em seguida, o nó 5 será conectado ao nó 4; essa mudança fará com que o custo, que ainda é de onze, seja reduzido para oito. O algoritmo compara o custo da configuração atual ao da solução que ele tinha encontrado e armazenado na memória. Após essa comparação, ao verificar a redução do valor na nova configuração, o programa substitui a solução armazenada por essa nova configuração encontrada de custo oito. Neste momento, como o nó 5 não pode ser conectado ao nó 1, devido ao grau do vértice 1 já possuir o valor três, e não haver mais nenhuma possibilidade de ligação, o programa resgata da memória a configuração guardada durante a fase de busca local e substitui a

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves CAP 254 CAP 254 Otimização Combinatória Professor: Dr. L.A.N. Lorena Assunto: Metaheurísticas Antonio Augusto Chaves Conteúdo C01 Simulated Annealing (20/11/07). C02 Busca Tabu (22/11/07). C03 Colônia

Leia mais

Meta-heurísticas. Métodos Heurísticos José António Oliveira zan@dps.uminho.pt. meta-heurísticas

Meta-heurísticas. Métodos Heurísticos José António Oliveira zan@dps.uminho.pt. meta-heurísticas Meta-heurísticas 105 meta-heurísticas Propriedades e Características: são estratégias que guiam o processo de pesquisa; - o objectivo a atingir é a exploração eficiente do espaço de pesquisa de modo a

Leia mais

CAPÍTULO 2. Grafos e Redes

CAPÍTULO 2. Grafos e Redes CAPÍTULO 2 1. Introdução Um grafo é uma representação visual de um determinado conjunto de dados e da ligação existente entre alguns dos elementos desse conjunto. Desta forma, em muitos dos problemas que

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

BUSCA LOCAL ITERADA (ILS ITERATED LOCAL SEARCH)

BUSCA LOCAL ITERADA (ILS ITERATED LOCAL SEARCH) BUSCA LOCAL ITERADA (ILS ITERATED LOCAL SEARCH) Francisco A. M. Gomes 1º sem/2009 MT852 Tópicos em pesquisa operacional Iterated local search (ILS) Método que gera uma sequência de soluções obtidas por

Leia mais

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14 1 Introdução O termo "roteamento de veículos" está relacionado a um grande conjunto de problemas de fundamental importância para a área de logística de transportes, em especial no que diz respeito ao uso

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

Pesquisa Operacional Programação em Redes

Pesquisa Operacional Programação em Redes Pesquisa Operacional Programação em Redes Profa. Alessandra Martins Coelho outubro/2013 Modelagem em redes: Facilitar a visualização e a compreensão das características do sistema Problema de programação

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

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

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Idéias básicas Um algoritmo guloso seleciona, a cada passo, o melhor elemento pertencente a entrada. Verifica se ele é viável - vindo a fazer parte da solução ou não. Após uma seqüência de

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Grafos Cliques Maximais Para determinar os cliques maximais de um grafo G podemos usar o método de Maghout em Dado o grafo abaixo, calcule Determine os conjuntos independentes maximais em

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu 1 Programação Não Linear Aula 25: Programação Não-Linear - Funções de Uma única variável Mínimo; Mínimo Global; Mínimo Local; Optimização Irrestrita; Condições Óptimas; Método da Bissecção; Método de Newton.

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

01/05/2016. Danillo Tourinho Sancho da Silva, MSc ROTEIRIZAÇÃO TEORIA DOS GRAFOS MOTIVAÇÃO

01/05/2016. Danillo Tourinho Sancho da Silva, MSc ROTEIRIZAÇÃO TEORIA DOS GRAFOS MOTIVAÇÃO ROTEIRIZAÇÃO Danillo Tourinho Sancho da Silva, MSc TEORIA DOS GRAFOS MOTIVAÇÃO 1 MOTIVAÇÃO Por que estudar grafos? Importante ferramenta matemática com aplicação em diversas áreas do conhecimento Utilizados

Leia mais

Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1

Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1 Grafos Msc. Daniele Carvalho Oliveira Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1 Árvore Geradora Mínima 2 Porque é um problema interessante Suponha que queremos

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

GASTAR MAIS COM A LOGÍSTICA PODE SIGNIFICAR, TAMBÉM, AUMENTO DE LUCRO

GASTAR MAIS COM A LOGÍSTICA PODE SIGNIFICAR, TAMBÉM, AUMENTO DE LUCRO GASTAR MAIS COM A LOGÍSTICA PODE SIGNIFICAR, TAMBÉM, AUMENTO DE LUCRO PAULO ROBERTO GUEDES (Maio de 2015) É comum o entendimento de que os gastos logísticos vêm aumentando em todo o mundo. Estatísticas

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

a 1 x 1 +... + a n x n = b,

a 1 x 1 +... + a n x n = b, Sistemas Lineares Equações Lineares Vários problemas nas áreas científica, tecnológica e econômica são modelados por sistemas de equações lineares e requerem a solução destes no menor tempo possível Definição

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura 7.1 - Exemplo de um grafo linear.

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura 7.1 - Exemplo de um grafo linear. CAPÍTULO 7 7 ANÁLISE DE REDES 7.1 Conceitos Básicos em Teoria dos Grafos Diversos problemas de programação linear, inclusive os problemas de transporte, podem ser modelados como problemas de fluxo de redes.

Leia mais

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia e não têm a intenção de substituir o livro-texto, nem qualquer outra bibliografia. Introdução O Cálculo Numérico

Leia mais

A Otimização Colônia de Formigas

A Otimização Colônia de Formigas A Otimização Colônia de Formigas Estéfane G. M. de Lacerda Departamento de Engenharia da Computação e Automação UFRN 22/04/2008 Índice A Inspiração Biológica O Ant System Aplicado ao PCV O Ant System Aplicado

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Inteligência Computacional Aplicada a Engenharia de Software

Inteligência Computacional Aplicada a Engenharia de Software Inteligência Computacional Aplicada a Engenharia de Software Estudo de caso III Prof. Ricardo de Sousa Britto rbritto@ufpi.edu.br Introdução Em alguns ambientes industriais, pode ser necessário priorizar

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão

Leia mais

Uma Heurística para o Problema de Redução de Padrões de Corte

Uma Heurística para o Problema de Redução de Padrões de Corte Uma Heurística para o Problema de Redução de Padrões de Corte Marcelo Saraiva Limeira INPE/LAC e-mail: marcelo@lac.inpe.br Horacio Hideki Yanasse INPE/LAC e-mail: horacio@lac.inpe.br Resumo Propõe-se um

Leia mais

Módulo 4. Construindo uma solução OLAP

Módulo 4. Construindo uma solução OLAP Módulo 4. Construindo uma solução OLAP Objetivos Diferenciar as diversas formas de armazenamento Compreender o que é e como definir a porcentagem de agregação Conhecer a possibilidade da utilização de

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

PLANEJAMENTO DA MANUFATURA

PLANEJAMENTO DA MANUFATURA 58 FUNDIÇÃO e SERVIÇOS NOV. 2012 PLANEJAMENTO DA MANUFATURA Otimizando o planejamento de fundidos em uma linha de montagem de motores (II) O texto dá continuidade à análise do uso da simulação na otimização

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos UNIVERSIDADE PRESBITERIANA MACKENZIE Laboratório de Computação Natural LCoN I ESCOLA DE COMPUTAÇÃO NATURAL Algoritmos Genéticos Rafael Xavier e Willyan Abilhoa Outubro/2012 www.computacaonatural.com.br

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Capítulo 4 - Roteamento e Roteadores

Capítulo 4 - Roteamento e Roteadores Capítulo 4 - Roteamento e Roteadores 4.1 - Roteamento Roteamento é a escolha do módulo do nó de origem ao nó de destino por onde as mensagens devem transitar. Na comutação de circuito, nas mensagens ou

Leia mais

Trabalho Computacional

Trabalho Computacional Universidade Federal do Espírito Santo Departamento de Informática Profª Claudia Boeres Teoria dos Grafos - 2014/2 Trabalho Computacional 1. Objetivo Estudo e implementação de algoritmos para resolução

Leia mais

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 UNIVERSIDADE FEDERAL DE VIÇOSA Departamento de Matemática - CCE Cálculo Numérico - MAT 271 Prof.: Valéria Mattos da Rosa As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia

Leia mais

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 4) Árvores balanceadas AVL, Rubro-Negras, B-Trees Operações em árvores binárias de busca

Leia mais

Inteligência de Enxame: ACO

Inteligência de Enxame: ACO Inteligência de Enxame: ACO! Otimização colônia de formigas é uma meta-heurística: «baseada em população «inspirada no comportamento forrageiro das formigas.! Muitas espécies de formigas são quase cegas.!

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001 47 5 Redes Neurais O trabalho em redes neurais artificiais, usualmente denominadas redes neurais ou RNA, tem sido motivado desde o começo pelo reconhecimento de que o cérebro humano processa informações

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

3 Classificação. 3.1. Resumo do algoritmo proposto

3 Classificação. 3.1. Resumo do algoritmo proposto 3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

Leia mais

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia

Leia mais

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que

Leia mais

4 Avaliação Econômica

4 Avaliação Econômica 4 Avaliação Econômica Este capítulo tem o objetivo de descrever a segunda etapa da metodologia, correspondente a avaliação econômica das entidades de reservas. A avaliação econômica é realizada a partir

Leia mais

3 Método de Monte Carlo

3 Método de Monte Carlo 25 3 Método de Monte Carlo 3.1 Definição Em 1946 o matemático Stanislaw Ulam durante um jogo de paciência tentou calcular as probabilidades de sucesso de uma determinada jogada utilizando a tradicional

Leia mais

Gerenciamento de projetos. cynaracarvalho@yahoo.com.br

Gerenciamento de projetos. cynaracarvalho@yahoo.com.br Gerenciamento de projetos cynaracarvalho@yahoo.com.br Projeto 3URMHWR é um empreendimento não repetitivo, caracterizado por uma seqüência clara e lógica de eventos, com início, meio e fim, que se destina

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com

Leia mais

Implantação. Prof. Eduardo H. S. Oliveira

Implantação. Prof. Eduardo H. S. Oliveira Visão Geral A implantação de um sistema integrado de gestão envolve uma grande quantidade de tarefas que são realizadas em períodos que variam de alguns meses a alguns anos, e dependem de diversos fatores,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Processos Técnicos - Aulas 4 e 5

Processos Técnicos - Aulas 4 e 5 Processos Técnicos - Aulas 4 e 5 Trabalho / PEM Tema: Frameworks Públicos Grupo: equipe do TCC Entrega: versão digital, 1ª semana de Abril (de 31/03 a 04/04), no e-mail do professor (rodrigues.yuri@yahoo.com.br)

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

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 2014/2015 Pedro Ribeiro (DCC/FCUP) Árvores de Suporte de Custo Mínimo 2014/2015 1 / 28 Árvore de Suporte Uma árvore de suporte ou árvore de extensão

Leia mais

PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO

PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO PROBLEMA DE TRANSPORTE: MODELO E MÉTODO DE SOLUÇÃO Luciano Pereira Magalhães - 8º - noite lpmag@hotmail.com Orientador: Prof Gustavo Campos Menezes Banca Examinadora: Prof Reinaldo Sá Fortes, Prof Eduardo

Leia mais

PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA. 09/abril de 2014

PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA. 09/abril de 2014 PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA 09/abril de 2014 Considerações Estatísticas para Planejamento e Publicação 1 Circularidade do Método

Leia mais

2 Atualidade de uma base de dados

2 Atualidade de uma base de dados 2 Atualidade de uma base de dados Manter a atualidade de uma base de dados é um problema que pode ser abordado de diferentes maneiras. Cho e Garcia-Molina [CHO] definem esse problema da seguinte forma:

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

¹CPTL/UFMS, Três Lagoas, MS,Brasil, oliveiralimarafael@hotmail.com. ²CPTL/UFMS, Três Lagoas, MS, Brasil.

¹CPTL/UFMS, Três Lagoas, MS,Brasil, oliveiralimarafael@hotmail.com. ²CPTL/UFMS, Três Lagoas, MS, Brasil. Encontro de Ensino, Pesquisa e Extensão, Presidente Prudente, 22 a 25 de outubro, 2012 36 INTRODUÇÃO A CRIPTOGRAFIA RSA Rafael Lima Oliveira¹, Prof. Dr. Fernando Pereira de Souza². ¹CPTL/UFMS, Três Lagoas,

Leia mais

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP 1 INTRODUÇÃO Devido ao crescimento da Internet, tanto do ponto de vista do número de usuários como o de serviços oferecidos, e o rápido progresso da tecnologia de comunicação sem fio (wireless), tem se

Leia mais

4 Arquitetura básica de um analisador de elementos de redes

4 Arquitetura básica de um analisador de elementos de redes 4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme

Leia mais

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA 136 ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA FILITTO, Danilo 1 Resumo: Os algoritmos Genéticos inspiram-se no processo de evolução natural e são utilizados para resolver problemas de busca e otimização

Leia mais

Simulação Computacional de Sistemas, ou simplesmente Simulação

Simulação Computacional de Sistemas, ou simplesmente Simulação Simulação Computacional de Sistemas, ou simplesmente Simulação Utilização de métodos matemáticos & estatísticos em programas computacionais visando imitar o comportamento de algum processo do mundo real.

Leia mais

DIFERENÇAS ENTRE HUB, SWITCH E ROOTER

DIFERENÇAS ENTRE HUB, SWITCH E ROOTER ESCOLA SECUNDÁRIA DE AROUCA CURSO OPERADOR DE INFORMÁTICA (2) Educação e Formação de Adultos DIFERENÇAS ENTRE HUB, SWITCH E ROOTER 1º PERÍODO Sara Matias ICORLI 2008/2009 Muita gente sabe que hub, switch

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

2 Problema das p-medianas

2 Problema das p-medianas 2 Problema das p-medianas 2.1 Definição O PMNC é definido da seguinte forma: determinar quais p facilidades (p m, onde m é o número de pontos onde podem ser abertas facilidades) devem obrigatoriamente

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

Complemento IV Introdução aos Algoritmos Genéticos

Complemento IV Introdução aos Algoritmos Genéticos Complemento IV Introdução aos Algoritmos Genéticos Esse documento é parte integrante do material fornecido pela WEB para a 2ª edição do livro Data Mining: Conceitos, técnicas, algoritmos, orientações e

Leia mais

Resolução do Problema de Roteamento de Veículos com Frota Heterogênea via GRASP e Busca Tabu.

Resolução do Problema de Roteamento de Veículos com Frota Heterogênea via GRASP e Busca Tabu. Resolução do Problema de Roteamento de Veículos com Frota Heterogênea via GRASP e Busca Tabu. Camila Leles de Rezende, Denis P. Pinheiro, Rodrigo G. Ribeiro camilalelesproj@yahoo.com.br, denisppinheiro@yahoo.com.br,

Leia mais

A SOLUTION OF N-QUEENS PROBLEM BY GENETIC ALGORITHMS

A SOLUTION OF N-QUEENS PROBLEM BY GENETIC ALGORITHMS UMA SOLUÇÃO DO PROBLEMA DAS N RAINHAS ATRAVÉS DE ALGORITMOS GENÉTICOS A SOLUTION OF N-QUEENS PROBLEM BY GENETIC ALGORITHMS Eliane Vendramini de Oliveira Mestre em Engenharia Elétrica UNESP/ Ilha Solteira

Leia mais

c. Técnica de Estrutura de Controle Teste do Caminho Básico

c. Técnica de Estrutura de Controle Teste do Caminho Básico 1) Defina: a. Fluxo de controle A análise de fluxo de controle é a técnica estática em que o fluxo de controle através de um programa é analisado, quer com um gráfico, quer com uma ferramenta de fluxo

Leia mais

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto Material Teórico - Módulo de Divisibilidade MDC e MMC - Parte 1 Sexto Ano Prof. Angelo Papa Neto 1 Máximo divisor comum Nesta aula, definiremos e estudaremos métodos para calcular o máximo divisor comum

Leia mais

MUDANÇAS NA ISO 9001: A VERSÃO 2015

MUDANÇAS NA ISO 9001: A VERSÃO 2015 MUDANÇAS NA ISO 9001: A VERSÃO 2015 Está em andamento o processo de revisão da Norma ISO 9001: 2015, que ao ser concluído resultará na mudança mais significativa já efetuada. A chamada família ISO 9000

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Processos de gerenciamento de projetos em um projeto

Processos de gerenciamento de projetos em um projeto Processos de gerenciamento de projetos em um projeto O gerenciamento de projetos é a aplicação de conhecimentos, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir seus requisitos.

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

1. Avaliação de impacto de programas sociais: por que, para que e quando fazer? (Cap. 1 do livro) 2. Estatística e Planilhas Eletrônicas 3.

1. Avaliação de impacto de programas sociais: por que, para que e quando fazer? (Cap. 1 do livro) 2. Estatística e Planilhas Eletrônicas 3. 1 1. Avaliação de impacto de programas sociais: por que, para que e quando fazer? (Cap. 1 do livro) 2. Estatística e Planilhas Eletrônicas 3. Modelo de Resultados Potenciais e Aleatorização (Cap. 2 e 3

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

QFD: Quality Function Deployment QFD: CASA DA QUALIDADE - PASSO A PASSO

QFD: Quality Function Deployment QFD: CASA DA QUALIDADE - PASSO A PASSO QFD: CASA DA QUALIDADE - PASSO A PASSO 1 - INTRODUÇÃO Segundo Akao (1990), QFD é a conversão dos requisitos do consumidor em características de qualidade do produto e o desenvolvimento da qualidade de

Leia mais