8. VTU COMPUTER NETWORK LAB | READ NOW
VTU COMPUTER NETWORK LAB
Program 8:- Write a program to find the shortest path between vertices using the bellman-ford algorithm
Program Code
import java.util.Scanner;
public class ford
{
private int D[];
private int num_ver;
public static final int MAX_VALUE = 999;
public ford(int num_ver)
{
this.num_ver = num_ver;
D = new int[num_ver + 1];
}
public void BellmanFordEvaluation(int source, int A[][])
{
for (int node = 1; node <= num_ver; node++)
{
D[node] = MAX_VALUE;
}
D[source] = 0;
for (int node = 1; node <= num_ver - 1; node++)
{
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
if (A[sn][dn] != MAX_VALUE)
{
if (D[dn] > D[sn]+ A[sn][dn])
D[dn] = D[sn] + A[sn][dn];
}
}
}
}
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
if (A[sn][dn] != MAX_VALUE)
{
if (D[dn] > D[sn]+ A[sn][dn])
System.out.println("The Graph contains negative egde cycle"); }
}
}
for (int vertex = 1; vertex <= num_ver; vertex++)
{
System.out.println("distance of source"+source+"to"+vertex+"is" + D[vertex]);
}
}
public static void main(String[ ] args)
{
int num_ver = 0;
int source;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number of vertices");
num_ver = scanner.nextInt();
int A[][] = new int[num_ver + 1][num_ver + 1];
System.out.println("Enter the adjacency matrix");
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
A[sn][dn] = scanner.nextInt();
if (sn == dn)
{
A[sn][dn] = 0;
continue;
}
if (A[sn][dn] == 0)
{
A[sn][dn] = MAX_VALUE;
}
}
}
System.out.println("Enter the source vertex");
source = scanner.nextInt();
ford b = new ford (num_ver);
b.BellmanFordEvaluation(source, A);
scanner.close();
}
}
import java.util.Scanner;
public class ford
{
private int D[];
private int num_ver;
public static final int MAX_VALUE = 999;
public ford(int num_ver)
{
this.num_ver = num_ver;
D = new int[num_ver + 1];
}
public void BellmanFordEvaluation(int source, int A[][])
{
for (int node = 1; node <= num_ver; node++)
{
D[node] = MAX_VALUE;
}
D[source] = 0;
for (int node = 1; node <= num_ver - 1; node++)
{
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
if (A[sn][dn] != MAX_VALUE)
{
if (D[dn] > D[sn]+ A[sn][dn])
D[dn] = D[sn] + A[sn][dn];
}
}
}
}
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
if (A[sn][dn] != MAX_VALUE)
{
if (D[dn] > D[sn]+ A[sn][dn])
System.out.println("The Graph contains negative egde cycle"); }
}
}
for (int vertex = 1; vertex <= num_ver; vertex++)
{
System.out.println("distance of source"+source+"to"+vertex+"is" + D[vertex]);
}
}
public static void main(String[ ] args)
{
int num_ver = 0;
int source;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the number of vertices");
num_ver = scanner.nextInt();
int A[][] = new int[num_ver + 1][num_ver + 1];
System.out.println("Enter the adjacency matrix");
for (int sn = 1; sn <= num_ver; sn++)
{
for (int dn = 1; dn <= num_ver; dn++)
{
A[sn][dn] = scanner.nextInt();
if (sn == dn)
{
A[sn][dn] = 0;
continue;
}
if (A[sn][dn] == 0)
{
A[sn][dn] = MAX_VALUE;
}
}
}
System.out.println("Enter the source vertex");
source = scanner.nextInt();
ford b = new ford (num_ver);
b.BellmanFordEvaluation(source, A);
scanner.close();
}
}
import java.util.Scanner; public class ford { private int D[]; private int num_ver; public static final int MAX_VALUE = 999; public ford(int num_ver) { this.num_ver = num_ver; D = new int[num_ver + 1]; } public void BellmanFordEvaluation(int source, int A[][]) { for (int node = 1; node <= num_ver; node++) { D[node] = MAX_VALUE; } D[source] = 0; for (int node = 1; node <= num_ver - 1; node++) { for (int sn = 1; sn <= num_ver; sn++) { for (int dn = 1; dn <= num_ver; dn++) { if (A[sn][dn] != MAX_VALUE) { if (D[dn] > D[sn]+ A[sn][dn]) D[dn] = D[sn] + A[sn][dn]; } } } } for (int sn = 1; sn <= num_ver; sn++) { for (int dn = 1; dn <= num_ver; dn++) { if (A[sn][dn] != MAX_VALUE) { if (D[dn] > D[sn]+ A[sn][dn]) System.out.println("The Graph contains negative egde cycle"); } } } for (int vertex = 1; vertex <= num_ver; vertex++) { System.out.println("distance of source"+source+"to"+vertex+"is" + D[vertex]); } } public static void main(String[ ] args) { int num_ver = 0; int source; Scanner scanner = new Scanner(System.in); System.out.println("Enter the number of vertices"); num_ver = scanner.nextInt(); int A[][] = new int[num_ver + 1][num_ver + 1]; System.out.println("Enter the adjacency matrix"); for (int sn = 1; sn <= num_ver; sn++) { for (int dn = 1; dn <= num_ver; dn++) { A[sn][dn] = scanner.nextInt(); if (sn == dn) { A[sn][dn] = 0; continue; } if (A[sn][dn] == 0) { A[sn][dn] = MAX_VALUE; } } } System.out.println("Enter the source vertex"); source = scanner.nextInt(); ford b = new ford (num_ver); b.BellmanFordEvaluation(source, A); scanner.close(); } }
Program Output
