Algoritmo guloso: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
KLBot2 (discussão | contribs)
m Bot: A migrar 26 interwikis, agora providenciados por Wikidata em d:Q504353
Introdução de um exemplo e a explicação dele
Linha 4:
 
Desvantagens: Nem sempre conduz à soluções ótimas globais. Podem efetuar cálculos repetitivos.
 
 
 
Um exemplo de algoritmo guloso é o algoritmo do caixa eletrônico:
 
 
''o cliente pede para sacar o valor de R$ 65,00
Você tem as gavetas com os valores: 5, 10, 20, 50, 100.
 
65 < 100, portanto não dá para tirar da gaveta de 100
 
65 >= 50, portanto você tenta tirar da gaveta de 50
 
Se a gaveta de 50 tiver notas, você vai tirando uma nota de cada vez.
 
Digamos que a gaveta de 50 tenha notas.
 
65 - 50 = 15 (tirou uma nota de 50)
 
15 < 50, então não dá para tirar mais da gaveta de 50
 
15 >= 10, então dá para tirar da gaveta de 10
 
Se a gaveta de 10 tiver notas, você vai tirando uma nota de cada vez.
 
Digamos que a gaveta de 10 esteja vazia. Então você vai para a próxima gaveta, que é a de 5.
 
Digamos que a gaveta de 5 só tenha 2 notas.
 
15 - 5 = 10 (tirou uma nota de 5)
 
10 - 5 = 5 (tirou a última nota de 5)
 
Sobrou alguma coisa? Então você tem de desfazer tudo, e avisar ao usuário que não consegue dar 65 reais devido à falta de notas.''
 
 
Nesse exemplo podemos notar que apesar de o algoritmo fazer a melhor escolha local (que é retirar o maior numero de notas grandes possíveis), ele não tem um bom desempenho pois realiza todo o processamento desnecessariamente, e o resultado é diferente do esperado. Isso não parece muito, mas em um processo grande que envolve muitas variáveis, com valores altos, ou muitos dados para processar, gera um desperdício de tempo, que é crucial em uma aplicação do tipo.
 
 
{{mínimo sobre|matemática}}