Mam implementację algorytmu Dijkstry opartą na kodzie pod numerem this website. Zasadniczo mam liczbę węzłów (powiedzmy 10000), a każdy węzeł może mieć od 1 do 3 połączeń z innymi węzłami.Algorytm Dijkstry: zużycie pamięci
Węzły są generowane losowo w przestrzeni 3d. Połączenia są generowane losowo, jednak zawsze najpierw szukają połączeń z najbliższymi sąsiadami i powoli zwiększają zasięg wyszukiwania. Każde połączenie ma odległość równą jeden. (Wątpię, żeby to wszystko miało znaczenie, ale to tylko tło).
W tym przypadku algorytm jest używany do znajdowania najkrótszej liczby przeskoków od punktu początkowego do wszystkich innych węzłów. I działa dobrze na 10 000 węzłów. Problem w tym, że wraz ze wzrostem liczby węzłów, powiedzmy do 2 milionów, wykorzystuję pamięć wszystkich moich komputerów podczas próby zbudowania wykresu.
Czy ktoś wie o alternatywnym sposobie implementacji algorytmu w celu zmniejszenia śladu pamięci, czy istnieje inny algorytm wykorzystujący mniej pamięci?
Ponieważ sama Dijkstra skaluje się liniowo z liczbą węzłów Przypuszczam, że jest to reprezentacja sam wykres, który kosztuje tak dużo pamięci. Którą strukturę danych używasz do reprezentowania wykresu? – Howard
Co ważniejsze, na jakiej architekturze tego używasz? Komputer z kilkoma gigabajtami pamięci RAM powinien mieć możliwość przechowywania DUŻO więcej niż 2M węzłów, chyba że każdy węzeł zajmuje kilkaset bajtów każdy - w którym momencie prawdopodobnie będziesz chciał ponownie rozważyć informacje o twoim węźle. –
możesz mieć wycieki pamięci w budowaniu fazy wykresu. czy możesz opublikować swój kod? – emreakyilmaz