Javaでのグラフ実装例
2185 ワード
この記事では、Javaでのグラフ実装例をゼロから表示します.Javaでグラフデータ構造を作成し、使用する方法を学びます.実際の演習では、多くのインタビュープロセスで見てきました.
この例は、エキサイティングで挑戦的な問題を解決することです.まず、Javaで問題を解決し、解決する方法を紹介します.
配達サービス会社は、顧客注文を届けるために配達トラックのためにルートを計画するシステムをつくります.プランナーは、グリッドとして抽象化されている各注文の配信領域を作成します.課題は、トラックの順序を提供するためのパスを見つけるためにアルゴリズムを書くことです.
配信エリアは、次の整数の2次元グリッドとして表されます.は、アクセス可能領域 を表すは、非アクセス可能エリア を表すは、注文先 を表します
この演習は、正しいデータ構造を使用する方法をはるかに簡単に何かに複雑な問題を変えることができるJavaの優れた例です.グラフの実装を使用すると、問題がより簡単になります.
いくつかのものを開始する前に考慮する必要があります.トラックはグリッドを離れることができず、アクセス可能な領域を介して注文先に到達する必要があります.そして、トラックは一度に一つのセル、下、左、または右に移動することができます.
入力と対応する出力の異なる場合の例をいくつか示します.
この問題に対する最良の解決策は、Javaグラフ実装を使用しています.一般的に、グラフは、グリッドをナビゲートする必要があるすべての状況のための適切なソリューションです.
この解決策は、各マトリックスセルを表す
この例は、エキサイティングで挑戦的な問題を解決することです.まず、Javaで問題を解決し、解決する方法を紹介します.
問題
配達サービス会社は、顧客注文を届けるために配達トラックのためにルートを計画するシステムをつくります.プランナーは、グリッドとして抽象化されている各注文の配信領域を作成します.課題は、トラックの順序を提供するためのパスを見つけるためにアルゴリズムを書くことです.
配信エリアは、次の整数の2次元グリッドとして表されます.
この演習は、正しいデータ構造を使用する方法をはるかに簡単に何かに複雑な問題を変えることができるJavaの優れた例です.グラフの実装を使用すると、問題がより簡単になります.
いくつかのものを開始する前に考慮する必要があります.トラックはグリッドを離れることができず、アクセス可能な領域を介して注文先に到達する必要があります.そして、トラックは一度に一つのセル、下、左、または右に移動することができます.
入力と対応する出力の異なる場合の例をいくつか示します.
Example 1
grid = [[1,1,0],[0,1,2][0,1,1]]
Output: [0,0][0,1][1,1][2,1][2,2][1,2]
Example 2
grid = [[1,1,1,1],[0,1,0,1],[0,1,0,1],[0,1,1,0],[0,1,2,1]]
Output: [0,0][0,1][1,1][2,1][3,1][3,2]
解決策
この問題に対する最良の解決策は、Javaグラフ実装を使用しています.一般的に、グラフは、グリッドをナビゲートする必要があるすべての状況のための適切なソリューションです.
この解決策は、各マトリックスセルを表す
Cell
クラスと、トラックが移動する領域を表すDeliveryArea
という2つのクラスを持つことになる.下記のスケルトン、ちょうどクラスとメソッド署名を見てください.次のセクションで実装を完了します.public class Cell {
public int row;
public int col;
public Cell(int row, int col){
this.row = row;
this.col = col;
}
public String hashKey(){
return String.valueOf(this.row)+String.valueOf(this.col);
}
}
import java.util.List;
import java.util.Map;
public class DeliveryArea {
private final static int ACCESSIBLE_CELL = 1;
private final static int NON_ACCESSIBLE_CELL = 0;
private final static int DESTINATION = 2;
public int[][] matrix;
public DeliveryArea(int[][] matrix){
this.matrix = matrix;
}
private Map<String, List<Cell>> buildGraph(){
return null;
}
public List<Cell> findRoute(){
return null;
}
}
Check out the full solutionReference
この問題について(Javaでのグラフ実装例), 我々は、より多くの情報をここで見つけました https://dev.to/hellocodeclub/graph-implementation-example-in-java-1mhhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol