Académique Documents
Professionnel Documents
Culture Documents
Algoritmos Gulosos
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 1/34
Algoritmos Gulosos
Introduo
Tcnica de Projeto de Algoritmos utilizada para
Problemas de Otimizao;
Idia: Quando necessrio fazer uma escolha
durante o processo de otimizao, escolher a opo
que parea ser a melhor no momento.
Ou seja, fazer a escolha tima local, esperando que
isto leve soluo tima global.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 2/34
Algoritmos Gulosos
Introduo:
A escolha realizada por este algoritmo , portanto,
dita gulosa (Greedy Algorithms)
Propriedade da escolha gulosa: deve garantir que a
cada iterao tomada uma deciso que ir levar a
um timo global.
Em um algoritmo guloso uma escolha que foi feita
nunca revista, ou seja, no h qualquer tipo de
reavaliao.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 3/34
Algoritmos Gulosos
Introduo:
Em cada passo a escolha a ser feita deve ser:
Possvel, (satisfaz as restries do problema);
Localmente tima, (deve ser a melhor escolha
possvel dentre as disponveis neste passo);
Irreversvel, (no pode ser alterada nos passos
subseqentes do algoritmo).
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 4/34
Algoritmos Gulosos
Cuidados:
Nem sempre a abordagem Gulosa leva uma
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 5/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 6/34
Algoritmos Gulosos
Exemplo do problema da Seleo de Atividades
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 7/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 8/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 9/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 10/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 11/34
Algoritmos Gulosos
Exemplo de Aplicao da Tcnica:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 12/34
Algoritmos Gulosos -
Cdigo de Huffman
Outro Exemplo de Aplicao da Tcnica:
Algoritmo Guloso de Huffman
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 13/34
Algoritmos Gulosos -
Cdigo de Huffman
Exemplo: Armazenar um arquivo de
100.000 caracteres
Representando cada caractere:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 14/34
Algoritmos Gulosos -
Cdigo de Huffman
Cdigos de Prefixo
Cdigos nos quais nenhuma palavra de cdigo
prefixo de alguma outra palavra de cdigo.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 15/34
Algoritmos Gulosos -
Cdigo de Huffman
Cdigos de Prefixo
Como nenhuma palavra de cdigo um prefixo de
qualquer outra, a palavra de cdigo que inicia um
arquivo codificado, no ambgua.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 16/34
Algoritmos Gulosos -
Cdigo de Huffman
Cdigos de Prefixo
Como nenhuma palavra de cdigo um prefixo de
qualquer outra, a palavra de cdigo que inicia um
arquivo codificado, no ambgua.
rvore Binria
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 17/34
Algoritmos Gulosos -
Cdigo de Huffman
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 18/34
Algoritmos Gulosos -
Cdigo de Huffman
Huffman criou um algoritmo guloso que produz um
cdigo de prefixo timo chamado cdigo de Huffman.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 19/34
Algoritmos Gulosos -
Cdigo de Huffman
Comea com um conjunto de |C| folhas e executa uma
seqncia de |C|1 operaes de intercalao para criar
a rvore final.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 20/34
Algoritmos Gulosos -
Cdigo de Huffman
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 21/34
Algoritmos Gulosos -
Cdigo de Huffman
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 22/34
Algoritmos Gulosos
Outro Exemplo de Aplicao da Tcnica:
O problema do cmbio: como trocar uma
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 23/34
Algoritmos Gulosos
Outro Exemplo de Aplicao da Tcnica:
O problema da mochila fracional:Voc um
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 24/34
Algoritmos Gulosos
Problema da Mochila Fracional
Podemos pegar uma frao de um item.
Ambos possuem uma subestrutura tima.
O problema da mochila fracional tem a propriedade
da escolha gulosa.
Para resolver o problema fracional, ordenar itens
pelo valor/peso: vi /wi .
Seja v /w v /w para todo i.
i i i+1 i+1
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 25/34
Algoritmos Gulosos
O problema da mochila fracional:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 26/34
Algoritmos Gulosos
Outro Exemplo ( possvel aplicar da Tcnica?)
O problema da mochila binria(No
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 27/34
Algoritmos Gulosos
Outro Exemplo ( possvel aplicar da Tcnica?)
O problema da mochila binria(No
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 28/34
Algoritmos Gulosos
Exemplo do problema da mochila binria:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 29/34
Algoritmos Gulosos
Exemplo do problema da mochila binria:
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 30/34
Algoritmos Gulosos - Resumo
1. Formule o problema como um problema de otimizao no qual
uma escolha feita, restando-nos ento um nico subproblema a
resolver.
2. Provar que existe sempre uma soluo tima do problema que
prova comea com uma soluo tima genrica e mostra que ela
pode ser modicada (possivelmente aps vrios passos) at que ela
inclua o(s) elemento(s) identificado(s) pela escolha gulosa.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 31/34
Algoritmos Gulosos -
Agradecimentos
Estes slides so baseados no material
disponibilizado pelos profs. Cid Carvalho de
Souza e Cndida Nunes da Silva, da
UNICAMP.
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 32/34
Algoritmos Gulosos - Exerccios
Apagando e Ganhando:
Apagando e Ganhando um programa de auditrio
muito inteligente. Os participantes so selecionados
por sorteio, e o apresentador escreve em uma lousa
um nmero de N dgitos. O participante deve ento
apagar D dgitos do nmero que est na lousa. Os
nmeros que restarem equivalem ao prmio em
dinheiro que ele leva para casa!
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 33/34
Algoritmos Gulosos - Exerccios
Apagando e Ganhando:
Outro Exemplo:
Nmero na lousa: 1 0 0 0 0 0 1 9
Dgitos a serem apagados: 4
Total a ser levado para casa: 1 0 0 0 0 0 1 9= 1019!
IF64C Estruturas de Dados 2 Engenharia da Computao Prof. Joo Alberto Fabro - Slide 34/34