Java - Estructuras de datos

 
Vista:
sin imagen de perfil

Estructuras de datos

Publicado por Alberto (1 intervención) el 24/01/2018 21:41:51
He estado haciendo el algoritmo de dijkstra, y consigue que me muestre las distancias mas cortas desde un vertice de origen a todos lo demas.

Y ahora quiero guardar los caminos para llegar a esos vertices, por favor si alguien me puede ayidar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static int[] calcular(int origen, int[][] matriz) {
    int vertices = matriz.length;
    boolean[] vistos = new boolean[vertices];
    int[] distancias = new int[vertices];
 
    String[] caminos = new String[vertices];
    for(int i = 0; i < vertices; i++ )
        caminos[i] = origen+" ";
 
    for(int i = 0; i < vertices; i++) {
        distancias[i] = Integer.MAX_VALUE;
        vistos[i] = false;
        previo[i] = -1;
    }
    distancias[origen] = 0;
    int v;
    for(int i = 0; i < vertices; i++) {
        v = buscarMinVertice(distancias, vistos);
        vistos[v] = true;
        for(int j = 0; j < vertices; j++)
            if(matriz[v][j] != 0 && !vistos[j] && distancias[v] != Integer.MAX_VALUE)
                if(distancias[v] + matriz[v][j] < distancias[j])
                    distancias[j] = distancias[v] + matriz[v][j];
    }
    return distancias;
}
 
private static int buscarMinVertice(int[] distancias, boolean[] vistos) {
    int minVertice = -1;
    for(int i = 0; i < distancias.length; i++)
        if(!vistos[i] && (minVertice == -1 || distancias[i] < distancias[minVertice]))
            minVertice = i;
    return minVertice;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder