Мне нужно использовать (не реализовывать) версию алгоритма Dijkstras на основе массива. Задача состоит в том, чтобы с учетом набора отрезков (препятствий) и точек начала / конца я должен найти и нарисовать кратчайший путь от начала / концаЯ выполнил расчетную часть и т. д., но не знаю, как использовать dijkstras с моим кодом. Мой код выглядит следующим образом:
class Point
{
public:
int x;
int y;
Point()
{
}
void CopyPoint(Point p)
{
this->x=p.x;
this->y=p.y;
}
};
class NeighbourInfo
{
public:
Point x;
Point y;
double distance;
NeighbourInfo()
{
distance=0.0;
}
};
class LineSegment
{
public:
Point Point1;
Point Point2;
NeighbourInfo neighbours[100];
LineSegment()
{
}
void main()//in this I use my classes and some code to fill out the datastructure
{
int NoOfSegments=i;
for(int j=0;j<NoOfSegments;j++)
{
for(int k=0;k<NoOfSegments;k++)
{
if( SimpleIntersect(segments[j],segments[k]) )
{
segments[j].neighbours[k].distance=INFINITY;
segments[j].neighbours[k].x.CopyPoint(segments[k].Point1);
segments[j].neighbours[k].y.CopyPoint(segments[k].Point2);
cout<<"Intersect"<<endl;
cout<<segments[j].neighbours[k].distance<<endl;
}
else
{
segments[j].neighbours[k].distance=
EuclidianDistance(segments[j].Point1.x,segments[j].Point1.y,segments[k].Point2.x,segments[k ].Point2.y);
segments[j].neighbours[k].x.CopyPoint(segments[k].Point1);
segments[j].neighbours[k].y.CopyPoint(segments[k].Point2);
}
}
}
}
Теперь у меня есть расстояния от каждого сегмента до всех остальных сегментов, драмиспользуя эти данные (в соседней информации), я хочу использовать Dijkstras (ограничение) на основе массива, чтобы отследить кратчайший путь от начальной / конечной точек. Есть больше кода, но сократили проблему для удобства чтения
Пожалуйста, помогите !! Спасибо и плз нет .net lib / code, так как я использую только ядро C ++ .. Заранее спасибо
Но мне нужна версия на основе массива (строго ..) Я не должен использоватьлюбая другая реализация.