Javaを使用してフロイドのアルゴリズムを実装する方法
Java を使用してフロイドのアルゴリズムを実装する方法
フロイドのアルゴリズムは、任意の 2 つの頂点間の最短経路を見つけるために使用されるアルゴリズムです。プログラミングでは、最短経路の値を継続的に更新して最適な解を見つけます。この記事では、Java プログラミング言語を使用してフロイドのアルゴリズムを実装する方法を紹介し、具体的なコード例を示します。
- アルゴリズム原理
フロイドのアルゴリズムの基本的な考え方は、2 次元行列を定義することで任意の 2 つの頂点間の最短経路長を保存し、その値を継続的に更新することです。最終的な最短経路までの行列。アルゴリズムの手順は次のとおりです。
- 2 次元配列 d[][] を定義します。ここで、di は頂点 i と頂点 j の間の最短パス長を表します。最初は、di=infinity (2 つの頂点間にパスがないことを意味します) です。
- グラフ内の各エッジ (i, j) について、di の値をエッジの重みに更新します。
- 各頂点 k について、グラフ内のすべての頂点 i と頂点 j を走査します。di > di dk の場合、di の値を di dk に更新します。
- すべての頂点間の最短パス長が更新されるまで、上記の手順を繰り返します。
- コードの実装
Java プログラミング言語を使用して Floyd アルゴリズムを実装するコードは次のとおりです:
public class FloydAlgorithm { public static void floyd(int[][] graph) { int n = graph.length; // 初始化最短路径矩阵 int[][] dist = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { dist[i][j] = graph[i][j]; } } // 更新最短路径矩阵 for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (dist[i][k] != Integer.MAX_VALUE && dist[k][j] != Integer.MAX_VALUE && dist[i][k] + dist[k][j] < dist[i][j]) { dist[i][j] = dist[i][k] + dist[k][j]; } } } } // 输出最短路径矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.print(dist[i][j] + " "); } System.out.println(); } } public static void main(String[] args) { int[][] graph = { {0, 5, Integer.MAX_VALUE, 10}, {Integer.MAX_VALUE, 0, 3, Integer.MAX_VALUE}, {Integer.MAX_VALUE, Integer.MAX_VALUE, 0, 1}, {Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, 0} }; floyd(graph); } }
上記のコードでは、次のように定義します。 FloydAlgorithm クラスの floyd メソッドは、Floyd アルゴリズムを実装するために使用されます。 main メソッドでは、サンプル グラフの隣接行列グラフを定義し、最短パス行列を解くために floyd メソッドを呼び出します。
- 概要
この記事では、Java プログラミング言語を使用して Floyd アルゴリズムを実装する方法を紹介し、具体的なコード例を示します。フロイドのアルゴリズムを使用すると、任意の 2 つの頂点間の最短経路長を迅速かつ効率的に解決でき、実際的な問題を解決するための強力なツールが得られます。
以上がJavaを使用してフロイドのアルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

adeadlockinjavaoccurswhentwoorthoreThreadsareblockededforever、それぞれの方向に、通常はdueTococularwaitcausedistentlockdoringを使用します

string.join()(java8)を使用することは、ストリングアレイを接続するための最も簡単な推奨方法であり、セパレーターを直接指定するだけです。 2。Javaの古いバージョンの場合、またはより多くのコントロールが必要な場合、StringBuilderを使用して手動でトラバースしてスプライスできます。 3。StringJoinerは、接頭辞や接尾辞などのより柔軟な形式を必要とするシナリオに適しています。 4。array.stream()とcollectors.jaining()を組み合わせて、結合する前に配列のフィルタリングまたは変換に適しています。要約すると、Java8以降を使用する場合、String.Join()メソッドを望む必要があります。これは簡潔で読みやすいですが、複雑なロジックには推奨されます。

importjava.ioandjava.net.socketfori/oandsocketCommunication.2.CreateAsocketObjectToConnectTotheServerusingHostNameandport.3.USEPRINTWRITERTOSENDDATAVIAOUTSTREAMANDBUFFEREDEDEDEDEDEDEREDEREDERTOREADEREADSERVERRESPONSESSTREAM.

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

.equals()メソッドを使用して文字列コンテンツを比較します。これは、==はコンテンツではなくオブジェクト参照のみを比較するためです。 1。.equals()を使用して、文字列値を均等に比較します。 2。.equalsignorecase()を使用して、ケースを無視して比較します。 3. .compareto()を使用して、辞書の順序で文字列を比較し、0、負、または正の数を返します。 4。.compareToignOreCase()を使用して、ケースを無視して比較します。 5。objects.equals()またはセーフコールメソッドを使用して、ヌル文字列を処理して、ヌルポインターの例外を回避します。要するに、オブジェクトが位相にあるかどうかを確認するために明示的に必要な場合を除き、文字列コンテンツの比較に==を使用しないでください。

@ServerEndPointを使用してパスを定義するWebSocketサーバーエンドポイントを作成し、 @Onopen、 @Onmessage、 @Onclose、 @Onerrorを介して接続、メッセージ受信、閉鎖、エラーを処理します。 2. Javax.Websocket-API依存関係が展開中に導入され、コンテナによって自動的に登録されることを確認してください。 3. Javaクライアントは、ContainerProviderを介してWebSocketContainerを取得し、ConnectToServerを呼び出してサーバーに接続し、@ClientEndPoint Annotationクラスを使用してメッセージを受信します。 4。セッションGetBasicreを使用します

この記事では、非UTF-8要求エンコーディングを処理するためのスプリングブートアプリケーションのメカニズムと一般的な誤解について説明します。コアは、HTTPコンテンツタイプのヘッダーのcharsetパラメーターの重要性と、スプリングブートのデフォルトの文字セット処理フローを理解することにあります。誤ったテスト方法によって引き起こされる文字化けコードを分析することにより、この記事は、異なるエンコーディングのリクエストを正しくシミュレートしてテストする方法を読者に指導し、クライアントがエンコードを正しく宣言する前提で互換性を達成するために複雑な構成を必要としないことを説明します。
