This is a java program to find the optimized wire length between any two components in an electric circuits. This problem is similar to the problem of finding the shortest path between any two cities in the state. A simple Dijkstra’s algorithm would result in providing the shortest wire length between any two components in electric circuits.
Here is the source code of the Java Program to Optimize Wire Length in Electrical Circuit. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a sample program to find the minimum wire length between two component in a electrical circuits import java.util.*; class Node { public int label; // this node's label (parent node in path tree) public int weight; // weight of edge to this node (distance to start) public Node(int v, int w) { label = v; weight = w; } } public class ShortestPath { public static Scanner in; // for standard input public static int n, m; // n = #vertices, m = #edges public static LinkedList[] graph; // adjacency list representation public static int start, end; // start and end points for shortest path public static void main(String[] args) { in = new Scanner(System.in); // Input the graph: System.out .println("Enter the number of components and wires in a circuit:"); n = in.nextInt(); m = in.nextInt(); // Initialize adjacency list structure to empty lists: graph = new LinkedList[n]; for (int i = 0; i < n; i++) graph[i] = new LinkedList(); // Add each edge twice, once for each endpoint: System.out .println("Mention the wire between components and its length:"); for (int i = 0; i < m; i++) { int v1 = in.nextInt(); int v2 = in.nextInt(); int w = in.nextInt(); graph[v1].add(new Node(v2, w)); graph[v2].add(new Node(v1, w)); } // Input starting and ending vertices: System.out .println("Enter the start and end for which length is to be minimized: "); start = in.nextInt(); end = in.nextInt(); // FOR DEBUGGING ONLY: displayGraph(); // Print shortest path from start to end: shortest(); } public static void shortest() { boolean[] done = new boolean[n]; Node[] table = new Node[n]; for (int i = 0; i < n; i++) table[i] = new Node(-1, Integer.MAX_VALUE); table[start].weight = 0; for (int count = 0; count < n; count++) { int min = Integer.MAX_VALUE; int minNode = -1; for (int i = 0; i < n; i++) if (!done[i] && table[i].weight < min) { min = table[i].weight; minNode = i; } done[minNode] = true; ListIterator iter = graph[minNode].listIterator(); while (iter.hasNext()) { Node nd = (Node) iter.next(); int v = nd.label; int w = nd.weight; if (!done[v] && table[minNode].weight + w < table[v].weight) { table[v].weight = table[minNode].weight + w; table[v].label = minNode; } } } for (int i = 0; i < n; i++) { if (table[i].weight < Integer.MAX_VALUE) { System.out.print("Wire from " + i + " to " + start + " with length " + table[i].weight + ": "); int next = table[i].label; while (next >= 0) { System.out.print(next + " "); next = table[next].label; } System.out.println(); } else System.out.println("No wire from " + i + " to " + start); } } public static void displayGraph() { for (int i = 0; i < n; i++) { System.out.print(i + ": "); ListIterator nbrs = graph[i].listIterator(0); while (nbrs.hasNext()) { Node nd = (Node) nbrs.next(); System.out.print(nd.label + "(" + nd.weight + ") "); } System.out.println(); } } }
Output:
$ javac ShortestPath.java $ java ShortestPath Enter the number of components and wires in a circuit: 4 3 Mention the wire between components and its length: 0 1 2 1 3 3 1 2 2 Enter the start and end for which length is to be minimized: 0 1 0: 1(2) 1: 0(2) 3(3) 2(2) 2: 1(2) 3: 1(3) Wire from 0 to 0 with length 0: Wire from 1 to 0 with length 2: 0 Wire from 2 to 0 with length 4: 1 0 Wire from 3 to 0 with length 5: 1 0
Related posts:
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
Form Validation with AngularJS and Spring MVC
Quick Guide to @RestClientTest in Spring Boot
Multi Dimensional ArrayList in Java
Server-Sent Events in Spring
Guide to the Java Queue Interface
Registration – Password Strength and Rules
Java Program to Implement AttributeList API
Upload and Display Excel Files with Spring MVC
Reading an HTTP Response Body as a String in Java
Java Program to Find the Vertex Connectivity of a Graph
Custom Thread Pools In Java 8 Parallel Streams
Java Program to Find the GCD and LCM of two Numbers
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Java Program to Implement Sparse Array
Java Program to Solve Tower of Hanoi Problem using Stacks
Java Program for Douglas-Peucker Algorithm Implementation
Spring Cloud Connectors and Heroku
Send an email with an attachment
String Processing with Apache Commons Lang 3
Remove the First Element from a List
Java Program to Represent Graph Using Adjacency Matrix
Java Program to Implement AVL Tree
New Features in Java 13
Java Program to implement Priority Queue
HttpAsyncClient Tutorial
Java Program for Topological Sorting in Graphs
Abstract class và Interface trong Java
Java Program to Construct a Random Graph by the Method of Random Edge Selection
Cachable Static Assets with Spring MVC
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Setting a Request Timeout for a Spring REST API