Vous êtes sur la page 1sur 25

Algoritmos gulosos

Prof. Andr Lins alla@ic.ufal.br

Instituto de Computao Universidade Federal de Alagoas

Introduo
Aplicado a problemas de otimizao. Seja o algoritmo para encontrar o caminho mais curto entre dois vrtices de um grafo:
Escolhe a aresta que parece mais promissora em qualquer instante.

Assim,
independente do que possa acontecer mais tarde, nunca reconsidera a deciso. no necessita avaliar alternativas, ou usar procedimentos sofisticados para desfazer decises tomadas previamente.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 2

Caractersticas dos algoritmos gulosos Problema geral


Dado um conjunto C, determine um subconjunto S contido em C tal que:
S satisfaz uma dada propriedade P, e S mnimo (ou mximo) em relao a algum critrio .

O algoritmo guloso para resolver o problema geral consiste em um processo iterativo em que S construdo adicionando-se ao mesmo elementos de C um a um.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 3

Caractersticas dos algoritmos gulosos Aspectos gerais


Para construir a soluo tima existe um conjunto ou lista de candidatos. So acumulados um conjunto de candidatos considerados e escolhidos, e o outro de candidatos considerados e rejeitados. Existe uma funo que verifica se um conjunto particular de candidatos produz uma soluo (sem considerar otimalidade no momento). Outra funo verifica se um conjunto de candidatos vivel (tambm sem preocupar com a otimalidade). Uma funo de seleo indica a qualquer momento quais dos candidatos restantes o mais promissor. Uma funo objetivo fornece o valor da soluo encontrada, como o comprimento do caminho construdo (no aparece de forma explicita no algoritmo guloso).

PAA - Adaptado de Prof. Loureiro dcc/ufmg

Caractersticas dos algoritmos gulosos Aspectos de implementao


Quando funciona corretamente, a primeira soluo encontrada sempre tima. A funo de seleo geralmente relacionada com a funo objetivo. Se o objetivo : Maximizar: provavelmente escolher o candidato restante que proporcione o maior ganho individual. Minimizar: ento ser escolhido o candidato restante de menor custo. O algoritmo nunca muda de idia: Um candidato escolhido e adicionado soluo passa a fazer parte dessa soluo permanentemente. Um candidato excludo do conjunto soluo, no mais reconsiderado.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

rvore geradora mnima Viso geral


Definio: Uma rvore geradora de um grafo G = (V, E) um subgrafo de G que uma rvore e contm todos os vrtices de G. Num grafo com pesos, o peso de um subgrafo a soma dos pesos das arestas deste subgrafo. Uma rvore geradora mnima para um grafo com pesos uma rvore geradora com peso mnimo. Problema: Determinar a rvore geradora mnima (em ingls, minimum spanning tree), de um grafo com pesos. Aplicaes: Determinar a maneira mais barata de se conectar um conjunto de terminais, sejam eles cidades, terminais eltricos, computadores, ou fbricas, usando-se, por exemplo, estradas, fios, ou linhas de comunicao

PAA - Adaptado de Prof. Loureiro dcc/ufmg

rvore geradora mnima Solues


O exemplo abaixo mostra que um grafo pode ter mais de uma rvore geradora mnima.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

rvore geradora mnima Algoritmo de Dijkstra-Prim


O algoritmo de DijkstraPrim comea selecionando um vrtice arbitrrio, e depois aumenta a rvore construda at ento escolhendo um novo vrtice (e um nova aresta) a cada iterao. Durante a execuo do algoritmo, podemos imaginar os vrtices divididos em trs categorias:
1. Vrtices da rvore: aqueles que fazem parte da rvore construda at ento; 2. Vrtices da borda: no esto na rvore, mas so adjacentes a algum vrtice da rvore; 3. Vrtices no-vistos: todos os outros.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 8

O principal passo do algoritmo a seleo de um vrtice da borda e de uma aresta incidente a este vrtice. O algoritmo de DijkstraPrim sempre escolhe uma aresta entre um vrtice da rvore e um vrtice da borda que tenha peso mnimo. A estrutura geral do algoritmo pode ser descrita do seguinte modo:

PAA - Adaptado de Prof. Loureiro dcc/ufmg

Idia bsica:
Tomando como vrtice inicial A, crie uma fila de prioridades classificada pelos pesos das arestas conectando A. Repita o processo at que todos os vrtices tenham sido visitados.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

10

Principio da tcnica de algoritmos gulosos


A cada passo faa a melhor escolha:
Escolha local tima.

Objetivo:
A soluo final ser tima tambm.

Sempre funciona?
No. Por exemplo, 0 1 Knapsack Problem.

Propriedades de problemas que, em geral, levam ao uso da estratgia gulosa:


Propriedade da escolha gulosa. Sub-estrutura tima.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 11

Propriedade da escolha gulosa


Soluo global tima pode ser obtida a partir de escolhas locais timas. Estratgia diferente de programao dinmica (PD). Uma vez feita a escolha, resolve o problema a partir do estado em que se encontra. Escolha na tcnica gulosa depende s do que foi feito e no do que ser feito no futuro. Progride na forma top-down:
Atravs de iteraes vai transformando uma instncia do problema em uma outra menor.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 12

Estratgia da prova que a escolha gulosa leva a uma soluo global tima:
Examine a soluo global tima. Mostre que a soluo pode ser modificada de tal forma que uma escolha gulosa pode ser aplicada como primeiro passo. Mostre que essa escolha reduz o problema a um similar mas menor. Aplique induo para mostrar que uma escolha gulosa pode ser aplicada a cada passo.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

13

Sub-estrutura tima
Um problema exibe sub-estrutura tima se uma soluo tima para o problema formada por solues timas para os subproblemas. Tcnicas de escolha gulosa e programao dinmica possuem essa caracterstica.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

14

Tcnica gulosa vs. programao dinmica


Possuem sub-estrutura tima. Programao dinmica:
Faz uma escolha a cada passo. Escolha depende das solues dos sub-problemas. Resolve os problemas bottom-up.

Tcnica gulosa:
Trabalha na forma top-down

PAA - Adaptado de Prof. Loureiro dcc/ufmg

15

Diferenas das duas tcnicas por intermdio de um exemplo


Problema da Mochila (enunciado):
Um ladro acha n itens numa loja. Item i vale vi unidades (dinheiro, e.g., R$, US$, etc). Item i pesa wi unidades (kg, etc). vi e wi so inteiros. Consegue carregar W unidades no mximo. Deseja carregar a carga mais valiosa.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 16

Verses do problema da mochila


Problema da Mochila 0 1 ou (0 1 Knapsack Problem): O item i levado integralmente ou deixado. Problema da Mochila Fracionrio:
Frao do item i pode ser levada.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

17

Consideraes sobre as duas verses


Possuem a propriedade de sub-estrutura tima. Problema inteiro:
Considere uma carga que pesa no mximo W com n itens. Remova o item j da carga (especfico mas genrico). Carga restante deve ser a mais valiosa pesando no mximo W - wj com n - 1 itens. Considere uma carga que pesa no mximo W com n itens. Remova um peso w do item j da carga (especfico mas genrico). Carga restante deve ser a mais valiosa pesando no mximo W - w com n - 1 itens mais o peso wj -w do item j
PAA - Adaptado de Prof. Loureiro dcc/ufmg 18

Problema fracionrio:

Problema inteiro:
No resolvido usando a tcnica gulosa.

Problema fracionrio:
resolvido usando a tcnica gulosa.

Estratgia para resolver o problema fracionrio:


Calcule o valor por unidade de peso vi/wi para cada item. Estratgia gulosa levar tanto quanto possvel do item de maior valor por unidade de peso. Repita o processo para o prximo item com esta propriedade at alcanar a carga mxima.

Complexidade para resolver o problema fracionrio:


Ordene os itens i (i = 1 ... n), pelas fraes vi/wi O(n log n).
PAA - Adaptado de Prof. Loureiro dcc/ufmg 19

Exemplo: Situao inicial Problema 0-1

PAA - Adaptado de Prof. Loureiro dcc/ufmg

20

Exemplo: Estratgia gulosa Problema 0-1

PAA - Adaptado de Prof. Loureiro dcc/ufmg

21

Consideraes:
Levar o item 1 faz com que a mochila fique com espao vazio Espao vazio diminui o valor efetivo da relao v/w Neste caso deve-se comparar a soluo do subproblema quando:
Item includo na soluo vs. Item excludo da soluo

Passam a existir vrios sub-problemas Programao dinmica passa a ser a tcnica adequada

PAA - Adaptado de Prof. Loureiro dcc/ufmg

22

Exemplo: Estratgia gulosa Problema fracionrio

PAA - Adaptado de Prof. Loureiro dcc/ufmg

23

Algoritmos aproximados
Problemas que somente possuem algoritmos exponenciais para resolv-los so considerados difceis. Problemas considerados intratveis ou difceis so muito comuns, tais como:
Problema do caixeiro viajante cuja complexidade de tempo O(n!).

Diante de um problema difcil comum remover a exigncia de que o algoritmo tenha sempre que obter a soluo tima. Neste caso procuramos por algoritmos eficientes que no garantem obter a soluo tima, mas uma que seja a mais prxima possvel da soluo tima

PAA - Adaptado de Prof. Loureiro dcc/ufmg

24

Tipos de algoritmos aproximados


Heurstica: um algoritmo que pode produzir um bom resultado, ou at mesmo obter a soluo tima, mas pode tambm no produzir soluo alguma ou uma soluo que est distante da soluo tima. Algoritmo aproximado: um algoritmo que gera solues aproximadas dentro de um limite para a razo entre a soluo tima e a produzida pelo algoritmo aproximado (comportamento monitorado sob o ponto de vista da qualidade dos resultados).
PAA - Adaptado de Prof. Loureiro dcc/ufmg 25