This is a java program to check whether graph contains Eulerian Cycle. The criteran Euler suggested,
1. If graph has no odd degree vertex, there is at least one Eulerian Circuit.
2. If graph as two vertices with odd degree, there is no Eulerian Circuit but at least one Eulerian Path.
3. If graph has more than two vertices with odd degree, there is no Eulerian Circuit or Eulerian Path.
Here is the source code of the Java Program to Check Whether an Directed Graph Contains a Eulerian Path. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
package com.maixuanviet.graph;
import java.util.InputMismatchException;
import java.util.Scanner;
public class DirectedEulerPath
{
private int[][] adjacencyMatrix;
private int numberOfNodes;
public DirectedEulerPath(int numberOfNodes, int[][] adjacencyMatrix)
{
this.numberOfNodes = numberOfNodes;
this.adjacencyMatrix = new int[numberOfNodes + 1][numberOfNodes + 1];
for (int sourceVertex = 1; sourceVertex <= numberOfNodes; sourceVertex++)
{
for (int destinationVertex = 1; destinationVertex <= numberOfNodes; destinationVertex++)
{
this.adjacencyMatrix[sourceVertex][destinationVertex] = adjacencyMatrix[sourceVertex][destinationVertex];
}
}
}
public int degree(int vertex)
{
int degree = 0;
for (int destinationvertex = 1; destinationvertex <= numberOfNodes; destinationvertex++)
{
if (adjacencyMatrix[vertex][destinationvertex] == 1
|| adjacencyMatrix[destinationvertex][vertex] == 1)
{
degree++;
}
}
return degree;
}
public int countOddDegreeVertex()
{
int count = 0;
for (int node = 1; node <= numberOfNodes; node++)
{
if ((degree(node) % 2) != 0)
{
count++;
}
}
return count;
}
public static void main(String... arg)
{
int number_of_nodes;
Scanner scanner = null;
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_of_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
adjacency_matrix[i][j] = scanner.nextInt();
}
}
DirectedEulerPath path = new DirectedEulerPath(number_of_nodes,
adjacency_matrix);
int count = path.countOddDegreeVertex();
if (count == 0)
{
System.out
.println("As the graph has no odd degree vertex, there is at least one Eulerian Circuit.");
}
else if (count == 2)
{
System.out
.println("As the graph as two vertices with odd degree, there is no Eulerian Circuit but at least one Eulerian Path.");
}
else
{
System.out
.println("As the graph has more than two vertices with odd degree, there is no Eulerian Circuit or Eulerian Path.");
}
}
catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
Output:
$ javac DirectedEulerPath.java $ java DirectedEulerPath Enter the number of nodes in the graph 4 Enter the adjacency matrix 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 As the graph as two vertices with odd degree, there is no Eulerian Circuit but at least one Eulerian Path.
Related posts:
New Features in Java 11
Jackson vs Gson
Java 8 Predicate Chain
Hướng dẫn sử dụng String Format trong Java
Jackson – Unmarshall to Collection/Array
Sử dụng CyclicBarrier trong Java
Introduction to Spring MVC HandlerInterceptor
Java Program to Create a Random Linear Extension for a DAG
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Implement Find all Cross Edges in a Graph
Merging Two Maps with Java 8
Java – InputStream to Reader
String Initialization in Java
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Wiring in Spring: @Autowired, @Resource and @Inject
How to Delay Code Execution in Java
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Concatenating Strings In Java
Generic Constructors in Java
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Java Program to Implement Fermat Factorization Algorithm
Introduction to Using Thymeleaf in Spring
Java Program to Implement K Way Merge Algorithm
Guide to ThreadLocalRandom in Java
Hướng dẫn Java Design Pattern – Visitor
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Guide to java.util.concurrent.BlockingQueue
Date Time trong Java 8
Convert Time to Milliseconds in Java
Chuyển đổi Array sang ArrayList và ngược lại
Inject Parameters into JUnit Jupiter Unit Tests