Distance-vector routing ( DVR ) algorithm in java
On-campus and online computer science courses to Learn the basic concepts of Computer Science.This tutorial will cover c ,c++, java, data structure and algorithm,computer graphics,microprocessor,analysis of algorithms,Digital Logic Design and Analysis,computer architecture,computer networks,operating system.
code in Java:import java.io.*; public class DVR { static int graph[][]; static int via[][]; static int rt[][]; static int v; static int e; public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Please enter the number of Vertices: "); v = Integer.parseInt(br.readLine()); System.out.println("Please enter the number of Edges: "); e = Integer.parseInt(br.readLine()); graph = new int[v][v]; via = new int[v][v]; rt = new int[v][v]; for(int i = 0; i < v; i++) for(int j = 0; j < v; j++) { if(i == j) graph[i][j] = 0; else graph[i][j] = 9999; } for(int i = 0; i < e; i++) { System.out.println("Please enter data for Edge " + (i + 1) + ":"); System.out.print("Source: "); int s = Integer.parseInt(br.readLine()); s--; System.out.print("Destination: "); int d = Integer.parseInt(br.readLine()); d--; System.out.print("Cost: "); int c = Integer.parseInt(br.readLine()); graph[s][d] = c; graph[d][s] = c; } dvr_calc_disp("The initial Routing Tables are: "); System.out.print("Please enter the Source Node for the edge whose cost has changed: "); int s = Integer.parseInt(br.readLine()); s--; System.out.print("Please enter the Destination Node for the edge whose cost has changed: "); int d = Integer.parseInt(br.readLine()); d--; System.out.print("Please enter the new cost: "); int c = Integer.parseInt(br.readLine()); graph[s][d] = c; graph[d][s] = c; dvr_calc_disp("The new Routing Tables are: "); } static void dvr_calc_disp(String message) { System.out.println(); init_tables(); update_tables(); System.out.println(message); print_tables(); System.out.println(); } static void update_table(int source) { for(int i = 0; i < v; i++) { if(graph[source][i] != 9999) { int dist = graph[source][i]; for(int j = 0; j < v; j++) { int inter_dist = rt[i][j]; if(via[i][j] == source) inter_dist = 9999; if(dist + inter_dist < rt[source][j]) { rt[source][j] = dist + inter_dist; via[source][j] = i; } } } } } static void update_tables() { int k = 0; for(int i = 0; i < 4*v; i++) { update_table(k); k++; if(k == v) k = 0; } } static void init_tables() { for(int i = 0; i < v; i++) { for(int j = 0; j < v; j++) { if(i == j) { rt[i][j] = 0; via[i][j] = i; } else { rt[i][j] = 9999; via[i][j] = 100; } } } } static void print_tables() { for(int i = 0; i < v; i++) { for(int j = 0; j < v; j++) { System.out.print("Dist: " + rt[i][j] + " "); } System.out.println(); } } }output:-
Please enter the number of Vertices: 4 Please enter the number of Edges: 5 Please enter data for Edge 1: Source: 1 Destination: 2 Cost: 1 Please enter data for Edge 2: Source: 1 Destination: 3 Cost: 3 Please enter data for Edge 3: Source: 2 Destination: 3 Cost: 1 Please enter data for Edge 4: Source: 2 Destination: 4 Cost: 1 Please enter data for Edge 5: Source: 3 Destination: 4 Cost: 4 The initial Routing Tables are: Dist: 0 Dist: 1 Dist: 2 Dist: 2 Dist: 1 Dist: 0 Dist: 1 Dist: 1 Dist: 2 Dist: 1 Dist: 0 Dist: 2 Dist: 2 Dist: 1 Dist: 2 Dist: 0 Please enter the Source Node for the edge whose cost has changed: 2 Please enter the Destination Node for the edge whose cost has changed: 4 Please enter the new cost: 10 The new Routing Tables are: Dist: 0 Dist: 1 Dist: 2 Dist: 6 Dist: 1 Dist: 0 Dist: 1 Dist: 5 Dist: 2 Dist: 1 Dist: 0 Dist: 4 Dist: 6 Dist: 5 Dist: 4 Dist: 0 --------------------------------
0 comments: