[Dúvida] Teoria e Algoritmos em Grafos

1 resposta
N

Boa noite pessoal, estou fazendo um trabalho sobre grafos, mas estou tendo grande problema com o algoritmo de Prim.
Eu consegui fazer um, mas esta vindo uma resposta que não é correta. Vocês poderiam me ajudar a encontrar o erro? Já estou trabalhando nesse a algoritmo há horas.

public Collection agmUsandoPrim(ImplementsGrafo g)	

{

ArrayList t = new ArrayList();

ArrayList arestas = copiaArestas(g.getListaArestas());
Collections.sort(arestas);

ArrayList<Vertice> b = new ArrayList<Vertice>();
ArrayList<Vertice> V = copiaVertices(g.getListaVertices());

Collections.sort(V);
b.add(V.get(0));


while(b.size() != g.getNumV())
{    	  
	Aresta x = null;        		 
	for(Aresta a : arestas)
	{
		x = a;
		
		if(!existeVertice(b, a.origem()) && existeVertice(b, a.destino())){    				
			break;
		}    			
	}
	arestas.remove(x);    		
	
	if(x != null){
		t.add(x);
		b.add(x.origem());
	}
}
O exemplo de grafo que estou usando é

5

0 0-40; 1-50;

1 1-45; 2-4;

2 3-1; 0-99;

3 1-42; 4-7;

4 3-78; 0-32;

//segunda linha: 0 0-40; 1-50;
duas arestas com origem 0, uma com destino 0 e peso 40 e outra com destino 1 e peso 50.

muito obrigado aos que tentarem a descobrir o porquê do meu algoritmo não retornar a resposta correta, já estou nesse problema há mais ou menos 4 horas.

1 Resposta

JoaoBluSCBR

Poderia postar as classes Aresta e Vertice ???

Criado 11 de julho de 2011
Ultima resposta 11 de jul. de 2011
Respostas 1
Participantes 2