Javaを使用して幅優先検索アルゴリズムを実装する方法
Java を使用して幅優先検索アルゴリズムを実装する方法
幅優先検索アルゴリズム (Breadth-First Search、BFS) は、一般的に使用される検索アルゴリズムです。グラフ理論では、グラフ内の 2 つのノード間の最短経路を見つけることができます。 BFS は、迷路内の最短経路の検索や Web クローラーなど、多くのアプリケーションで広く使用されています。
この記事では、Java 言語を使用して BFS アルゴリズムを実装する方法を紹介し、具体的なコード例を添付します。
まず、グラフ ノードを格納するためのクラスを定義する必要があります。このクラスには、ノードの値と他のノードとの関係が含まれます。サンプル コードは次のとおりです。
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); } }
次に、BFS アルゴリズムを実装する関数を定義します。この関数は、開始ノードとターゲット ノードをパラメータとして受け取り、開始ノードからターゲット ノードまでの最短パスを返します。サンプル コードは次のとおりです。
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; }
上記のコードでは、キューを使用して各ノードを順番に処理します。まず開始ノードをキューに追加してから、ループに入ります。各ループ反復で、キュー内の最初のノードを取得し、それを訪問済み状態に設定します。次に、ノードがターゲット ノードであるかどうかを確認し、ターゲット ノードである場合は、パスを構築して戻ります。そうでない場合、ノードのすべての隣接ノードが走査され、未訪問の隣接ノードがキューに追加されます。ループはキューが空になるまで継続します。
最後に、buildPath
関数を呼び出して最短パスを構築します。 buildPath
関数はターゲット ノードから開始し、ノードの previous
ポインタに沿ってトレースバックし、各ノードをパスに追加します。最後に、構築されたパスが返されます。
使用例は次のとおりです:
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 + " -> "); }
上記のコードは、単純な有向グラフを構築し、BFS アルゴリズムを使用してノード 1 からノード 5 までの最短パスを見つけます。最後に、最短パスをコンソールに出力します。
上記の例を通じて、Java 言語を使用して幅優先検索アルゴリズムを実装する方法を学び、具体的なコード例を示しました。この記事が BFS アルゴリズムの実装プロセスを理解するのに役立つことを願っています。
以上がJavaを使用して幅優先検索アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java を使用して簡単な生徒の成績レポート ジェネレーターを作成するにはどうすればよいですか? Student Performance Report Generator は、教師または教育者が生徒の成績レポートを迅速に作成するのに役立つツールです。この記事では、Java を使用して簡単な生徒の成績レポート ジェネレーターを作成する方法を紹介します。まず、学生オブジェクトと学生成績オブジェクトを定義する必要があります。学生オブジェクトには学生の名前や学生番号などの基本情報が含まれ、学生スコア オブジェクトには学生の科目のスコアや平均成績などの情報が含まれます。以下は、単純な Student オブジェクトの定義です。

Java を使用して簡単な学生出席管理システムを作成するにはどうすればよいですか?テクノロジーの継続的な発展に伴い、学校管理システムも常に更新され、アップグレードされています。生徒の出席管理システムはその重要な部分であり、学校が生徒の出席を追跡し、データ分析とレポートを提供するのに役立ちます。この記事ではJavaを使った簡単な学生出席管理システムの書き方を紹介します。 1. 要件分析 書き始める前に、システムの機能と要件を決定する必要があります。基本的な機能としては、学生情報の登録・管理、学生の出欠データの記録、

Java プログラミングを使用して Amap API の住所位置検索を実装する方法 はじめに: Amap は非常に人気のある地図サービスであり、さまざまなアプリケーションで広く使用されています。このうち、住所地付近の検索機能は、近くのPOI(Point of Interest、興味のある地点)を検索する機能を提供します。この記事では、Java プログラミングを使用して Amap API の住所位置検索機能を実装する方法を詳細に説明し、コード例を使用して、読者が関連テクノロジーを理解し習得できるようにします。 1.Amap開発申請

Astring は一連の文字を格納する 'java.lang' パッケージのクラスです。それらの文字は実際には String 型のオブジェクトです。文字列の値を二重引用符で囲む必要があります。一般に、Java では文字を小文字と大文字で表現できます。また、変換することもできます。

Java を使用して倉庫管理システムの在庫統計機能を実装する方法 電子商取引の発展と倉庫管理の重要性の増大に伴い、在庫統計機能は倉庫管理システムに不可欠な部分となっています。 Java 言語で書かれた倉庫管理システムは、簡潔で効率的なコードを通じて在庫統計機能を実装でき、企業が倉庫保管をより適切に管理し、業務効率を向上させるのに役立ちます。 1. 背景の紹介 倉庫管理システムとは、コンピューター技術を使用して企業の倉庫のデータ管理、情報処理、意思決定分析を実行する管理方法を指します。在庫統計は、

Java 開発における一般的なパフォーマンス監視およびチューニング ツールには、特定のコード サンプルが必要です。 はじめに: インターネット テクノロジの継続的な発展に伴い、Java は安定した効率的なプログラミング言語として開発プロセスで広く使用されています。ただし、Java のクロスプラットフォームの性質と実行環境の複雑さにより、パフォーマンスの問題は開発において無視できない要素となっています。 Java アプリケーションの高可用性と高速応答を確保するには、開発者はパフォーマンスを監視し、調整する必要があります。この記事では、一般的な Java パフォーマンスの監視とチューニングをいくつか紹介します。

ChatGPTJava: インテリジェントな音楽推奨システムを構築する方法、具体的なコード例が必要です はじめに: インターネットの急速な発展に伴い、音楽は人々の日常生活に欠かせないものになりました。音楽プラットフォームが出現し続けるにつれて、ユーザーはしばしば共通の問題に直面します。それは、自分の好みに合った音楽をどうやって見つけるかということです。この問題を解決するために、インテリジェント音楽推薦システムが登場しました。この記事では、ChatGPTJava を使用してインテリジェントな音楽推奨システムを構築する方法を紹介し、具体的なコード例を示します。いいえ。

Java を使用して幅優先検索アルゴリズムを実装する方法 幅優先検索アルゴリズム (Breadth-FirstSearch、BFS) は、グラフ理論で一般的に使用される検索アルゴリズムであり、グラフ内の 2 つのノード間の最短パスを見つけることができます。 BFS は、迷路内の最短経路の検索や Web クローラーなど、多くのアプリケーションで広く使用されています。この記事では、Java 言語を使用して BFS アルゴリズムを実装する方法を紹介し、具体的なコード例を添付します。まず、グラフ ノードを格納するクラスを定義する必要があります。このクラスにはノードが含まれます。
