How to implement graph topological sorting algorithm using java
How to use Java to implement the topological sorting algorithm of graphs
Introduction:
Graph is a very common data structure and has a wide range of applications in the field of computer science . The topological sorting algorithm is a classic algorithm in graph theory that can sort a directed acyclic graph (DAG) to determine the dependencies between nodes in the graph. This article will introduce how to use the Java programming language to implement the topological sorting algorithm of graphs, with specific Java code examples.
1. Define the data structure of the graph
Before implementing the topological sorting algorithm, we first need to define the data structure of the graph. To simplify the problem, we can use an adjacency list to represent the graph.
import java.util.*; class Graph { private int V; private LinkedList<Integer> adj[]; Graph(int v) { V = v; adj = new LinkedList[v]; for (int i=0; i<v; ++i) adj[i] = new LinkedList(); } void addEdge(int v, int w) { adj[v].add(w); } // 其他图操作方法... }
In the above code, we define a Graph
class, which contains an integer V representing the number of vertices in the graph, and an adjacency listadj[]
, used to store the adjacent vertices of each vertex.
2. Implement the topological sorting algorithm
The basic idea of the topological sorting algorithm is to continuously delete vertices with an in-degree of 0 in the graph until all vertices in the graph are deleted. The following is a code example that uses Java to implement the topological sorting algorithm:
class TopologicalSorting { private Graph graph; private int V; private LinkedList<Integer> resultList; TopologicalSorting(Graph g) { graph = g; V = g.V; resultList = new LinkedList<>(); } void topologicalSortUtil(int v, boolean visited[], Stack<Integer> stack) { visited[v] = true; Iterator<Integer> it = graph.adj[v].iterator(); while (it.hasNext()) { int i = it.next(); if (!visited[i]) topologicalSortUtil(i, visited, stack); } stack.push(v); } void topologicalSort() { Stack<Integer> stack = new Stack<>(); boolean visited[] = new boolean[V]; for (int i = 0; i < V; i++) visited[i] = false; for (int i = 0; i < V; i++) if (visited[i] == false) topologicalSortUtil(i, visited, stack); while (stack.empty() == false) resultList.add(stack.pop()); } // 输出结果 void printResult() { System.out.println("拓扑排序结果:"); for (int i : resultList) System.out.print(i + " "); System.out.println(); } }
In the above code, the TopologicalSorting
class is the class used for topological sorting. Among them, the topologicalSortUtil
method is a recursive method used to implement specific sorting logic. The topologicalSort
method is the entry method of topological sorting, which uses recursive method to sort all vertices one by one. The final printResult
method is used to output the sorted results.
3. Example
The following is an example of using the topological sorting algorithm:
public class Main { public static void main(String args[]) { Graph graph = new Graph(6); graph.addEdge(5, 2); graph.addEdge(5, 0); graph.addEdge(4, 0); graph.addEdge(4, 1); graph.addEdge(2, 3); graph.addEdge(3, 1); TopologicalSorting ts = new TopologicalSorting(graph); ts.topologicalSort(); ts.printResult(); } }
The code creates a directed graph and adds some edges. Then perform topological sorting and output the results through the TopologicalSorting
class.
Conclusion:
This article introduces how to use Java language to implement the topological sorting algorithm of graphs, and gives specific code examples. Topological sorting algorithm is a classic algorithm to solve the problem of sorting vertex dependencies in graphs, and it is of great significance in practical applications. Through the introduction of this article, I hope to help readers understand and master this algorithm.
The above is the detailed content of How to implement graph topological sorting algorithm using java. For more information, please follow other related articles on the PHP Chinese website!

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

SublimeText3 Linux new version
SublimeText3 Linux latest version

Atom editor mac version download
The most popular open source editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft