次のように、交差点(ID安全名)と道路(交差点1交差点2の距離)を含むデータのファイルがあります。
INTERSECTIONS:
198 0.8 alvemon and 28th
199 0.6 alvemon and 29th
200 0.8 alvemon and 30th
STREETS:
1 2 0.6
2 3 0.1
3 4 0.9
交差点は頂点であり、通りは端です。これが私のヘッダーです:頂点ヘッダー:
#ifndef VERTEX_H
#define VERTEX_H
#include<list>
#include<string>
#include "global.h"
struct Vertex_{
int xsect;
double danger;
std::string xstreets;
std::list<Edge> EdgeList;
/*struct Vertex_ *next;
struct Vertex_ *prev;*/
};
#endif
エッジヘッダー:
#ifndef EDGE_H
#define EDGE_H
#include "global.h"
#include "vertex.h"
struct Edge_{
Vertex *adjvertex;
double distance;
/*struct edge *next;
struct edge *prev;*/
};
#endif
リストからグラフを作成しています。私はすでにそれをすべて設定し、通り/交差点のグラフ(または地図)を作成しました。以下の要件があるため、深さ優先探索を使用する必要があることはわかっていますが、実装方法がわかりません。誰かが深さ優先探索の例を教えてくれたら、それは素晴らしいことです。今、私の割り当ては私に次のことをする必要があります:
ジョギングパスの要件
safejoggerプログラムは、提供されたグラフを検索して、次の要件を満たすジョギングパスを見つける必要があります。パスは、ユーザー指定のstartingIntersectionで示される同じ交差点(つまり頂点)で開始および終了する必要があります。パスは交差点を再訪してはいけません。つまり、パス内に頂点が2回表示されないようにする必要があります。パスの合計距離は、ユーザーが指定した距離目標から1マイル以内である必要があります。
ジョギングパスの安全性
safejoggerプログラムは、ジョギングパスに関する2つの統計を計算する必要があります。平均パス安全性:ジョギングパス内のすべての交差点の平均安全性指数。最小経路安全性:ジョギング経路内のすべての交差点の最小安全指数。