From 5d25fcbcdf3075cc7a3855a7828c8ccf688e9c77 Mon Sep 17 00:00:00 2001 From: Vinay Varma Date: Tue, 12 Dec 2017 14:21:48 +0530 Subject: [PATCH 1/3] added dijkstra's algorithm in java --- graph-algos/Dijkstra/dijkstras.java | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 graph-algos/Dijkstra/dijkstras.java diff --git a/graph-algos/Dijkstra/dijkstras.java b/graph-algos/Dijkstra/dijkstras.java new file mode 100644 index 0000000..95ffdaf --- /dev/null +++ b/graph-algos/Dijkstra/dijkstras.java @@ -0,0 +1,63 @@ +import java.util.*; +import java.lang.*; +import java.io.*; + +class ShortestPath +{ + static final int V=9; + int minDistance(int dist[], Boolean sptSet[]) + { + int min = Integer.MAX_VALUE, min_index=-1; + for (int v = 0; v < V; v++) + if (sptSet[v] == false && dist[v] <= min) + { + min = dist[v]; + min_index = v; + } + + return min_index; + } + void printSolution(int dist[], int n) + { + System.out.println("Vertex Distance from Source"); + for (int i = 0; i < V; i++) + System.out.println(i+" "+dist[i]); + } + void dijkstra(int graph[][], int src) + { + int dist[] = new int[V]; + Boolean sptSet[] = new Boolean[V]; + for (int i = 0; i < V; i++) + { + dist[i] = Integer.MAX_VALUE; + sptSet[i] = false; + } + dist[src] = 0; + for (int count = 0; count < V-1; count++) + { + int u = minDistance(dist, sptSet); + sptSet[u] = true; + for (int v = 0; v < V; v++) + if (!sptSet[v] && graph[u][v]!=0 && + dist[u] != Integer.MAX_VALUE && + dist[u]+graph[u][v] < dist[v]) + dist[v] = dist[u] + graph[u][v]; + } + printSolution(dist, V); + } + public static void main (String[] args) + { + int graph[][] = new int[][]{{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} + }; + ShortestPath t = new ShortestPath(); + t.dijkstra(graph, 0); + } +} From ce63795b9423cb387d55b757eb90da70f94a9c0e Mon Sep 17 00:00:00 2001 From: Vinay Varma Date: Wed, 13 Dec 2017 17:14:03 +0530 Subject: [PATCH 2/3] added readme file --- graph-algos/Dijkstra/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 graph-algos/Dijkstra/README.md diff --git a/graph-algos/Dijkstra/README.md b/graph-algos/Dijkstra/README.md new file mode 100644 index 0000000..e44b0bb --- /dev/null +++ b/graph-algos/Dijkstra/README.md @@ -0,0 +1,7 @@ + +## Dijkstra's Algorithm + +Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. +It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later. + +For a given source node in the graph, the algorithm finds the shortest path between that node and every other.It can also be used for finding the shortest paths from a single node to a single destination node by stopping the algorithm once the shortest path to the destination node has been determined.
For example, if the nodes of the graph represent cities and edge path costs represent driving distances between pairs of cities connected by a direct road, Dijkstra's algorithm can be used to find the shortest route between one city and all other cities. From d0e881f849d5e3cc0a08f6b4c265cede468f1a18 Mon Sep 17 00:00:00 2001 From: Vinay Varma Date: Wed, 13 Dec 2017 17:16:08 +0530 Subject: [PATCH 3/3] added visualzation --- graph-algos/Dijkstra/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/graph-algos/Dijkstra/README.md b/graph-algos/Dijkstra/README.md index e44b0bb..8432037 100644 --- a/graph-algos/Dijkstra/README.md +++ b/graph-algos/Dijkstra/README.md @@ -5,3 +5,5 @@ Dijkstra's algorithm is an algorithm for finding the shortest paths between node It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later. For a given source node in the graph, the algorithm finds the shortest path between that node and every other.It can also be used for finding the shortest paths from a single node to a single destination node by stopping the algorithm once the shortest path to the destination node has been determined.
For example, if the nodes of the graph represent cities and edge path costs represent driving distances between pairs of cities connected by a direct road, Dijkstra's algorithm can be used to find the shortest route between one city and all other cities. + +[visualize Dijkstra's Algorithm](https://www.cs.usfca.edu/~galles/visualization/Dijkstra.html)