Maison Java javaDidacticiel Comment implémenter un algorithme de recherche en largeur en utilisant Java

Comment implémenter un algorithme de recherche en largeur en utilisant Java

Sep 19, 2023 pm 06:04 PM
Programmation Java Algorithme de recherche en largeur (bfs) Implémenter la recherche en largeur

Comment implémenter un algorithme de recherche en largeur en utilisant Java

Comment utiliser Java pour implémenter un algorithme de recherche en largeur d'abord

L'algorithme de recherche en largeur d'abord (Breadth-First Search, BFS) est un algorithme de recherche couramment utilisé dans la théorie des graphes, qui peut trouver le chemin le plus court entre deux nœuds dans le graphique. BFS est largement utilisé dans de nombreuses applications, telles que la recherche du chemin le plus court dans un labyrinthe, les robots d'exploration Web, etc.

Cet article expliquera comment utiliser le langage Java pour implémenter l'algorithme BFS et joindra des exemples de code spécifiques.

Tout d'abord, nous devons définir une classe pour stocker les nœuds du graphique. Cette classe contient la valeur du nœud et sa relation avec les autres nœuds. L'exemple de code est le suivant :

class Node {
    int value;
    boolean visited;
    List<Node> neighbors;

    public Node(int value) {
        this.value = value;
        this.visited = false;
        this.neighbors = new ArrayList<>();
    }

    public void addNeighbor(Node neighbor) {
        neighbors.add(neighbor);
    }
}

Ensuite, nous définissons une fonction pour implémenter l'algorithme BFS. Cette fonction accepte un nœud de départ et un nœud cible comme paramètres et renvoie le chemin le plus court du nœud de départ au nœud cible. L'exemple de code est le suivant :

public List<Node> bfs(Node start, Node target) {
    Queue<Node> queue = new LinkedList<>();
    queue.add(start);

    while (!queue.isEmpty()) {
        Node current = queue.remove();
        current.visited = true;

        if (current == target) {
            // 找到目标节点,构建最短路径并返回
            return buildPath(target);
        }

        for (Node neighbor : current.neighbors) {
            if (!neighbor.visited) {
                queue.add(neighbor);
                neighbor.visited = true;
            }
        }
    }

    // 未找到目标节点,返回空列表
    return new ArrayList<>();
}

private List<Node> buildPath(Node target) {
    List<Node> path = new ArrayList<>();
    Node current = target;

    while (current != null) {
        path.add(0, current);
        current = current.previous;
    }

    return path;
}

Dans le code ci-dessus, nous utilisons une file d'attente pour traiter chaque nœud dans l'ordre. Ajoutez d’abord le nœud de départ à la file d’attente, puis entrez dans la boucle. À chaque itération de boucle, nous prenons le premier nœud de la file d'attente et le définissons sur l'état visité. Vérifiez ensuite si le nœud est le nœud cible, si tel est le cas, créez le chemin et revenez. Sinon, tous les nœuds voisins du nœud sont traversés et les nœuds voisins non visités sont ajoutés à la file d'attente. La boucle continue jusqu'à ce que la file d'attente soit vide.

Enfin, nous appelons le buildPath函数来构建最短路径。buildPath函数从目标节点开始,沿着节点的previouspointeur pour tracer vers l'avant et ajouter chaque nœud au chemin. Enfin, le chemin construit est renvoyé.

Les exemples d'utilisation sont les suivants :

Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);

node1.addNeighbor(node2);
node1.addNeighbor(node3);
node2.addNeighbor(node4);
node3.addNeighbor(node4);
node4.addNeighbor(node5);

List<Node> shortestPath = bfs(node1, node5);

// 输出最短路径
for (Node node : shortestPath) {
    System.out.print(node.value + " -> ");
}

Le code ci-dessus construit un graphe orienté simple et utilise l'algorithme BFS pour trouver le chemin le plus court du nœud 1 au nœud 5. Enfin, affichez le chemin le plus court vers la console.

Grâce aux exemples ci-dessus, nous avons appris à utiliser le langage Java pour implémenter l'algorithme de recherche en largeur et avons fourni des exemples de code spécifiques. J'espère que cet article pourra vous aider à comprendre le processus de mise en œuvre de l'algorithme BFS.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1540
276
Comment écrire un système simple de gestion des présences des étudiants en utilisant Java ? Comment écrire un système simple de gestion des présences des étudiants en utilisant Java ? Nov 02, 2023 pm 03:17 PM

Comment écrire un système simple de gestion des présences des étudiants en utilisant Java ? Avec le développement continu de la technologie, les systèmes de gestion scolaire sont également constamment mis à jour et améliorés. Le système de gestion de l'assiduité des élèves en constitue un élément important. Il peut aider l'école à suivre l'assiduité des élèves et à fournir des analyses de données et des rapports. Cet article explique comment écrire un système simple de gestion des présences des étudiants à l'aide de Java. 1. Analyse des exigences Avant de commencer à écrire, nous devons déterminer les fonctions et les exigences du système. Les fonctions de base comprennent l'enregistrement et la gestion des informations sur les étudiants, l'enregistrement des données de fréquentation des étudiants et

Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Nov 03, 2023 pm 02:57 PM

Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Student Performance Report Generator est un outil qui aide les enseignants ou les éducateurs à générer rapidement des rapports sur les performances des élèves. Cet article explique comment utiliser Java pour rédiger un simple générateur de rapports sur les performances des étudiants. Tout d’abord, nous devons définir l’objet étudiant et l’objet note étudiant. L'objet étudiant contient des informations de base telles que le nom et le numéro de l'étudiant, tandis que l'objet score de l'étudiant contient des informations telles que les résultats des matières et la note moyenne de l'étudiant. Voici la définition d'un objet étudiant simple : public

Programme Java : mettre en majuscule la première lettre de chaque mot dans une chaîne Programme Java : mettre en majuscule la première lettre de chaque mot dans une chaîne Aug 20, 2023 pm 03:45 PM

Une chaîne est une classe de package 'java.lang' qui stocke une série de caractères. Ces caractères sont en fait des objets de type String. Nous devons fermer la valeur de la chaîne entre guillemets doubles. Généralement, nous pouvons représenter les caractères en minuscules et en majuscules en Java. Et il est également possible de convertir

Comment implémenter un algorithme de recherche en largeur en utilisant Java Comment implémenter un algorithme de recherche en largeur en utilisant Java Sep 19, 2023 pm 06:04 PM

Comment utiliser Java pour implémenter l'algorithme de recherche en largeur d'abord L'algorithme de recherche en largeur d'abord (Breadth-FirstSearch, BFS) est un algorithme de recherche couramment utilisé dans la théorie des graphes, qui peut trouver le chemin le plus court entre deux nœuds du graphique. BFS est largement utilisé dans de nombreuses applications, telles que la recherche du chemin le plus court dans un labyrinthe, les robots d'exploration Web, etc. Cet article expliquera comment utiliser le langage Java pour implémenter l'algorithme BFS et joindra des exemples de code spécifiques. Tout d’abord, nous devons définir une classe pour stocker les nœuds du graphique. Cette classe contient des nœuds.

Comment utiliser Java pour implémenter la fonction de statistiques d'inventaire du système de gestion d'entrepôt Comment utiliser Java pour implémenter la fonction de statistiques d'inventaire du système de gestion d'entrepôt Sep 24, 2023 pm 01:13 PM

Comment utiliser Java pour implémenter la fonction de statistiques d'inventaire du système de gestion d'entrepôt. Avec le développement du commerce électronique et l'importance croissante de la gestion d'entrepôt, la fonction de statistiques d'inventaire est devenue un élément indispensable du système de gestion d'entrepôt. Les systèmes de gestion d'entrepôt écrits en langage Java peuvent mettre en œuvre des fonctions de statistiques d'inventaire grâce à un code concis et efficace, aidant les entreprises à mieux gérer le stockage en entrepôt et à améliorer l'efficacité opérationnelle. 1. Introduction au contexte Le système de gestion d'entrepôt fait référence à une méthode de gestion qui utilise la technologie informatique pour effectuer la gestion des données, le traitement de l'information et l'analyse décisionnelle sur l'entrepôt d'une entreprise. Les statistiques d'inventaire sont

Utiliser Java pour écrire les fonctions d'aperçu avant impression et de configuration d'impression des données de formulaire Utiliser Java pour écrire les fonctions d'aperçu avant impression et de configuration d'impression des données de formulaire Aug 08, 2023 pm 01:52 PM

Utilisez Java pour écrire les fonctions d'aperçu avant impression et de configuration d'impression des données de formulaire Avec le développement des technologies de l'information, de plus en plus de travaux passent des documents papier aux documents électroniques. Cependant, dans certains scénarios d’application spécifiques, il est toujours nécessaire d’imprimer des documents électroniques sur papier. Afin d'améliorer l'expérience utilisateur, nous pouvons écrire du code en Java pour implémenter les fonctions d'aperçu avant impression et de configuration d'impression des données de formulaire. Cet article expliquera comment utiliser Java pour implémenter une telle fonction et donnera des exemples de code correspondants. La fonction d'aperçu avant impression peut être implémentée via Java.

Outils courants de surveillance et de réglage des performances dans le développement Java Outils courants de surveillance et de réglage des performances dans le développement Java Oct 10, 2023 pm 01:49 PM

Les outils courants de surveillance et de réglage des performances dans le développement Java nécessitent des exemples de code spécifiques Introduction : Avec le développement continu de la technologie Internet, Java, en tant que langage de programmation stable et efficace, est largement utilisé dans le processus de développement. Cependant, en raison de la nature multiplateforme de Java et de la complexité de l'environnement d'exécution, les problèmes de performances sont devenus un facteur incontournable dans le développement. Afin de garantir la haute disponibilité et la réponse rapide des applications Java, les développeurs doivent surveiller et ajuster les performances. Cet article présentera quelques fonctionnalités courantes de surveillance et de réglage des performances Java.

ChatGPT Java : Comment créer un système intelligent de recommandation musicale ChatGPT Java : Comment créer un système intelligent de recommandation musicale Oct 27, 2023 pm 01:55 PM

ChatGPTJava : Comment créer un système intelligent de recommandation musicale, des exemples de code spécifiques sont nécessaires Introduction : Avec le développement rapide d'Internet, la musique est devenue un élément essentiel de la vie quotidienne des gens. Alors que les plateformes musicales continuent d’émerger, les utilisateurs sont souvent confrontés à un problème commun : comment trouver la musique qui correspond à leurs goûts ? Afin de résoudre ce problème, le système intelligent de recommandation musicale a vu le jour. Cet article explique comment utiliser ChatGPTJava pour créer un système intelligent de recommandation musicale et fournit des exemples de code spécifiques. Non.

See all articles