Grafy: czy warto je implementować samodzielnie?

0

Witam,
Jestem świadomy istnienia wielu możliwości grafów i działających na nich algorytmów.

Pytania są następujące:

  1. Czy warto poświęcać czas na samodzielną implementację grafów?
  2. Czy biblioteki jak Boost::Graph albo JGraph są na tyle dobre, że nie warto tego robić?

Pozdrawiam,

0

Na pewno grafy z boosta beda duzo lepsze niz wlasna implementacja jesli dopiero zaczynasz. Warto sie nauczyc w celach edukacyjnych i zeby wiedziec na jakiej zasadzie dzialaja, ale korzystac lepiej z gotowych, bo i tak nie zoptymalizujesz tego do wlasnego problemu tak zeby bylo wydajniejsze.

0

Implementacja podstawowego grafu to nic przesadnie skomplikowanego:

struct node {
    vector<int> edges;
};

struct graph {
    vector<node> nodes;
};

Optymalizować tutaj też nie ma czego ;].

Gorzej z różnymi algorytmami grafowymi, tutaj faktycznie można jakąś bibliotekę dorwać jeśli nie zależy Ci na wiedzy jak to działa wewnętrznie.

Ale (truizm) jeśli będziesz planował startować w jakichś konkursach algorytmicznych, umiejętność pisania podstawowych algorytmów grafowych z pamięci to podstawa.

1
Krycho napisał(a):

... bo i tak nie zoptymalizujesz tego do wlasnego problemu tak zeby bylo wydajniejsze.
Ja bym tu wyraził się inaczej: Dopóki nie jesteś w stanie zoptymalizować tego do wlasnego problemu tak żeby było wydajniejsze, zaś kiedy będziesz w stanie to zawsze jest pytanie czy ma sens optymalizować.

0

Warto wtedy gdy poznałeś wszystkie najważniejsze dostępne rozwiązania i ciągle Ci czegoś brakuje - funkcjonalności, wydajności, stabilności, dokumentacji etc.
Inny powód może być taki że nie możesz z jakichś dziwnych przyczyn (zakaz w firmie) używać bibliotek zewnętrznych.

Warto również sobie popróbować przetestować teorię - ale w celach edukacyjnych.

Natomiast jeśli robisz program do renderingu w pracy i przypadkiem potrzebna Ci jest funkcja z dziedziny grafów a wybór bibliotek zależy tylko od Ciebie to nie zastanawiaj się tylko weź coś gotowego.

0

Dziękuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1