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 Undirected Graph Contains a Eulerian Cycle. 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 UndirectedEulerianCircuit
{
private int[][] adjacencyMatrix;
private int numberOfNodes;
public UndirectedEulerianCircuit(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();
}
}
// make the graph undirected
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
if (adjacency_matrix[i][j] == 1
&& adjacency_matrix[j][i] == 0)
{
adjacency_matrix[j][i] = 1;
}
}
}
UndirectedEulerPath path = new UndirectedEulerPath(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 UndirectedEulerianCircuit.java $ java UndirectedEulerianCircuit Enter the number of nodes in the graph 6 Enter the adjacency matrix 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 As the graph has more than two vertices with odd degree, there is no Eulerian Circuit or Eulerian Path.
Related posts:
Java InputStream to Byte Array and ByteBuffer
Spring Security Registration – Resend Verification Email
Hướng dẫn sử dụng Lớp FilePermission trong java
An Intro to Spring Cloud Zookeeper
Java Program to Implement Horner Algorithm
Quick Guide on Loading Initial Data with Spring Boot
Spring Security Authentication Provider
Spring Boot - CORS Support
Java Program to Implement Levenshtein Distance Computing Algorithm
Guide to java.util.Formatter
Java Program to Check the Connectivity of Graph Using DFS
Creating Docker Images with Spring Boot
Hướng dẫn Java Design Pattern – Interpreter
Java Program to Implement Meldable Heap
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Spring MVC Tutorial
How to Use if/else Logic in Java 8 Streams
Java Program to Implement Kosaraju Algorithm
Inject Parameters into JUnit Jupiter Unit Tests
Java Program to Implement Expression Tree
HandlerAdapters in Spring MVC
OAuth2 Remember Me with Refresh Token
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Posting with HttpClient
Hướng dẫn Java Design Pattern – Null Object
Easy Ways to Write a Java InputStream to an OutputStream
Spring Data Reactive Repositories with MongoDB
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Java Program to Implement Self Balancing Binary Search Tree
Spring Data JPA and Null Parameters
Java Program to Implement Hash Tables Chaining with List Heads
The DAO with JPA and Spring