domingo, setembro 26, 2010

Resolvendo UKP em Erlang.

Comecei a estudar Scala e foi batendo uma saudade de Erlang.
Resolvi atualizar a versão instalada no meu notebook da 11B pra 14B e pesquisei se já havia um plugin pra Eclipse pra Erlang e felizmente existe: Erlide. Se alguém conhecer um plugin melhor peço que me enviem, mas por enquanto o Erlide está me atendendo.

Após um revisão da linguagem aproveitei o clima de nostalgia e resolvi testar meus conhecimentos implementando o algoritmo de Garfinkel e Nemhauser para resolução de Unbounded Knapsack Problems (aka: UKP) ou em bom português: Problema da Mochila Ilimitada.












Para rodar basta executar no console do Eclipse (ou no shell do Erlang):
 ukpGN({{1,1,1},{2,3,4},{3,3,5}}, 5).
(Ou seja, resolva o problema para o cenário com:
Objeto 1 - peso 1 e valor 1
 Objeto 2 - peso 3 e valor 4
 Objeto 3 - peso 3 e valor 5
e "mochila" com capacidade para suportar peso de até 5)
Resposta:
[{1,2},{3,1}]
(Ou seja, objeto 1 aparece 2 vezes  e objeto 3 aparece 1 vez na solução ótima encontrada).

Da próxima vez quero ver se implemento algum algoritmo para computação distribuída em Erlang, já que esse é o grande appeal da linguagem.

Um comentário:

Anônimo disse...

Flavião,
Interessante notar seu interece por náutica, além de UKP e Erlang - que pra mim é grego. Seus únicos links, pelo menos agora, são para blogs de 2 veleiros (o meu inclusive).
Grato pelo link e bons ventos sempre (ou seria poucas marolas sempre?).
Hélio