


Comment implémenter un algorithme de tri topologique graphique à l'aide de Java
Comment utiliser Java pour implémenter l'algorithme de tri topologique des graphiques
Introduction :
Le graphique est une structure de données très courante et a un large éventail d'applications dans le domaine de l'informatique. L'algorithme de tri topologique est un algorithme classique de la théorie des graphes qui permet de trier un graphe acyclique dirigé (DAG) pour déterminer les dépendances entre les nœuds du graphe. Cet article présentera comment utiliser le langage de programmation Java pour implémenter l'algorithme de tri topologique des graphiques, avec des exemples de code Java spécifiques.
1. Définir la structure des données du graphe
Avant d'implémenter l'algorithme de tri topologique, nous devons d'abord définir la structure des données du graphe. Pour simplifier le problème, nous pouvons utiliser une liste de contiguïté pour représenter le graphique.
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); } // 其他图操作方法... }
Dans le code ci-dessus, nous définissons une classe Graph
, qui contient un entier V représentant le nombre de sommets dans le graphe, et une liste de contiguïté adj[]
, en utilisant Pour stocker les sommets adjacents de chaque sommet. Graph
类,它包含了一个整数V表示图中的顶点数,以及一个邻接表adj[]
,用来存储各个顶点的邻接顶点。
二、实现拓扑排序算法
拓扑排序算法的基本思想是通过不断删除图中入度为0的顶点,直到图中所有顶点都被删除。下面是使用Java实现拓扑排序算法的代码示例:
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(); } }
在上述代码中,TopologicalSorting
类是用来进行拓扑排序的类。其中,topologicalSortUtil
方法是一个递归方法,用来实现具体的排序逻辑。topologicalSort
方法是拓扑排序的入口方法,它利用递归方法对所有顶点进行逐个排序。最后的printResult
方法用来输出排序结果。
三、示例
以下是一个使用拓扑排序算法的示例:
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(); } }
代码中创建了一个有向图,并添加了一些边。然后通过TopologicalSorting
L'idée de base de l'algorithme de tri topologique est de supprimer continuellement les sommets avec un degré entrant de 0 dans le graphique jusqu'à ce que tous les sommets du graphique soient supprimés. Voici un exemple de code qui utilise Java pour implémenter l'algorithme de tri topologique :
rrreee
TopologicalSorting
est la classe utilisée pour le tri topologique. Parmi elles, la méthode topologicalSortUtil
est une méthode récursive utilisée pour implémenter une logique de tri spécifique. La méthode topologicalSort
est la méthode d'entrée du tri topologique. Elle utilise une méthode récursive pour trier tous les sommets un par un. La méthode finale printResult
est utilisée pour afficher les résultats triés. 🎜🎜3. Exemple🎜Ce qui suit est un exemple d'utilisation de l'algorithme de tri topologique : 🎜rrreee🎜Le code crée un graphe orienté et ajoute des arêtes. Effectuez ensuite un tri topologique et affichez les résultats via la classe TopologicalSorting
. 🎜🎜Conclusion : 🎜Cet article présente comment utiliser le langage Java pour implémenter l'algorithme de tri topologique des graphiques et donne des exemples de code spécifiques. L'algorithme de tri topologique est un algorithme classique pour résoudre le problème du tri des dépendances des sommets dans les graphiques, et il revêt une grande importance dans les applications pratiques. Grâce à l'introduction de cet article, j'espère aider les lecteurs à comprendre et à maîtriser cet algorithme. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4
