| import java.util.*; public class Grafo { int[][] grafo; char[] nodos; Grafo(String serieNodos) { nodos = serieNodos.toCharArray(); grafo = newint[nodos.length][nodos.length]; } // asigna el tamaño de la arista entre dos nodos public void agregarRuta(char origen, char destino, int distancia) { int n1 = posicionNodo(origen); int n2= posicionNodo(destino); grafo[n1][n2]=distancia; grafo[n2][n1]=distancia; } // retorna la posición en el arreglo de un nodo específico private int posicionNodo(charnodo) { for(int i=0; i<nodos.length; i++) { if(nodos[i]==nodo) return i; } return -1; } // encuentra la ruta mínima entre dos nodos del grafo publicvoid encontrarRutaMinimaFuerzaBruta(char inicio, char fin) { int p1 = posicionNodo(inicio); int p2 = posicionNodo(fin); // cola para almacenar cada ruta que está siendoevaluada Stack<Integer> resultado = new Stack<Integer>(); resultado.push(p1); recorrerRutas(p1, p2, resultado); } // recorre recursivamente las rutas entre unnodo inicial y un nodo final // almacenando en una cola cada nodo visitado private void recorrerRutas(int nodoI, int nodoF, Stack<Integer> resultado) { // si el nodo inicial esigual al final se muestra y evalúa la ruta en revisión if(nodoI==nodoF) { for(int x: resultado) System.out.print(nodos[x]+ " "); System.out.print(": " +evaluar(resultado)); System.out.println(); return; } // Si el nodoInicial no es igual al final se crea una lista con todos los nodos // adyacentes al nodo inicialque no estén en la ruta en evaluación List<Integer> lista = new Vector<Integer>(); for(int i=0; i<grafo.length;i++) { if(grafo[nodoI][i]!=0 &&...
Leer documento completo
Regístrate para leer el documento completo.