Estou tentando implementar o algoritmo de Kruskal em Python. Eu posso escolher a melhor forma de representar o grafo em questao, que deve ser nao direcional e com pesos.Como voces representariam isso em Python? Criariam uma classe propria?
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.--
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Achei fantasticas suas implementacoes, a primeira realmente parecia pseudo codigo, mostrando com teoria dos conjuntos :D
Contudo, algumas coisas me deixaram confuso:
- `sorted(graph, key=graph.__getitem__)` -> nao seria o mesmo que `sorted(graph.keys())` ?
- `nodes = list(set.union(*map(set, graph)))` -> algum motivo especial para converter para lista?
- Entendi porque a implementacao 1 funciona, achei bem legal comparar os sets para verificar se a arvore onde se encontram eh a mesma, mas nao entendi o porque se ser frozenset. Qual a vantagem?
Gostei demais da segunda implementacao, pois voce simplesmente usou um dicionario para representar o grafo e o resto instanciou dentro do metodo :D Bem mais inteligente que criar uma classe, como eu fiz.
Obrigado pela contribuicao, ficou realmente super simples! Voce fez quase tudo o que fiz no meu programa em um unico metodo! :D Vou tentar reescrever seguindo o mesmo principio, pra fixar bem.
Agora saquei o que o Juan tinha falado :D Faltava mesmo o path compression.
Ainda nao ficou bonito como o do Danilo, mas acho que ja simplificou pacas - https://github.com/mvallebr/algo_training/blob/master/greedy/airline_company/airline_kruskal_simpler.py
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.