Nie mogę używać żadnych zewnętrznych bibliotek, więc staram się wymyślić kilka sposobów na samodzielne zbudowanie struktury danych. Myślałem, że może coś takiego:W jaki sposób mogę przedstawić ważony, ukierunkowany wykres w Javie?
public class Node{
Set<Edge> adjacent;
int value;
}
public class Edge{
Node target;
int weight;
}
Ale domyślam się, że jest prawdopodobnie lepszy sposób to zrobić.
Moim ostatecznym zastosowaniem do tego wykresu jest uruchomienie algorytmu Bellmana Forda, ale oczywiście potrzebuję najpierw działającego wykresu!
Pracując lepiej, masz na myśli tylko to, że są bardziej wydajne? – Hoser
@Hoser W większości przypadków odpowiedź brzmi "tak". Specjalne przypadki, takie jak Floyd-Warshall, wymagają macierzy do pracy. Możesz zachować reprezentację listy przyległości aż do momentu, w którym uruchomisz algorytm, zbudujesz macierz, aby ją uruchomić, a na końcu przekształć macierz z powrotem na listę sąsiedztwa. – dasblinkenlight
W porządku, dziękuję. Co z jednym z nich sprawia, że wspierają one kierunek? Czy faktycznie wymuszają kierunek, czy jest to coś, co muszę sam sobie zarządzać? – Hoser