私は、パス探索の仕組みに関する基本的な知識を得るためのプログラムに取り組んでおり、Dijkstra's Algorithmを使って2D配列の2点間の最短距離ユーザが選択する。私は3つのメソッドを持つGraphクラスを使用しています.1つは読み取り、印刷、最短です。しかし、私が作ったプログラムのアルゴリズムをどうやって作るのか分かりません。どんな助けもありがとう!Dijkstraのアルゴリズム2つの頂点間の最短距離を求めるC++
プログラムはこれらの値を読み込み、最初の変数はsizeという変数に設定され、残りはdistanceという2次元配列に入力されます。
4
0 1.7 0.3 0
1.7 0 0.1 3.6
0.3 0.1 0 0
0 3.6 0 0
これは私のGraph.hファイルである:以下
class Graph
{
public:
void read(const char* filename);
void print(ostream& out);
float shortest(int v1, int v2);
private:
int size;
float max_edge_length;
float distance[MAX_VERTICES][MAX_VERTICES];
};
は、読み取りおよび印刷方法を作成する上で、私のスタートです。
void Graph::read(const char* filename){
int x, y;
ifstream myfile(filename);
if (myfile.good()){
myfile >> size;
for (y = 0; y < size; y++){
for (x = 0; x < size; x++){
myfile >> distance[x][y];
}
}
}
}
void Graph::print(ostream& out){
out << size << endl;
for (int y = 0; y < size; y++){
for (int x = 0; x < size; x++){
out << distance[x][y] << " ";
}
out << endl;
}
}
float Graph::shortest(int v1, int v2){
}
によって(フロート)メモリ
あなたの缶店のグラフの費用がかかりますです。効率的なテンプレート優先キューを実装できますか?既存の標準ライブラリ部品から1つを構築できますか?あなたが一から自分自身を構築しなければならなかったらどうですか?どうやってやるの? –
Dijkstraのアルゴリズム実装を提供するようお願いしていますか?これはちょっとした話題かもしれないし、たくさんのC++チュートリアル、ここに投稿する前に何の情報源をチェックして、これまで実装しようとしていることがありますか? – Zimano