This is a java program to create a random linear extension of DAG. Linear extension of DAG is nothing but topological sorting in simple terms.
Here is the source code of the Java Program to Create a Random Linear Extension for a DAG. 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;
import java.util.Stack;
public class DAGLinearExtension
{
private Stack<Integer> stack;
public DAGLinearExtension()
{
stack = new Stack<Integer>();
}
public int[] topological(int adjacency_matrix[][], int source)
throws NullPointerException
{
int number_of_nodes = adjacency_matrix.length - 1;
int[] topological_sort = new int[number_of_nodes + 1];
int pos = 1;
int j;
int visited[] = new int[number_of_nodes + 1];
int element = source;
int i = source;
visited = 1;
stack.push(source);
while (!stack.isEmpty())
{
element = stack.peek();
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 1)
{
if (stack.contains(i))
{
System.out.println("TOPOLOGICAL SORT NOT POSSIBLE");
return null;
}
}
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
stack.push(i);
visited[i] = 1;
element = i;
i = 1;
continue;
}
i++;
}
j = stack.pop();
topological_sort[pos++] = j;
i = ++j;
}
return topological_sort;
}
public static void main(String... arg)
{
int number_no_nodes, source;
Scanner scanner = null;
int topological_sort[] = null;
System.out
.println("Linear extension of a DAG is its topological reperesentation.");
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_no_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_no_nodes; i++)
for (int j = 1; j <= number_no_nodes; j++)
adjacency_matrix[i][j] = scanner.nextInt();
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
System.out
.println("The Topological sort for the graph is given by ");
DAGLinearExtension toposort = new DAGLinearExtension();
topological_sort = toposort.topological(adjacency_matrix, source);
for (int i = topological_sort.length - 1; i > 0; i--)
{
if (topological_sort[i] != 0)
System.out.print(topological_sort[i] + "\t");
}
}
catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
catch (NullPointerException nullPointer)
{
}
scanner.close();
}
}
Output:
$ javac DAGLinearExtension.java $ java DAGLinearExtension Linear extension of a DAG is its topological reperesentation. Enter the number of nodes in the graph 6 Enter the adjacency matrix 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 Enter the source for the graph 1 The Topological sort for the graph is given by 1 2 4 5 6 3
Related posts:
File Upload with Spring MVC
Error Handling for REST with Spring
Array to String Conversions
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Implement Suffix Array
Hướng dẫn Java Design Pattern – Adapter
Java Collections Interview Questions
New Features in Java 9
Guide to the Java Clock Class
Java Program to Implement LinkedBlockingQueue API
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Java Program to Implement Find all Cross Edges in a Graph
Query Entities by Dates and Times with Spring Data JPA
Spring Boot - Logging
Creating a Generic Array in Java
Posting with HttpClient
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Check whether Graph is a Bipartite using DFS
Getting Started with Stream Processing with Spring Cloud Data Flow
Java Program to Implement Knight’s Tour Problem
Functional Interface trong Java 8
Spring Cloud – Bootstrapping
Java Program to Implement Binomial Heap
Spring WebClient Requests with Parameters
Get and Post Lists of Objects with RestTemplate
Introduction to the Java ArrayDeque
Java Program to Find the Shortest Path Between Two Vertices Using Dijkstra’s Algorithm
Java Program to Implement Ternary Search Tree
Java List UnsupportedOperationException
HttpClient 4 Cookbook
Java Program to Implement Splay Tree