Witam, mam do napisania algorytm wyszukiwania najkrótszej drogi w grafie, graf mam pobrany z pliku w formie (a,d,b) gdzie d to odległość między wierzchołkami a i b (dł. krawędzi). Mam taką strukturę:
class Krawedz
{
public:
Wierzcholek * idA;
Wierzcholek * idB;
float dlugosc;
Krawedz(Wierzcholek * idA, Wierzcholek * idB, float dlugosc)
{
this->idA = idA;
this->idB = idB;
this->dlugosc = dlugosc;
}
};
class Wierzcholek
{
public:
int identyfikator;
Wierzcholek(int identyfikator)
{
this->identyfikator = identyfikator;
}
};
//GRAF SKIEROWANY
class Graf
{
private:
vector <Wierzcholek*> tablica_wierzcholkow;
vector <Krawedz*> tablica_krawedzi;
float odleglosc;
public:
Graf()
{
this->odleglosc = 0;
}
void dodaj_wierzcholek(int identyfikator);
bool dodaj_krawedz(int idA, int idB, float dlugosc);
void convert(int idA, int idB); //konwert integerow na odpowiednie obiekty Wierzcholkow (znajduje obiekt o identyfikatorze idA, idB
vector <Krawedz*> pobierz_krawedzie();
vector <Wierzcholek*> pobierz_wierzcholki();
float pobierz_najkrotsza_droge();
private:
//Pobieranie sasiadow
vector <Wierzcholek*> pobierz_sasiadow(Wierzcholek * wierzcholek);
//pseudo dijkstra tutaj ma byc ten dijkstra
void odleglosc_AB(Wierzcholek * A, Wierzcholek * B);
//dlugosc krawedzi
float pobierz_dlugosc_krawedzi(Wierzcholek * A, Wierzcholek * B);
};
Wszystkie metody prócz tej najważniejszej dijkstry mam zaimplementowane. Powie ktoś jak to ugryźć?