Você está na página 1de 70

Prof. Marco Antonio M. Carvalho Prof. Tlio ngelo M.

Toffolo 2011/1

BCC402 Algoritmos e Programao Avanada

Na aula anterior

Programao Dinmica

Na aula de hoje

Algoritmos Gulosos.

Problemas Combinatrios
Como dito anteriormente, problemas combinatrios so problemas em que uma soluo a combinao de um subconjunto de elementos; O espao de busca de um problema combinatrio o conjunto de todas as solues possveis, podendo ser restrito as solues viveis ou no.
4

Objetivos
As solues de um problema combinatrio so avaliadas de acordo com o objetivo a ser alcanado
Que pode ser representado atravs de uma expresso matemtica.

Tais expresses possuem como variveis os elementos a serem combinados e que formam o espao de busca; Podemos desejar maximizar ou minimizar a funo objetivo.
5

Restries
O enunciado de problemas combinatrios elencam um objetivo a ser alcanado de acordo com alguns critrios sobre a estrutura da soluo; Tais critrios so chamados de restries do problema, e so utilizados para definir a viabilidade de uma determinada soluo
Uma soluo que respeita todas as restries dita vivel; Uma soluo que viola uma ou mais restries chamada de invivel.
6

Problemas Combinatrios
Consideremos novamente o Problema da Mochila:
Dada uma mochila com capacidade C, e n objetos xi (i=1n) com peso pi (i=1n), o objetivo preencher a mochila com o maior peso total, respeitando a capacidade C.

Problemas Combinatrios
Este problema pode ser modelado da seguinte maneira:
As variveis so os elementos xi (i=1n), cujo domnio binrio A varivel xi vale 1 caso o elemento i esteja presente na soluo, e 0 caso contrrio. A funo objetivo a soma das variveis multiplicadas por seus pesos Ou seja, pi xi para (i=1n); Deve ser maximizada. A nica restrio que a soma dos pesos dos objetos selecionados seja menor que a capacidade C.
8

Modelagem
n

max pi xi
i =1

sujeito a :
n

px
i i =1

pi {0,1} i = 1,K n xi {0,1} i = 1,K n


9

Problemas Combinatrios

Supondo uma mochila de capacidade 15 kg e objetos de peso 12 kg, 2 kg, 4 kg e 8 kg temos


C = 15; n = 4; p1 = 12, p2 = 2, p3 = 4, p4 = 8.

10

Modelagem
max 12 x1 + 2 x2 + 4 x3 + 8 x4 sujeito a : 12 x1 + 2 x2 + 4 x3 + 8 x4 C pi {0,1} i = 1,K 4 xi {0,1} i = 1,K 4

11

Espao de Busca
X1 x2

x3 x4 x1 x1 x2 x3 x4 x2 x3 x4
12

x2 x4 x2

Solues
Uma soluo tima uma soluo vivel que otimiza (maximiza ou minimiza) a funo objetiva de um problema combinatrio
Ou seja, atinge o melhor valor para um problema.

Podemos ter uma ou mltiplas solues timas para um modelo, todas com o mesmo valor de avaliao da funo objetivo

13

Solues
Ao explorarmos o espao de busca utilizando alguma tcnica, podemos realizar movimentos entre solues
Ou seja, a partir de uma soluo atual, a alteramos de uma determinada maneira e chegamos a outra soluo.

Duas solues que se diferem entre si por um movimento so ditas vizinhas.


14

Vizinhana
X1 x2

x3 x4 x1 x1 x2 x3 x4 x2 x3 x4
15

x2 x4 x2

timo Local x timo Global


Um timo global uma soluo considerada tima entre todas as solues possveis
Ou seja, considerando-se todo o espao de busca.

Um timo local uma soluo considerada tima entre todas as solues de sua vizinhana
Ou seja, no necessariamente um timo global, podendo ser considerada uma soluo subtima.
16

timo Local x timo Global

17

Mtodos Exatos e Heursticos


Um mtodo exato (ou mtodo timo) para um problema combinatrio aquele que sempre gera uma soluo tima global
Em casos de modelagem complexa, determinar uma soluo tima em tempo razovel pode ser at impossvel com as ferramentas e tcnicas disponveis atualmente.

Podemos utilizar tambm mtodos heursticos (ou no exatos) para gerar boas solues (geralmente subtimas)
No h garantia de qualidade da soluo; Para problemas pequenos, pode achar a soluo tima com facilidade mesmo para problemas complexos; Geralmente rpidos.
18

Mtodos Exatos e Heursticos


Existem ainda os mtodos aproximados
Possuem garantia de proximidade da soluo tima; De acordo com a caracterizao matemtica da soluo tima, possvel provar, geralmente por induo, de que qualquer soluo obtida pelo mtodo estar dentro de uma determinada distncia da soluo tima.

19

Mtodos Exatos e Heursticos


Ao tratarmos de problemas difceis, como os NP-Completos, sabemos que no so conhecidas tcnicas eficientes para a sua resoluo
No possvel enumerar todo o espao de solues; Ento, podemos analisar as caractersticas da entrada para o problema para obter alguma vantagem no projeto de uma soluo?

O jeito lanar mo das heursticas.


20

Algoritmos Gulosos
Algoritmos Gulosos (Gananciosos, Mopes, etc.) so algoritmos que funcionam em uma sequncia de passos e se baseiam na melhor escolha a cada passo, de acordo com um conjunto de opes restrito
Em outras palavras, escolhe o timo local a cada passo.

Em algumas situaes esta estratgia leva solues timas ou timos globais; No entanto, no existe garantia de bom desempenho em geral
Em casos de problemas difceis, algoritmos gulosos bem projetados produzem solues boas, aceitveis diante da dificuldade dos problemas.
21

Algoritmos Gulosos
Algoritmos gulosos no reconsideram escolhas uma vez feitas
No realizam uma busca exaustiva; O que diferencia este mtodo de backtracking, por exemplo.

Uma escolha errada e a soluo tima pode escapar


Considere o problema do caminho de maior soma.

22

Algoritmos Gulosos
Boa parte do projeto de um algoritmo guloso devido criatividade do projetista
Novamente, necessrio enxergar o problema pela perspectiva correta, ter insights.

Em geral, algoritmos gulosos possuem:


Fcil definio; Fcil implementao; Bom desempenho computacional.

Provar a corretude de um algoritmo guloso pode requerer provas matemticas rigorosas e geralmente difceis.
23

Algoritmos Gulosos
Composio
Conjunto de opes Do qual escolhido o prximo passo. Critrio guloso de escolha Como ser realizada a escolha. independente de escolhas passadas. Funo de viabilidade Avalia quais escolhas so de fato viveis. Funo objetivo Determina o valor de cada escolha. Funo de soluo Determina se a soluo corrente completa.
24

Algoritmos Gulosos
Inicialmente, a soluo um conjunto vazio
A cada passo:
Escolha o melhor elemento do conjunto de opes por meio do critrio guloso e da funo objetivo; Verifique a viabilidade da soluo por meio da funo de viabilidade Se a escolha vivel
Atualize a funo objetivo;

Seno
Rejeite este elemento (definitivamente);

Se a soluo completa (funo soluo)


Termine.
25

Algoritmos Gulosos
Podem ser aplicados a qualquer problema
Podem ainda ser embutidos em mtodos mais elaborados.

Algumas aplicaes de sucesso


rvore Geradora Mnima Prim e Kruskal. Caminho Mnimo Dijkstra. Cobertura de Conjuntos Chvtal. Matrides

Aplicao sem tanto sucesso


Ordenao.
26

Exemplo

Consideremos mais uma vez o problema da mochila.

27

O Problema da Mochila
O conjunto de opes o conjunto de objetos disponveis a cada instante; A funo de viabilidade determina se o objeto escolhido ultrapassa o limite da mochila ou no; A funo objetivo avalia a soma dos objetos escolhidos A funo soluo determina se no mais possvel colocar objetos na mochila; E o critrio guloso? Qual poderia ser?

28

Algoritmos Gulosos Tpicos de Projeto


Caso o problema tratado possua a propriedade de subestrutura tima as chances de obter uma soluo tima global aumentam
Ser necessrio estabelecer uma relao entre a subestrutura tima e o critrio guloso a ser utilizado.

Algoritmos gulosos possuem um princpio bsico simples e muita liberdade para o seu projeto
Podem ser recursivos ou iterativos.

29

Subestrutura tima
Um problema que possui subestrutura tima pode ser dividido sucessivamente, e a combinao das solues timas dos subproblemas corresponde soluo tima do problema original
Ou seja, possvel diminuir o problema, e resolv-lo incrementalmente com timos locais, pois eles construiro o timo global.
30

rvores Geradoras

Dado um grafo G=(V, E) conectado e no orientado, uma rvore geradora T(V, E) composta por V = V e E E
Tendo em vista que T uma rvore, no so admitidos ciclos.

31

rvores Geradoras Mnimas


Em um grafo ponderado H, uma rvore geradora mnima uma rvore geradora cuja soma dos pesos das arestas mnimo
Existem dois algoritmos bsicos para determinao de rvores geradoras mnimas: Algoritmo de Prim; Algoritmo de Kruskal.

O problema de determinao de rvores geradoras mnimas possui subestrutura tima


Certamente a rvore geradora mnima conter as arestas de menor peso que no formem ciclos. Aplicao: Alocao de cabos em bairros.
32

rvores Geradoras
2 3 4

Uma rvore geradora.


2
4 8 2 11 8 7

4
9

9
6 1

14 10

6
33

Uma rvore geradora mnima.

Algoritmo de Prim

O algoritmo de Prim guloso; A partir de um vrtice inicial, seleciona as arestas de menor peso disponveis a cada vrtice j visitado
Sem ciclos, pois s visita novos ns.

34

Algoritmo de Prim
1. Crie um conjunto de vrtices S, com todos os vrtices do grafo G; 2. Selecione arbitrariamente um vrtice inicial e o remova de S;
1. Enquanto S vazio
1. Selecione a aresta (u, v) de menor peso tal que u no pertena a S e v pertena
1. No caso de empates, decida arbitrariamente;

2. Remova v de S; 3. Retorne ao passo 1.


35

Algoritmo de Prim

36

Algoritmo de Prim

37

Algoritmo de Prim

38

Algoritmo de Prim

39

Algoritmo de Prim

40

Algoritmo de Prim

41

Algoritmo de Prim

42

Algoritmo de Prim

43

Algoritmo de Prim

44

Algoritmo de Prim

45

Algoritmo de Kruskal
um algoritmo do tipo guloso tambm; No parte de um vrtice inicial; Seleciona arestas de menor peso sucessivamente at que uma rvore geradora seja obtida
Como as arestas so as de menor peso, seguro adicion-las arvore geradora mnima.

46

Algoritmo de Kruskal
1. Ordene as arestas de forma no decrescente em relao ao peso no vetor A 2. Enquanto houverem arestas ou T no for uma rvore geradora
1. Selecione a aresta de menor peso
1. Se a aresta conecta dois vrtices u e v no presentes na mesma rvore e no forma ciclo adicione-a a T e remova-a de A; 2. Caso contrrio, descarte-a. 3. Retorne ao passo 1.
47

Algoritmo de Kruskal

48

Algoritmo de Kruskal

49

Algoritmo de Kruskal

50

Algoritmo de Kruskal

51

Algoritmo de Kruskal

52

Algoritmo de Kruskal

53

Algoritmo de Kruskal

54

Algoritmo de Kruskal

55

Algoritmo de Kruskal

56

Cobertura de Conjuntos
Uma instncia do problema de cobertura de conjuntos consiste de um conjunto finito X e uma famlia F de subconjuntos de X
Cada elemento de X pertence a pelo menos um subconjunto em F
Elementos podem pertencer a mais de um subconjunto.

Dizemos que um subconjunto S pertencente a F uma cobertura dos seus elementos.


57

Cobertura de Conjuntos
O objetivo do problema encontrar um subconjunto de C F cujos membros sejam uma cobertura de X; O tamanho de C definido pela quantidade de subconjuntos que contm.

S4

S1 S2

S6 S3 S5

58

Cobertura de Conjuntos

S4

S1 S2

S6 S3 S5

59

Vclav Chvtal
Doutorado em Matemtica em 1 ano; Alexander von Humboldt Distinguished Senior Scientist Award Apenas 100 cientistas no mundo. BealeOrchard-Hays Prize for Excellence in Computational Mathematical Programming Mathematical Programming Society. 3 livros; Grafo com seu nome; Grande influncia no problema do caixeiro viajante, programao matemtica, art gallery theorem, resolution theorem proving, etc. Erds Number: 1.
60

David S. Johnson
Summa Cum Laude no Amherst College em Matemtica; Chefe do departamento de Algoritmos e Otimizao do AT&T labs; 2010 Knuth Prize; Fellow da ACM; Erds Number: 2; Computers and Intractability: A Guide to the Theory of NPCompleteness;
61

Lszl Lovsz
Presidente da International Mathematical Union; Kyoto Prize (2010); Hungary's Szchenyi Grand Prize (2008); Bolyai prize (2007); Gdel Prize (2001); Wolf Prize (1999); Fulkerson Prize (1982); Best Information Theory Paper Award (IEEE) (1981); Plya Prize (SIAM) (1979).
62

9 livros; Escreveu 6 artigos com Paul Erds; Erds Number: 1.

Cobertura de Conjuntos

S4 S2 S6 S3

S1

S5

63

Algoritmos Gulosos Tpicos de Projeto


Para projetar um bom algoritmo guloso alguns tpicos devem ser observados:
Definio de uma estratgia interessante para soluo do problema, no qualquer uma Qual seria um ponto chave para a soluo? O critrio guloso... Definir operaes leves; Utilizar estruturas de dados adequadas para as operaes definidas; Empregar tcnicas de implementao que tornem o cdigo mais esperto; Se o resultado for bom, batize com seu nome!
64

Algoritmos Gulosos Tpicos de Projeto


No h um mtodo geral que ensine como aplicar um mtodo guloso a um problema
Porm, a especificao do problema pode nos far boas dicas.

Alguns conceitos matemticos podem ser utilizados para definir uma classe de instncias que podem ser resolvidas de maneira gulosa
Mas normalmente, utiliza-se somente o faro e a experincia do projetista; H diversos critrios gulosos, mas poucos so corretos.

Em outros casos, um problema difcil pode conter um atalho engenhoso


Esta a beleza dos algoritmos gulosos e heursticas.
65

Algoritmos Gulosos
Vantagens
Algoritmos simples; Fcil implementao; Em alguns casos fornecem solues bastante satisfatrias.

Desvantagens
No h nenhuma garantia de qualidade da soluo.
66

Algoritmos Gulosos
Deixando de lado o rigor, deve-se olhar para um algoritmo guloso atravs dos olhos de um detetive e no atravs dos culos de um matemtico.

Um bom detetive

Guloso e Sortudo Guloso e Azarado


67

Perguntas?
68

Na prxima aula

Prticas.

69

FIM

70

Você também pode gostar