Algoritmia - algoritmo de Djikstra(banquero) en java

 
Vista:

algoritmo de Djikstra(banquero) en java

Publicado por Sebastian (2 intervenciones) el 13/03/2007 03:48:39
HOLA, espero que alguien de verdad me pueda ayudar con el codigo de este algoritmo.
Es un poco urgente.
Gracias.
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
Imágen de perfil de Alejandro

Implementación del algoritmo de Dijkstra (banquero) en Java

Publicado por Alejandro (307 intervenciones) el 08/03/2024 00:28:45
Sebastián, el algoritmo de Dijkstra generalmente se utiliza para encontrar el camino más corto en un grafo ponderado. Por otro lado, el algoritmo del banquero se utiliza en el contexto de planificación de recursos y la prevención de interbloqueos en sistemas operativos.

Si estás buscando la implementación del algoritmo de Dijkstra para el banquero, podría ser un malentendido. Pero, a continuación, proporcionaré un ejemplo simple de un algoritmo de Dijkstra en Java.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Arrays;
 
public class DijkstraAlgorithm {
 
    static final int INF = Integer.MAX_VALUE;
 
    public static void dijkstra(int[][] graph, int start) {
        int V = graph.length;
        int[] dist = new int[V];
        boolean[] visited = new boolean[V];
 
        Arrays.fill(dist, INF);
        dist[start] = 0;
 
        for (int count = 0; count < V - 1; count++) {
            int u = minDistance(dist, visited);
            visited[u] = true;
 
            for (int v = 0; v < V; v++) {
                if (!visited[v] && graph[u][v] != 0 && dist[u] != INF && dist[u] + graph[u][v] < dist[v]) {
                    dist[v] = dist[u] + graph[u][v];
                }
            }
        }
 
        printSolution(dist);
    }
 
    static int minDistance(int[] dist, boolean[] visited) {
        int min = INF, minIndex = -1;
 
        for (int v = 0; v < dist.length; v++) {
            if (!visited[v] && dist[v] <= min) {
                min = dist[v];
                minIndex = v;
            }
        }
 
        return minIndex;
    }
 
    static void printSolution(int[] dist) {
        System.out.println("Distancias mínimas desde el vértice inicial:");
        for (int i = 0; i < dist.length; i++) {
            System.out.println("Vértice " + i + ": " + dist[i]);
        }
    }
 
    public static void main(String[] args) {
        int[][] graph = {
                {0, 4, 0, 0, 0, 0, 0, 8, 0},
                {4, 0, 8, 0, 0, 0, 0, 11, 0},
                {0, 8, 0, 7, 0, 4, 0, 0, 2},
                {0, 0, 7, 0, 9, 14, 0, 0, 0},
                {0, 0, 0, 9, 0, 10, 0, 0, 0},
                {0, 0, 4, 14, 10, 0, 2, 0, 0},
                {0, 0, 0, 0, 0, 2, 0, 1, 6},
                {8, 11, 0, 0, 0, 0, 1, 0, 7},
                {0, 0, 2, 0, 0, 0, 6, 7, 0}
        };
 
        dijkstra(graph, 0);
    }
}

Este ejemplo es un algoritmo de Dijkstra que encuentra las distancias mínimas desde un vértice inicial en un grafo ponderado dirigido. Ten en cuenta que esta implementación no está directamente relacionada con el algoritmo del banquero, ya que son algoritmos diferentes con propósitos distintos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar