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:
Lập trình hướng đối tượng (OOPs) trong java
Posting with HttpClient
Tạo số và chuỗi ngẫu nhiên trong Java
Autoboxing và Unboxing trong Java
Java Program to Implement Bloom Filter
Documenting a Spring REST API Using OpenAPI 3.0
Guide To CompletableFuture
Kết hợp Java Reflection và Java Annotations
Converting a Stack Trace to a String in Java
Java Program to Implement Sorted Circularly Singly Linked List
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Guide to ThreadLocalRandom in Java
Spring MVC Tutorial
Java Program to Implement ConcurrentSkipListMap API
Quick Guide to java.lang.System
Java Program to Implement K Way Merge Algorithm
Java Program to Find a Good Feedback Edge Set in a Graph
A Guide to JPA with Spring
Adding Shutdown Hooks for JVM Applications
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Lớp Collections trong Java (Collections Utility Class)
Working with Network Interfaces in Java
Convert Hex to ASCII in Java
Java Program to Implement Iterative Deepening
Tính kế thừa (Inheritance) trong java
Lớp Properties trong java
Call Methods at Runtime Using Java Reflection
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Generate Random Numbers Using Probability Distribution Function
How to Get a Name of a Method Being Executed?