Nie pracuję w teorii, ale moja praca wymaga od czasu do czasu czytania (i rozumienia) prac teoretycznych. Kiedy zrozumiem (zestaw) wyników, omawiam je z ludźmi, z którymi pracuję, z których większość również nie działa w teorii. Podczas jednej z takich dyskusji pojawiło się następujące pytanie:
Kiedy mówi się, że dwa podane algorytmy są „podobne”?
Co rozumiem przez „podobny”? Powiedzmy, że dwa algorytmy są podobne do siebie, jeśli można złożyć jedno z poniższych oświadczeń w dokumencie bez mylenia / irytującego recenzenta (mile widziane lepsze definicje):
Twierdzenie 1. „Algorytm , który jest podobny do algorytmu B , rozwiązuje również problem X ”
Twierdzenie 2. „Nasz algorytm jest podobny do algorytmu ”
Pozwólcie, że uczynię to nieco bardziej szczegółowym. Załóżmy, że pracujemy z algorytmami graficznymi. Najpierw niektóre niezbędne warunki, aby oba algorytmy były podobne:
- Muszą rozwiązać ten sam problem.
- Muszą mieć ten sam intuicyjny pomysł na wysokim poziomie.
Na przykład, mówiąc o przejściu przez wykres, przejściu przez pierwszą szerokość i głębokość pierwsze spełniają powyższe dwa warunki; dla obliczeń najkrótszej ścieżki, szerokość i algorytm Dijkstry spełniają powyższe dwa warunki (oczywiście na nieważonych grafach); itp.
Czy te warunki są wystarczające? Mówiąc dokładniej, załóżmy, że dwa algorytmy spełniają niezbędne warunki, aby być podobne. Czy rzeczywiście nazwałbyś ich podobnie?
- mają inną asymptotyczną wydajność?
- dla szczególnej klasy wykresy, jeden algorytm wymaga czas, podczas gdy drugi wymaga O ( n 1 / 3 ) czas?
- mają różne warunki zakończenia? (pamiętaj, rozwiązują ten sam problem)
- etap wstępnego przetwarzania różni się w dwóch algorytmach?
- złożoność pamięci jest różna w dwóch algorytmach?
Edycja: Pytanie wyraźnie zależy od kontekstu i jest subiektywne. Miałem nadzieję, że powyższe pięć warunków pozwoli na uzyskanie pewnych sugestii. Z przyjemnością zmodyfikuję pytanie i podam więcej szczegółów, jeśli zajdzie potrzeba uzyskania odpowiedzi. Dzięki!