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:
Java Program to Find the Mode in a Data Set
Tạo số và chuỗi ngẫu nhiên trong Java
Initialize a HashMap in Java
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Program to Perform Left Rotation on a Binary Search Tree
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Testing an OAuth Secured API with Spring MVC
Java Program to Implement Miller Rabin Primality Test Algorithm
Weak References in Java
Java – Write to File
Java Program to Implement Attribute API
Java Program to Implement Gaussian Elimination Algorithm
Các kiểu dữ liệu trong java
Calling Stored Procedures from Spring Data JPA Repositories
Java Streams vs Vavr Streams
Using a Spring Cloud App Starter
A Guide to Queries in Spring Data MongoDB
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Lớp TreeMap trong Java
Java Program to Implement Maximum Length Chain of Pairs
HandlerAdapters in Spring MVC
Java Program to Implement Red Black Tree
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Converting a List to String in Java
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Lớp LinkedHashMap trong Java
Java Program to Solve Knapsack Problem Using Dynamic Programming
Spring Boot - Tracing Micro Service Logs
Versioning a REST API
Spring NoSuchBeanDefinitionException
Spring @Primary Annotation
So sánh HashMap và HashSet trong Java