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