ダイクストラアルゴリズムが何を表しているのか、あなたは誤解していると思います。
グラフ内の特定のソース頂点 (ノード) について、アルゴリズムは、その頂点と他のすべての頂点との間の最小コストのパス (つまり、最短パス) を見つけます。
必要なのは (私が思うに) 座標に基づく 2 点間の最小距離です。
2 点間の距離は、基本的な数学を使用して数えることができます。
Point p = new Point(4, 5);
Point r = new Point(10, 2);
double distance = Math.Sqrt(Math.Pow(p.X - r.X, 2) + Math.Pow(p.Y - r.Y, 2));
この知識を使用すると、次のような 2 つの関数で問題を解決できます。
p
との間の距離を返しますr
:
static double distance(Point p, Point r)
{
return Math.Sqrt(Math.Pow(p.X - r.X, 2) + Math.Pow(p.Y - r.Y, 2));
}
リストのfromIndex
th 要素に最も近いポイントのインデックスを返します。points
static int closestPoint(List<Point> points, int fromIndex)
{
Point start = points[fromIndex];
int resultIndex = 0;
for (int i = 1; i < points.Count; i++)
{
if (fromIndex == i)
continue;
Point current = points[i];
if (distance(start, current) < distance(start, points[resultIndex]))
resultIndex = i;
}
return resultIndex;
}
私があなたを誤解していたら、本当にごめんなさい!