Problemas com matriz

0 respostas
L
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class TestaCaminhoMinimo {

	public static void main(String[] args) {
			
		HashMap<No, HashMap<No, ArrayList<No>>> caminhoDeTodosParaTodos = new HashMap<No, HashMap<No, ArrayList<No>>>();
		HashMap<No, ArrayList<Integer>> vetorCompOnda = new HashMap<No, ArrayList<Integer>>();
		HashMap<No, ArrayList<No>> hashAux = new HashMap<No, ArrayList<No>>();
		
		Topologia topo = new Topologia();
		topo.criaTopologia();
		AtribuicaoCompOndaCodigos<No> atribCompOnda ;
			
		AgregacaoChamadasOnLine listaOrigem = new AgregacaoChamadasOnLine();
		AgregacaoChamadasOnLine listaDestino = new AgregacaoChamadasOnLine();
		
		int numeroDeRequisicoes = 5;
		listaOrigem.criaOrigemdestinoAleatorios( numeroDeRequisicoes,topo.getMatrizConectividade());
		listaDestino.criaOrigemdestinoAleatorios( numeroDeRequisicoes,topo.getMatrizConectividade()); 
		
			
		System.out.println("Lista de origem aleatoria"+" "+listaOrigem.getListaDeOrigensAleatorios());
		System.out.println("Lista de destinho aleatoria"+" "+listaDestino.getListaDeDestinosAleatorios());
	
		
		for (int i = 0; i < numeroDeRequisicoes; i++){
			atribCompOnda = new AtribuicaoCompOndaCodigos<No>(topo.getMatrizConectividade().size());
			Dijkstra dijkstra = new Dijkstra();
			topo.zeraDistancias();	
			No noOrigem = listaOrigem.getListaDeOrigensAleatorios().get(i);
			No noDestino = listaDestino.getListaDeDestinosAleatorios().get(i);
			
			if (Statics.LOG_DIJKSTRA)
			System.err.println("No origem :" + " "+ listaOrigem.getListaDeOrigensAleatorios().get(i));
			System.err.println("No destino :" + " "+ listaDestino.getListaDeDestinosAleatorios().get(i));
			
			
			dijkstra.caminhoMinimo(noOrigem);
			
			caminhoDeTodosParaTodos.put(noOrigem, hashAux);
			
			if (Statics.LOG_DIJKSTRA)
			System.out.println("Distanca do No " + ""+ noOrigem + " "+ "para o No" + " " + noDestino + ": "+ noDestino.getDistanciaMinima());
										
			List<No> path = dijkstra.getShortestPathTo(noDestino);
					
			if (Statics.LOG_DIJKSTRA)
			System.out.println("Path: " + path);
				
			caminhoDeTodosParaTodos.get(noOrigem).put(noDestino,(ArrayList<No>) path);
			ArrayList<Integer> atribuicaoRecursosDaRede = atribCompOnda.getCaminhoMinimo(path, noOrigem);
			vetorCompOnda.put(noOrigem, atribuicaoRecursosDaRede);
											
			if (Statics.LOG_DIJKSTRA)
			System.out.println("atribuicao de comprimento de onda e codigos"+ atribuicaoRecursosDaRede);
			
		}
			
		
		for (No noOriigem : caminhoDeTodosParaTodos.keySet()) {
			for (No nodestino : caminhoDeTodosParaTodos.get(noOriigem).keySet()) {
				System.err.println("O caminho de "+ noOriigem + " para " + nodestino + " é "	+ caminhoDeTodosParaTodos.get(noOriigem).get(nodestino));
			}
		}

		for (No origem : vetorCompOnda.keySet()) {
			System.err.println("vetor atribuicao comprimento de onda do No " + origem + "  é " + vetorCompOnda.get(origem));
		}
					
	}
	
}

Oi pessoal!

Meu código acima esta retornando um vetor e preciso que retorne uma matriz. Por exemplo:
Se tenho
noOrigem = A C D
noDestino = C B A

O algoritimo calcula o caminho minimo de noOrigem para noDestino, tendo como resultado por exemplo

path de A para C - A B C
path de C para B - C B
path de D para A - D C A
path de D para C - D B C

No atribuicaoDeRecursosDaRede soma 1 no indice do vetor do "path" de noOrigem e noDestino
Neste caso por exemplo retornaria -

A B C D
[1 3 3 0].

Preciso que o algoritimo retorne:
A B C D
A 0 1 0 0
B 0 0 2 0
C 1 1 0 0
D 0 1 1 0

para fazer isso o algoritmo tem que fazer o seguinte:
no caminho dado faz o seguite calculo
path de A para C - A B C - soma 1 no vetor AB e 1 no vetor BC
path de C para B - C B - soma 1 no vetor CB
path de D para A - D C A - soma 1 no vetor DC e 1 no vetor CA
path de D para C - D B C - soma 1 no vetor DB 1 no vetor BC

valeu!

Lidia

Criado 8 de setembro de 2009
Respostas 0
Participantes 1