Algoritmos em Grafos - Aula 07 Algoritmos Gulosos

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

Download "Algoritmos em Grafos - Aula 07 Algoritmos Gulosos"

Transcrição

1 Algoritmos em Grafos - Aula 07 Algoritmos Gulosos Prof a. Laura Silva de Assis PPCIC - Programa de Pós-graduação em Ciência da Computação CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Campus Maracanã

2 Introdução 1 Algoritmos Gulosos Ian Parberry e William Gasarch, Problems on Algorithms A greedy algorithm starts with a solution to a very small subproblem and augments it successively to a solution for the big problem. The augmentation is done in a greedy fashion, that is, paying attention to short-term or local gain, without regard to whether it will lead to a good long-term or global solution. As in real life, greedy algorithms sometimes lead to the best solution, sometimes lead to pretty good solutions, and sometimes lead to lousy solutions. The trick is to determine when to be greedy. [Most greedy algorithms are deceivingly simple.] One thing you will notice about greedy algorithms is that they are usually easy to design, easy to implement, easy to analyze, and they are very fast, but they are almost always difficult to prove correct.

3 Introdução 2 Algoritmos Gulosos Os algoritmos para resolver problemas de otimização lidam com uma seqüência de passos, sendo que em cada passo há um conjunto de escolhas/opções. Uma estratégia para resolver problemas de otimização são os algoritmos gulosos. Os quais escolhem a opção que parece ser a melhor no momento (escolha ótima local), e esperam que desta forma consiga-se chegar a uma solução ótima global.

4 Introdução 3 Algoritmos Gulosos Técnica de Projeto de Algoritmos utilizada para problemas de Otimização. A cada decisão: Tomam decisões com base apenas na informação disponível, sem se preocupar com os efeitos futuros de tais decisões. Sempre escolhem a alternativa que parece mais promissora naquele instante. Nunca reconsideram as decisões tomadas, independentemente das conseqüências. Uma escolha que foi feita nunca é revista ou desfeita. Não há backtracking!

5 Introdução 4 Algoritmos Gulosos Justificativa Para muitos problemas de otimização, utilizar busca completa ou outros paradigmas pode ser lento demais, algoritmos mais simples ou mais espertos os resolveriam. Ainda, o problema pode ser tão difícil que abrimos mão de obtermos a solução ótima em trocade uma solução razoavelmente boa (subótima).

6 Introdução 5 Algoritmos Gulosos Definição Um algoritmo guloso sempre faz a escolha que parece ser correta no momento, ou seja, escolhe sempre o ótimo local na esperança que isto o leve até a solução ótima global. No entanto, nem todos os problemas permitem que algoritmos gulosos obtenham soluções ótimas. Porém, eles podem ser eficientes para uma ampla variedade de problemas.

7 Introdução 6 Algoritmos Gulosos Caracterização dos algoritmos O processo de construção da solução é iterativo, dividido em passos. A cada passo, existe um conjunto de elementos candidatos a fazerem parte da solução. A cada passo, um destes elementos candidatos é adicionado à solução. Uma função de viabilidade, que é usada para determinar se um candidato pode ser utilizado para contribuir para uma solução.

8 Introdução Algoritmos Gulosos Caracterização dos algoritmos Deve haver uma maneira de verificar se um conjunto específico de elementos produzem uma solução completa ou uma solução parcial. Deve haver também uma maneira de verificar se uma dada solução parcial é viável ou não. Uma função de seleção determina a cada passo, entre os elementos candidatos, qual é o mais promissor. A função objetivo determina o valor da solução encontrada, seja ela completa ou parcial. Uma função de solução, que indicará quando nós descobrimos uma solução completa. 7

9 Introdução 8 Algoritmos Gulosos Caracterização dos algoritmos A função de seleção é geralmente relacionada com a função objetivo. Problemas onde o objetivo é de maximização: a função de seleção provavelmente escolherá o candidato que proporciona o maior ganho individual. Problemas onde o objetivo é de minimização: a função de seleção escolherá o candidato de menor custo.

10 Introdução 9 Algoritmos Gulosos Caracterização dos algoritmos O algoritmo guloso nunca muda de idéia: Uma vez que um candidato é escolhido e adicionado à solução ele permanece nessa solução para sempre. Uma vez que um candidato é excluído do conjunto solução, ele nunca mais é reconsiderado.

11 Introdução 10 Algoritmos Gulosos C: Conjunto de elementos candidatos. S: conjunto de elementos que formam a solução. viavel: Função que verifica a viabilidade de uma solução parcial ou completa. solucao: Função que verifica se uma solução é completa.

12 Introdução 11 Algoritmos Gulosos Algoritmo 1: AlgoritmosGenerico() Entrada: C. Saída: S. 1 início 2 enquanto C e!solucao(s) faça 3 x seleciona(c); 4 C C \ x; 5 se viavel(s x) então 6 S S x; 7 se solucao(s) então 8 retorna S; 9 senão 10 retorna ;

13 Caracterização dos Problemas 12 Algoritmos Gulosos Caracterização dos Problemas Um problema deve possuir duas características para que os algoritmos gulosos sejam suficientes: Subestrutura Ótima: A solução ótima do problema original é formada pelas soluções ótimas dos subproblemas; Propriedade Gulosa: Solução ótima global pode ser produzida a partir de uma escolha ótima local. Ou seja, Se fizermos uma escolha que parece a melhor no momento e resolvermos os demais subproblemas da mesma forma, ainda assim podemos atingir a solução ótima. Nunca é necessário reconsiderar as decisões tomadas anteriormente. Se pudermos determinar estas duas características, teremos bons indícios de que pode funcionar...

14 Caracterização dos Problemas 13 Algoritmos Gulosos Subestrutura Ótima Um problema possui subestrutura ótima se a solução ótima global contiver as soluções ótimas dos subproblemas (ou subótimos locais). Processo: Examinamos a solução global ótima. Mostramos que uma decisão específica pode ser o primeiro passo para construir a solução. Mostramos que esta escolha reduz o problema a uma versão similar, porém, menor. Por consequência, restam um ou mais subproblemas a serem resolvidos. Mostramos, por exemplo por contradição, que as soluções para os subproblemas dentro da solução ótima também são ótimas.

15 Caracterização dos Problemas 14 Algoritmos Gulosos Subestrutura Ótima Implicitamente, este processo utiliza indução nos subproblemas para provar que fazer escolhas gulosas produz uma solução ótima global. Um problema que possui subestrutura ótima pode ser dividido sucessivamente, e a combinação das soluções ótimas dos subproblemas corresponde à solução ótima do problema original. Ou seja, é possível diminuir o problema, e resolvê-lo incrementalmente com ótimos locais, pois eles construirão o ótimo global. A propriedade de subestrutura ótima é primordial não só para os algoritmos gulosos, mas também para a Programação Dinâmica.

16 Caracterização dos Problemas 15 Algoritmos Gulosos Propriedade Gulosa Podemos construir a solução ótima global através de escolhas (gulosas) pelos ótimos locais. Em outras palavras, quando fazemos uma escolha em um passo, a fazemos sem nos preocuparmos com os passos seguintes. De fato, as escolhas atuais podem até se basear indiretamente nas escolhas feitas anteriormente, mas jamais podem se basear nas escolhas futuras. Ao fazermos escolhas, diminuímos o tamanho do subproblema seguinte. Desta forma, é interessante que o critério guloso seja o mais eficiente possível.

17 Caracterização dos Problemas 16 Algoritmos Gulosos Ótimo Subótimo Algoritmos gulosos podem ser aplicados a problemas que não possuam subestrutura ótima ou propriedade gulosa, ao custo de não haver garantia de qualidade da solução. Com efeito, para muitos problemas não se conhecem algoritmos exatos (os quais sempre determinam as soluções ótimas globais) eficientes. Nestas situações, torna-se interessante trocarmos a resposta ótima (aparentemente inalcançável) por uma resposta subótima (e alcançável com certa facilidade ). Mesmo não havendo qualquer garantia sobre a qualidade da solução, um bom algoritmo heurístico guloso ainda pode encontrar as soluções ótimas para instâncias de um problema.

18 17 Exemplo Coin Change Suponha que possuímos uma grande número de moedas com diferentes valores (25, 10, 5 e 1 centavos). Dado um valor alvo, desejamos fazer troco utilizando o menor número de moedas possível. Este tipo de problema é chamado de Coin Change (problema do troco).

19 18 Características - Coin Change O que caracteriza uma instância de um problema do tipo Coin Change são a denominação das moedas utilizadas e o valor do troco. Exemplo: Se as denominações são {100, 25, 10, 5, 1}, e é preciso dar um troco de $2.89. A melhor solução, isto é, o menor número de moedas possível para obter o valor, consiste em 10 moedas: 2 de 100, 3 de 25, 1 de 10 e 4 de 1. Em algumas versões, não importa apenas a quantidade de moedas do troco, mas também a quantidade de moedas do pagamento. Ou seja, deseja-se minimizar o número de moedas em toda a transação (pagamento + troco).

20 Algoritmo - Coin Change Use a moeda de maior denominação, tal que ela não seja maior do que o valor remanescente do troco. Exemplo - Coin Change Se as denominações são {25, 10, 5 e 1} centavos e queremos fazer um troco de 42 centavos, então podemos fazer: = = = = = 0 O total de 5 moedas é a solução ótima! 19

21 20 Análise O problema Coin Change possui os dois ingredientes necessários para aplicarmos algoritmos gulosos com sucesso: Subestrutura Ótima: As soluções ótimas para os subproblemas do problema original de 42 centavos estão contidas na solução do problema original: Para fazer 25 centavos, temos que usar 1 moeda de 25, portanto, a solução ótima. Para fazer 17 centavos, temos que usar (portanto, 4 moedas, a solução ótima). Para fazer 7 centavos, temos que usar (3 moedas), portanto, a solução ótima. Propriedade Gulosa: Dada qualquer quantia V, subtraímos de maneira gulosa o maior valor que não seja maior que V. Pode ser provado que qualquer outra estratégia não levará à solução ótima.

22 21 Algoritmo 2: CoinChange(valor, C) Entrada: valor : valor do troco C : conjunto de moedas 1 início 2 C {100, 25, 10, 5, 1}; 3 S ; 4 s 0; 5 enquanto s valor faça 6 x maior c i tal que s + x valor; 7 se c i C então 8 retorna solucao vazia; 9 S S c i ; 10 s s + x; 11 retorna S;

23 22 Exemplo - Coin Change O algoritmo é caracterizado como guloso porque a cada passo ele escolhe o maior valor possível, sem refazer suas decisões. Ou seja, uma vez que um determinado valor de moeda foi escolhido, não se retira mais este valor do conjunto solução.

24 23 Exemplo - Coin Change Com os valores dados das moedas, e tendo-se disponível uma quantidade adequada de cada uma, o algoritmo sempre irá fornecer uma solução ótima para o problema. O algoritmo apresentado não funciona para todas as denominações de moedas. Para diferentes valores de moedas, ou para uma quantidade limitada de cada uma, o algoritmo guloso pode não chegar a uma solução ótima, ou até mesmo não chegar a nenhuma solução (mesmo esta existindo).

25 24 Exemplo - Coin Change Por exemplo, para {1, 3, 4}, o algoritmo falha miseravelmente. Tomemos como exemplo a quantia de 6 centavos: O algoritmo nos daria a resposta {4, 1, 1}, com três moedas. No entanto, a solução ótima é {3, 3}. Este não é o único problema ao qual não se aplicam algoritmos gulosos com sucesso. Com efeito, há vários: Problema do Caixeiro Viajante. Problema da Mochila 0-1. Problemas NP-Difíceis em geral. etc.

26 Algoritmos Gulosos Exemplo de falha: Ao buscar o máximo global, um algoritmo guloso encontraria m ao invés de M. 25

27 26 Algoritmos Gulosos Exemplo de falha: Ao buscar o caminho de maior soma, qual solução o algoritmo guloso encontraria?

28 27 Algoritmos Gulosos Elogio Por outro lado, há vários exemplos de algoritmos gulosos de sucesso: O algoritmo de Kruskal para determinação de Árvores Geradoras Mínimas. O algoritmo de Djikstra (embora não seja puramente guloso) para determinação do Menor Caminho de Origem Única em grafos. Algoritmo de Huffman para compressão de dados. etc. Há também vários problemas que aceitam soluções gulosas: Problema da mochila fracionária. Problema de escalonamento de intervalos. etc.

29 28 Seleção de atividades Dado um conjunto de atividades, que desejam usar o mesmo recurso. Atividades podem ser um conjunto de palestras que devem ser alocadas em um auditório, aulas em uma sala de aulas. Cada atividade possui os tempos de início e fim. Duas atividades não podem usar o mesmo recurso ao mesmo tempo.

30 29 Seleção de atividades: 11 atividades em 14 unidades de tempo

31 30 Seleção de atividades Objetivo: selecionar um conjunto máximo de atividades compatíveis. Atividades compatíveis são atividades que não têm sobreposição de tempo. Então, alocar o maior número possível de atividades em um período de tempo definido.

32 31 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 1: Escolher primeiro as atividades que começam primeiro. Foi boa a solução?

33 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 1: Escolher primeiro as atividades que começam primeiro. Foi boa a solução? Não! Escolhemos 3 soluções enquanto poderíamos ter escolhido 4 soluções (1, 4, 8, 11). 32

34 33 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 2: Escolher primeiro as atividades que demoram menos tempo. Foi boa a solução?

35 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 2: Escolher primeiro as atividades que demoram menos tempo. Foi boa a solução? Não! Escolhemos 3 soluções enquanto poderíamos ter escolhido 4 soluções (1, 4, 8, 11). 34

36 35 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 3: Escolher primeiro as atividades que terminam primeiro. Foi boa a solução?

37 Seleção de atividades O que fará uma atividade ser mais promissora que outra? Tentativa 3: Escolher primeiro as atividades que terminam primeiro. Foi boa a solução? Agora sim! É possível demonstrar que essa solução é ótima. 36

38 37 Seleção de atividades Funcionamento do algoritmo guloso: Recebe a lista ordenada pelo horário de término. A cada iteração verifica se a atividade atual pode ser incluída na lista de atividades. Note que a atividade atual é a que termina primeiro, dentre as atividades restantes.

39 38 Seleção de atividades Formalizando: Seja S = {a 1, a 2,, a n} um conjunto de atividades propostas que desejam usar um recurso, que só pode ser usado por uma atividade de cada vez. Cada atividade a i tem um tempo de inicio s i e um tempo de término f i, onde 0 s i < f i <. As atividades a i e a j são compatíveis se s i > f j ou s j > f i. Problema: Selecionar um subconjunto de tamanho máximo de atividades mutuamente compatíveis.

40 39 Seleção de atividades Subestrutura ótima: Seja S ij = {a k S f i s k, f k s j }, ou seja, o subconjunto de atividades que podem começar após a i terminar e, que terminam após a atividade a j começar. Acrescentamos duas atividades fictícias a 0 e a n+1, onde f 0 = 0 e s n+1 = Logo, S = S 0n+1. Se uma solução para s ij inclui a k, então a k gera dois subproblemas s ik e s kj s ij. Logo, se há uma solução ótima para s ij que inclui a k, as soluções para s ik e s kj usadas dentro da solução ótima de s ij também devem ser ótimas.

41 40 Seleção de atividades Uma solução ótima para S ij seria: A ij = A ik {a k } A kj. A 0n+1 seria a solução para o problema inteiro. Teorema: Considere qualquer subproblema não vazio S ij e seja a m a atividade em S ij com término mais antigo. Então, A atividade a m é usada em algum subconjunto de tamanho máximo de atividades mutuamente compatíveis de S ij. O subproblema S im é vazio, e a escolha de a m deixa o subproblema S mj como único que pode ser não vazio.

42 41 Seleção de atividades Seja A ij um subconjunto de tamanho máximo de atividades mutuamente compatíveis em S ij. Ordene as atividade em A ij em ordem crescente de tempo de término. Seja a k a primeira atividade em A ij Se a k = a m pronto. Caso contrário, construa A ij = A ij {a k } {a m }

43 42 Algoritmo 3: SelecaoAtividadesRec(s,f,i,j) Entrada: s, f, i, j. s, f : tempos de inicio e termino das atividades i, j : indices iniciais do problema S ij 1 início 2 m i + 1; 3 enquanto m < j e s m < f i faça 4 m m + 1; 5 se m < j então 6 retorna {a m} SelecaoAtividadesRec(s, f, m, j); 7 senão 8 retorna ;

44 43 Algoritmo 4: SelecaoAtividadesIter(s,f) Entrada: s, f. s, f : tempos de inicio e termino das atividades 1 início 2 n comprimento(s); 3 A {1}; 4 i = 1; 5 para m 2 to n faça 6 se s m f i então 7 A A {a m}; 8 i m; 9 retorna A;

45 44 Problema da mochila Dados: Uma mochila que possui uma certa capacidade W (adimite um peso). Um conjunto de n objetos distintos, enumerados de 1 a n, cada um com um certo valor v 1, v 2,, v n e peso w 1, w 2,, w n. Objetivo: Maximizar o valor do conjunto de objetos dentro da mochila respeitando sua capacidade.

46 45 Problema da mochila Este problema se divide em dois subproblemas distintos: Mochila fracionária: Os objetos podem ser particionados, e o valor será proporcional à fração do objeto, ou seja, você pode colocar um pedaço do objeto dentro da mochila. Exemplo: ouro em pó. Mochila binária: Os objetos não podem ser particionados, ou estarão dentro da mochila ou fora. Problema conhecido como Problema da Mochila Binária ou 0-1. Itens inteiros e leva o mesmo item apenas uma vez. Exemplo: ouro em barras.

47 Problema da mochila fracionária Algoritmo Guloso 1 Selecione sucessivamente o item de maior valor que caiba na mochila. Algoritmo Guloso 2 Selecione sucessivamente o item de menor peso que caiba na mochila. Algoritmo Guloso 3 Selecione sucessivamente o item de maior valor por unidade de peso que caiba na mochila. Qual seria a melhor ordenação da entrada? A solução gulosa será ótima? 46

48 47 Problema da mochila Instância do problema da mochila

49 48 Problema da mochila fracionária Ideia do Algoritmo Ordene os itens por valor/peso em ordem decrescente. Começando em i = 1 coloque na mochila o máximo do item i que estiver disponível e for possível. Se a capacidade da mochila permitir passe para o próximo item.

50 49 Problema da mochila fracionária Item Valor(R$) Peso(Kg) Valor por Kg

51 50 Algoritmo 5: MochilaFrac(W, w[ ], v[ ]) Entrada: W. W : capacidade maxima da mochila w : vetordepesos v : vetordevalores 1 início 2 peso 0; 3 itens ; 4 valor 0; 5 i 1; 6 enquanto peso < W e i n faça 7 se w i W peso então 8 peso peso + w i ; 9 itens itens {i}; 10 valor valor + v i ; 11 senão 12 peso (W peso)/w i ; 13 itens itens ((W peso)/w i ){i}; 14 valor valor + ((W peso)/w i )v i ; 15 retorna peso, itens, valor;

52 51 Análise - Problema da mochila fracionária Subestrutura Ótima: As soluções ótimas para os subproblemas do problema original de 50 unidades de peso estão contidas na solução do problema original: Para uma mochila de peso 10, selecionamos o primeiro item, com peso 10 e valor R$60, portanto, a solução ótima (as alternativas seriam 1/2 do segundo objeto com peso 10 e valor R$50, ou 1/3 do terceiro objeto, com peso 10 e valor R$40).. Para uma mochila de peso 30, selecionamos o primeiro e o segundo item, com peso 30 e valor R$160, novamente, a solução ótima (a alternativa seria selecionar o terceiro item, com peso 30 e valor R$120). Propriedade Gulosa: Dado qualquer peso W, subtraímos de maneira gulosa a maior fração da melhor relação valor/peso que não seja maior que W e que não implique em selecionar mais do que 100% de um item. Mesmo informalmente, fica claro que esta estratégia sempre levará à solução ótima.

53 Problema da mochila binária Qual seria a melhor ordenação da entrada? Ordenar pelo valor? Ordenar pelo peso? Ordenar pelo valor/peso? Ideia do Algoritmo Ordene os itens por valor/peso em ordem decrescente. Começando em i = 1 coloque na mochila o item i que estiver disponível e for possível. Se a capacidade da mochila permitir passe para o próximo item. A solução gulosa será ótima? 52

54 53 Problema da mochila binária Item Valor(R$) Peso(Kg) Valor por Kg

55 54 Problema da mochila binária A solução gulosa foi ótima?

56 55 Problema da mochila binária A solução gulosa foi ótima?

57 56 Análise - Problema da mochila binária Subestrutura Ótima: As soluções ótimas para os subproblemas do problema original de 50 unidades de peso estão contidas na solução do problema original? Para uma mochila de peso 10, selecionamos o primeiro item, com peso 10 e valor R$60, portanto, a solução ótima (não há alternativas). Para uma mochila de peso 30, selecionamos o primeiro e o segundo item, com peso 30 e valor R$160, novamente, a solução ótima (a alternativa seria selecionar o terceiro item, com peso 30 e valor R$120). Para uma mochila de peso 50, selecionamos o primeiro e segundo itens, com peso 30 e valor R$160, o que não é a solução ótima (segundo e terceiro itens, com peso 50 e valor R$220)

58 O Problema da Árvore Geradora Mínima Uma árvore geradora de um grafo ponderado G é um subgrafo conexo e acíclico que possui todos os vértices originais de G e um subconjunto das arestas originais de G. A árvore geradora de custo mínimo é a árvore geradora de menor custo dentre todas as possíveis em um grafo. Grafo e AGM. 57

59 58 O Problema da Árvore Geradora Mínima Algoritmo Guloso 1 Selecione sucessivamente as arestas de menor custo que não gerem ciclos. Algoritmo de Prim Este algoritmo foi proposto 1930 pelo matemático tcheco Vojtěch Jarník. O mesmo algoritmo foi proposto pelo americano Robert C. Prim (* ) em 1957 e redescoberto por Edsger Dijkstra em 1959.

60 59 O Problema da Árvore Geradora Mínima O vértice 1 é o primeiro a ser escolhido.

61 60 O Problema da Árvore Geradora Mínima Inserção do vértice 2 e aresta (1, 2).

62 61 O Problema da Árvore Geradora Mínima Inserção do vértice 3 e aresta (2, 3).

63 62 O Problema da Árvore Geradora Mínima Inserção do vértice 4 e aresta (2, 4).

64 O Problema da Árvore Geradora Mínima Inserção do vértice 5 e aresta (4, 5). 63

65 O Problema da Árvore Geradora Mínima Inserção do vértice 6 e aresta (4, 6). 64

66 65 O Problema da Árvore Geradora Mínima AGM.

67 66 O Problema da Árvore Geradora Mínima Algoritmo Guloso 2 Inclua vértices na árvore sucessivamente, selecionando sempre as arestas de menor custo. Algoritmo de Kruskal Este algoritmo foi proposto em 1956 por Joseph Bernard Kruskal Jr. (* ).

68 O Problema da Árvore Geradora Mínima Grafo e vetor de arestas desordenado. 67

69 O Problema da Árvore Geradora Mínima Inserção da aresta (3, 6). 68

70 69 O Problema da Árvore Geradora Mínima Inserção da aresta (4, 7).

71 O Problema da Árvore Geradora Mínima Inserção da aresta (5, 6). 70

72 O Problema da Árvore Geradora Mínima Inserção da aresta (2, 3). 71

73 O Problema da Árvore Geradora Mínima Tentativa de inserção da aresta (2, 6). 72

74 O Problema da Árvore Geradora Mínima Inserção da aresta (6, 7). 73

75 74 O Problema de Load Balance Load Balancing ou Balanceamento de Carga é um tipo de algoritmo guloso bem conhecido. Pode ser difícil derivar uma estratégia gulosa. Com efeito, encontrar algoritmos gulosos é uma arte, assim como encontrar bons algoritmos de busca completa exige criatividade. Uma dica que surge deste exemplo: se não houver nenhuma estratégia gulosa óbvia, tentar ordenar os dados ou inserir dados dummy e ver se uma estratégia gulosa emerge.

76 75 O Problema de Load Balance Dados: 1 C 5 tubos que podem armazenar 0, 1 ou 2 amostras. 1 S 2C amostras e Uma lista M dos volumes das S amostras. O objetivo é determinar em qual tubo cada amostra deve ser armazenada, de maneira a minimizar o desequiĺıbrio entre os tubos.

77 76 O Problema de Load Balance Para ilustração vamos considerar: A = S M j /C é a média da massa total em cada um dos C tubo. j=1 C imbalance = X i A é a soma das diferenças entre a massa em cada i=1 tubo e A, em que X i é a massa total no tubo i.

78 77 O Problema de Load Balance

79 78 O Problema de Load Balance Ao analisarmos este problema para projetarmos um algoritmo, fazemos algumas observações: Dado que C 5 e S 10, é viável a aplicação de um algoritmo de busca completa. Se há um tubo vazio, é preferível mover uma amostra de um tubo com duas amostras para o tubo vazio - caso contrário, o tubo vazio aumentaria o desequiĺıbrio. Se S > C, então S C amostras deverão ser inseridas em tubos não vazios.

80 79 O Problema de Load Balance

81 80 O Problema de Load Balance O princípio é que a solução deste problema pode ser simplificada pela ordenação e adição de elementos: se S < 2C, adicione 2CS amostras dummy, com massa zero. Por exemplo, C = 3, S = 4, M = {5, 1, 2, 7} é transformado em C = 3, S = 6, M = {5, 1, 2, 7, 0, 0}. Depois, ordenamos as amostras de acordo com a massa {5, 1, 2, 7, 0, 0} {0, 0, 1, 2, 5, 7}. Com isto, o critério guloso se torna aparente: Emparelhar as amostras com massas M 1 e M 2C, colocando-os no tubo 1 Emparelhar as amostras com massas M 2 e M 2C1, colocando-os no tubo 2...

82 Exercícios 81 Algoritmos Gulosos - Exercício Mochila fracionária Determine a solução obtida por cada um dos 3 algoritmos apresentados. Item Valor(R$) Peso(Kg) Valor por Kg

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar Mochila Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar w[1]x[1] + w[2]x[2] + + w[n]x[n]. Suponha dado um número inteiro não-negativo W e vetores positivos w[1..n] e v[1..n].

Leia mais

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40 Algoritmos Greedy Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/2015 1 / 40 Algoritmos Greedy Vamos falar de algoritmos greedy. Em português são conhecidos como: Algoritmos

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

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

Árvore Binária de Busca Ótima

Árvore Binária de Busca Ótima MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms

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

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 7 de outubro de 2016 Marco Antonio

Leia mais

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17) Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17) Professor: Pedro Nóia Livro adotado: Matemática Aplicada às Ciências Sociais- 11º ano Elisabete Longo e Isabel

Leia 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

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da

Leia mais

Quinta-feira, 11 de abril

Quinta-feira, 11 de abril 15.053 Quinta-feira, 11 de abril Mais alguns exemplos de programação inteira Técnicas de planos de corte para obter melhores limitações Entregar: Observações de Aula 1 Exemplo: Localização do corpo de

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

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

Coloração de intervalos

Coloração de intervalos Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 1 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre

Leia mais

Noções da Teoria dos Grafos. André Arbex Hallack

Noções da Teoria dos Grafos. André Arbex Hallack Noções da Teoria dos Grafos André Arbex Hallack Junho/2015 Índice 1 Introdução e definições básicas. Passeios eulerianos 1 1.1 Introdução histórica..................................... 1 1.2 Passeios

Leia mais

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo Notas de aula da disciplina IME - ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) Troco mínimo Dados os tipos de moedas de um país, determinar o número mínimo

Leia mais

Escalonamento em uma máquina

Escalonamento em uma máquina Capítulo 4 Escalonamento em uma máquina Veremos neste capítulo vários problemas relacionados ao escalonamento em uma máquina. Estes problemas são importantes, pois além de fornecerem idéias para problemas

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

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3 Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko Capítulo 3 Árvores Problema: Suponha que numa cidade haja n postos telefônicos. Para que seja sempre possível haver comunicação

Leia mais

Teoria da Complexidade Computacional

Teoria da Complexidade Computacional Teoria da Complexidade Computacional 25 de novembro de 2011 Enquanto a teoria de análise de algoritmos estuda a análise de complexidade de algoritmos, a teoria da complexidade estuda a classificação de

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

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

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 + y s.a x + y x + y 5 b) Max z = x + y s.a x + y 0 x + y 5 c) Max z = x + y s.a x + 9y 6 8 x +

Leia mais

ANÁLISE DE ALGORITMOS

ANÁLISE DE ALGORITMOS ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução

Leia mais

PCC173 - Otimização em Redes

PCC173 - Otimização em Redes PCC173 - Otimização em Redes Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de maio de 2017 Marco Antonio M. Carvalho

Leia mais

Otimização de horários Seminário. Clarisse Resende 25/01/2013

Otimização de horários Seminário. Clarisse Resende 25/01/2013 Otimização de horários Seminário Clarisse Resende 25/01/2013 O problema dos horários consiste numa sequência de atividades de programação, satisfazendo um conjunto de restrições de recursos. Pretende-se

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 Técnicas básicas de contagem; Tentativa e Erro; Recursividade.

Leia mais

Reconhecimento de Padrões

Reconhecimento de Padrões Reconhecimento de Padrões André Tavares da Silva andre.silva@udesc.br Roteiro da aula Conceitos básicos sobre reconhecimento de padrões Visão geral sobre aprendizado no projeto de classificadores Seleçã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

14 Coloração de vértices Considere cada um dos grafos abaixo:

14 Coloração de vértices Considere cada um dos grafos abaixo: 14 Coloração de vértices Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual

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

Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que. Max f(x) s. a a x b

Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que. Max f(x) s. a a x b Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que se queira resolver o seguinte PPNL: Max f(x) s. a a x b Pode ser que f (x) não exista ou que seja difícil resolver a equação

Leia mais

Matemática Discreta Capítulo 3 Versão preliminar

Matemática Discreta Capítulo 3 Versão preliminar Matemática Discreta Capítulo 3 Versão preliminar Henri Anciaux e Derek Hacon October 25, 2007 1 Generalidades sobre grafos Um grafo G é simplesmente um par de dois conjuntos V e A, o segundo sendo constituído

Leia mais

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto Problema do Caminho Mais Curto " Podemos afectar pesos" aos arcos de um grafo, por exemplo, para representar uma distância entre cidades numa rede ferroviária: ria: Chicago 650 600 700 Toronto 200 New

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 Preparado a partir do texto: Rangel, Socorro. Teoria do Grafos,

Leia mais

P, NP e NP-Completo. André Vignatti DINF- UFPR

P, NP e NP-Completo. André Vignatti DINF- UFPR P, NP e NP-Completo André Vignatti DINF- UFPR Problemas Difíceis, Problemas Fáceis O mundo está cheio de problemas de busca. Alguns podem ser resolvidos eficientemente, outros parecem ser muito difíceis.

Leia mais

O mais leve e o mais pesado Algoritmos de Ordenação

O mais leve e o mais pesado Algoritmos de Ordenação Atividade 7 O mais leve e o mais pesado Algoritmos de Ordenação Sumário Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem, por exemplo, nomes em ordem alfabética, compromissos

Leia mais

Teoria dos Grafos AULA 3

Teoria dos Grafos AULA 3 Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br AULA 3 Trajetos, Caminhos, Circuitos, Grafos Conexos Preparado

Leia mais

Buscas Informadas ou Heurísticas - Parte III

Buscas Informadas ou Heurísticas - Parte III Buscas Informadas ou Heurísticas - Parte III Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Mestrado em Ciência da Computação / 2006 BUSCA SMA* (Simplified Memory-Bounded A*) BUSCA SMA* (Simplified

Leia mais

Pesquisa Operacional

Pesquisa Operacional Faculdade de Engenharia - Campus de Guaratinguetá Pesquisa Operacional Livro: Introdução à Pesquisa Operacional Capítulo 3 - Teoria dos Grafos Fernando Marins fmarins@feg.unesp.br Departamento de Produção

Leia mais

15 - Coloração Considere cada um dos grafos abaixo:

15 - Coloração Considere cada um dos grafos abaixo: 15 - Coloração Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual é o número

Leia mais

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Grafos Hamiltonianos e o Problema do Caixeiro Viajante Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá Grafo Hamiltoniano Definição: Um circuito hamiltoniano em um

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

Backtracking. Túlio Toffolo  Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho marco.opt@gmail.com BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Backtracking é um refinamento do algoritmo de busca

Leia mais

Projeto de Algoritmos e Indução Matemática

Projeto de Algoritmos e Indução Matemática Capítulo 3 Projeto de Algoritmos e Indução Matemática Um algoritmo é uma descrição precisa de um método para a resolução de determinado problema. Este capítulo apresenta a relação entre a prova de teoremas

Leia mais

Corte Máximo em Grafos Notas de aula de MAC-5727

Corte Máximo em Grafos Notas de aula de MAC-5727 Corte Máximo em Grafos Notas de aula de MAC-577 (Material Extra do Capítulo ) Prof. a Yoshiko Wakabayashi Versão pós-aula feita por Bruno Takahashi C. de Oliveira em 09/03/09 15 de agosto de 016 1 Definições

Leia mais

Resolução de problemas com apenas restrições lineares de igualdade

Resolução de problemas com apenas restrições lineares de igualdade Resolução de problemas com apenas restrições lineares de igualdade Marina Andretta ICMC-USP 14 de outubro de 2014 Marina Andretta (ICMC-USP) sme0212 - Otimização não-linear 14 de outubro de 2014 1 / 22

Leia mais

Teoria dos Grafos Aula 24

Teoria dos Grafos Aula 24 Teoria dos Grafos Aula 24 Aula passada Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto em grafos Algoritmo de Bellman Ford Algoritmo

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Grafos Enumeração de Passeios/Caminhos O processo associado à enumeração de caminhos de um grafo/dígrafo é semelhante ao processo de contagem com a diferença de que usaremos uma matriz de

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Árvores Algoritmo de Kruskal O algoritmo de Kruskal permite determinar a spanning tree de custo mínimo. Este custo corresponde à soma dos pesos (distância, tempo, qualidade,...) associados

Leia mais

2. Ordenação por Seleção

2. Ordenação por Seleção 1 Algoritmos de Ordenação Simples (SelectionSort, InsertionSort, BubbleSort) 1. Introdução Objetivo: Determinar a seqüência ordenada dos elementos de um vetor numérico. Algumas considerações: O espaço

Leia mais

Buscas Informadas ou Heurísticas - Parte II

Buscas Informadas ou Heurísticas - Parte II Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 FUNÇÕES HEURÍSTICAS - 1/7 FUNÇÕES HEURÍSTICAS - 2/7 Solução

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

Bem-vindo ao tópico sobre os grupos de desconto.

Bem-vindo ao tópico sobre os grupos de desconto. Bem-vindo ao tópico sobre os grupos de desconto. Nesse tópico, você aprenderá a configurar grupos de desconto. Imagine que sua empresa quer introduzir alguns novos descontos. Algumas dessas propostas estarão

Leia mais

Vença o relógio Redes de Ordenação

Vença o relógio Redes de Ordenação Atividade 8 Vença o relógio Redes de Ordenação Sumário Mesmo os computadores sendo rápidos, há um limite na sua velocidade de resolução de problemas. Uma forma de acelerar as coisas é usar vários computadores

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Abordagens para Resolução de Problemas

Leia mais

Jogos e invariantes. 6 de Janeiro de 2015

Jogos e invariantes. 6 de Janeiro de 2015 Jogos e invariantes 6 de Janeiro de 2015 Resumo Objetivos principais da aula de hoje: continuar com a ideia de explorar problemas. Apresentar a ideia de invariantes. 1 O jogo de apagar - introdução Quem

Leia mais

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos Grafos Caminhos mais curtos de única origem Conteúdo Subestrutura ótima Inicialização Propriedades de caminhos mais curtos Algoritmos Algoritmo de Bellman-Ford Caminhos mais curtos de única origem em gaos

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Mestrado em Ciência da Computação Prof. Dr. Aparecido Nilceu Marana Faculdade de Ciências I think the design of efficient algorithms is somehow the core of computer science.

Leia mais

Introdução à Teoria dos Grafos

Introdução à Teoria dos Grafos Capítulo 1 Introdução à Teoria dos Grafos 1.1 História O primeiro problema cuja solução envolveu conceitos do que viria a ser teoria dos grafos, denominado "problema das pontes de Königsberg", foi resolvido

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

Exemplos de modelos de PL ou PI

Exemplos de modelos de PL ou PI Exemplos de modelos de PL ou PI Prof. Eduardo Uchoa http://www.logis.uff.br/~uchoa/poi/ 1 Como funciona a PO? Toda a PO está baseada na construção de modelos matemáticos para representar de forma simplificada

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br A Classe de Problemas P A classe de algoritmos P é formada pelos procedimentos

Leia mais

Teoria dos Grafos Aula 23

Teoria dos Grafos Aula 23 Teoria dos Grafos Aula 23 Aula passada Apresentação de trabalhos Discussão da prova Subset sum Problema da mochila Aula de hoje Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação

Leia mais

Seleção de Atributos 1

Seleção de Atributos 1 Seleção de Atributos 1 Tópicos Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Seleção de atributos antes do aprendizado Benefícios Abordagens automáticas

Leia mais

SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos

SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos SCC-501 - Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos João Luís Garcia Rosa 1 1 Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis

Leia mais

Exemplo do jogo dos fósforos Terça-feira, 9 de maio. Exemplo para o Problema do Corpo de Bombeiros. Exemplo: Localidade do Corpo de Bombeiros

Exemplo do jogo dos fósforos Terça-feira, 9 de maio. Exemplo para o Problema do Corpo de Bombeiros. Exemplo: Localidade do Corpo de Bombeiros 15.053 Terça-feira, 9 de maio Busca Heurística: métodos para resolver problemas de otimização difíceis Distribuir: Anotações da Aula Veja a introdução ao trabalho Very Large Scale Neighborhood Search (está

Leia mais

Teoria da Computação. Clique de um Grafo. Alexandre Renato Rodrigues de Souza 1

Teoria da Computação. Clique de um Grafo. Alexandre Renato Rodrigues de Souza 1 Teoria da Computação Clique de um Grafo Alexandre Renato Rodrigues de Souza 1 O que é um grafo? Definição 1: grafo é uma estruturas utilizada para representar relações entre elementos de um dado conjunto.

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

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Classe de funções e notação Propriedades da notação Funções usuais Aula de hoje Grafos direcionados Busca em grafos direcionados Ordenação topológica Tempo de execução

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 6 Algoritmos Genéticos M.e Guylerme Velasco Roteiro Introdução Otimização Algoritmos Genéticos Representação Seleção Operadores Geneticos Aplicação Caixeiro Viajante Introdução

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão

Leia mais

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva

Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Resolução de problemas por meio de algoritmos

Leia mais

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores MC102 - Algoritmos e programação de computadores Aula 16: Busca e Ordenação em vetores Busca Dada uma coleção de n elementos, pretende-se saber se um determinado elemento valor está presente nessa coleção.

Leia mais

Busca com informação e exploração. Capítulo 4 Russell & Norvig Seção 4.2 e 4.3

Busca com informação e exploração. Capítulo 4 Russell & Norvig Seção 4.2 e 4.3 Busca com informação e exploração Capítulo 4 Russell & Norvig Seção 4.2 e 4.3 1 Revisão da aula passada: Busca A * Idéia: evitar expandir caminhos que já são caros Função de avaliação f(n) = g(n) + h(n)

Leia mais

INVESTIGANDO O PROBLEMA DA MOCHILA IRRESTRITA EM SUA VERSÃO BIDIMENSIONAL

INVESTIGANDO O PROBLEMA DA MOCHILA IRRESTRITA EM SUA VERSÃO BIDIMENSIONAL INVESTIGANDO O PROBLEMA DA MOCHILA IRRESTRITA EM SUA VERSÃO BIDIMENSIONAL Mirella Augusta Sousa Moura, mirella.asm14@hotmail.com Thiago Alves de Queiroz, th.al.qz@catalão.ufg.br Resumo: Empacotamento consiste

Leia mais

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica Gabriel Rosa Guilherme Alves Agenda O problema, definição e exemplo Construindo uma solução... Expressão recursiva Algoritmo recursivo

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Indução Matemática - parte II Profa. Sheila Morais de Almeida DAINF-UTFPR-PG setembro - 2015 Indução Matemática - Exemplo 1 Provar que se S é um conjunto finito com n elementos, n

Leia mais

o que há de comum entre... -a regra de Cramer para resolver equações lineares; -o algoritmo de Euclides para achar mdc;

o que há de comum entre... -a regra de Cramer para resolver equações lineares; -o algoritmo de Euclides para achar mdc; Soluções de equações polinomiais o que há de comum entre... -a regra de Cramer para resolver equações lineares; -o algoritmo de Euclides para achar mdc; -o cálculo do número mínimo de cédulas ou moedas

Leia mais

Grafos: caminhos (matriz adjacência)

Grafos: caminhos (matriz adjacência) Grafos: caminhos (matriz adjacência) Algoritmos e Estruturas de Dados 2 Graça Nunes 1 O problema do menor caminho Um motorista deseja encontrar o caminho mais curto possível entre duas cidades do Brasil

Leia mais

Dedução Indução Contra-exemplos Contradição Contrapositiva Construção Diagonalização

Dedução Indução Contra-exemplos Contradição Contrapositiva Construção Diagonalização Dedução Indução Contra-exemplos Contradição Contrapositiva Construção Diagonalização 1 Provas, lemas, teoremas e corolários Uma prova é um argumento lógico de que uma afirmação é verdadeira Um teorema

Leia mais

Paradigmas de Projeto de Algoritmos

Paradigmas de Projeto de Algoritmos Projeto de Algoritmos Cap.2 Paradigmas de Projeto de Algoritmos 1 Paradigmas de Projeto de Algoritmos indução, recursividade, algoritmos tentativa e erro, Paradigmas de Projeto de Algoritmos divisão e

Leia mais

INE Fundamentos de Matemática Discreta para a Computação

INE Fundamentos de Matemática Discreta para a Computação INE543 - Fundamentos de Matemática Discreta para a Computação 5) Relações 5.) Relações e Dígrafos 5.2) Propriedades de Relações 5.3) Relações de Equivalência 5.4) Manipulação de Relações 5.5) Fecho de

Leia mais

INF1010 Lista de Exercícios 2

INF1010 Lista de Exercícios 2 INF00 Lista de Exercícios 2 Árvores. Construir algoritmo para dada uma árvore n-ária, transformá-la em uma árvore binária. 2. Qual a maior e menor quantidade de nós que podem existir em uma árvore binária

Leia mais

TEORIA: 60 LABORATÓRIO: 0

TEORIA: 60 LABORATÓRIO: 0 Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA: BC1435 - Análise de Algoritmos

Leia mais

O Problema do Fluxo de Custos Mínimos Terça-feira 2 de abril. O Problema do Caminho mais Curto. Fórmula. Outra Fórmula

O Problema do Fluxo de Custos Mínimos Terça-feira 2 de abril. O Problema do Caminho mais Curto. Fórmula. Outra Fórmula 15.053 Terça-feira 2 de abril O Problema do Caminho mais Curto Algoritmo de Dijkstra para solucionar o Problema do Caminho mais Curto Distribuir: Observações de Aula 1 O Problema do Fluxo de Custos Mínimos

Leia mais

Grafos aula 3. Relembrando... Rede de eventos e atividades. Rede de eventos e atividades

Grafos aula 3. Relembrando... Rede de eventos e atividades. Rede de eventos e atividades Grafos aula Relembrando... m grafo é valorado (ou ponderado) se possuir valores associados às linhas e/ou aos vértices. Rota mais curta entre aeroportos aminho mais curto entre máquinas, para transmissão

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 11 de agosto de 2017 Marco Antonio

Leia mais

Método prático para extrair uma base de um conjunto de geradores de um subespaço de R n

Método prático para extrair uma base de um conjunto de geradores de um subespaço de R n Método prático para extrair uma base de um conjunto de geradores de um subespaço de R n 1. Descrição do método e alguns exemplos Colocamos o seguinte problema: dado um conjunto finito: A = {a 1, a 2,...,

Leia mais

Algoritmos e Estruturas de Dados II

Algoritmos e Estruturas de Dados II Algoritmos e Estruturas de Dados II Organização Revisão (DFS) Exemplo de Execução (DFS) Grafos V: e Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis

Leia mais

TESTES DE PRIMALIDADE

TESTES DE PRIMALIDADE TESTES DE PRIMALIDADE MOTIVACAO Testes de primalidade são ingredientes essenciais em sistemas de segurança computadorizados. Há uma série de sistemas de segurança que contam com a suposição que é difícil

Leia mais

3 Aprendizado por reforço

3 Aprendizado por reforço 3 Aprendizado por reforço Aprendizado por reforço é um ramo estudado em estatística, psicologia, neurociência e ciência da computação. Atraiu o interesse de pesquisadores ligados a aprendizado de máquina

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/27 4 - INTROD. À ANÁLISE COMBINATÓRIA 4.1) Arranjos

Leia mais

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32 Grafos - Introdução Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 1 / 32 Conceito Definição de Grafo Formalmente, um grafo é: Um conjunto de nós/vértices (V).

Leia mais

Análise de Imagens. Aula 20: Sistemas com Múltiplos Classificadores. Prof. Alexandre Xavier Falcão.

Análise de Imagens. Aula 20: Sistemas com Múltiplos Classificadores. Prof. Alexandre Xavier Falcão. A.X. Falcão p.1/17 Análise de Imagens Aula 20: Sistemas com Múltiplos Classificadores (Fusão) Prof. Alexandre Xavier Falcão afalcao@ic.unicamp.br. IC - UNICAMP A.X. Falcão p.2/17 Roteiro da Aula Sistemas

Leia mais

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO Por que estudar grafos? Importante ferramenta matemática com aplicação em diversas áreas

Leia mais

Teoria dos Grafos Aula 18

Teoria dos Grafos Aula 18 Teoria dos Grafos Aula 18 Aula passada Coloração Algoritmo guloso Número cromático Teorema das 4 cores Aula de hoje Clusterização (ou agrupamento) Algoritmo Variação Clusterização Coleção de objetos Agrupar

Leia mais

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Estruturas de Dados, 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 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma

Leia mais