Podczas odpowiadania na this question rozpoczęła się debata w komentarzach dotyczących złożoności QuickSort. Z czasów uniwersyteckich pamiętam, że QuickSort to w najgorszym przypadku: O(n^2)
, O(n log(n))
w przeciętnym przypadku i O(n log(n))
(ale z bardziej ograniczonym limitem) w najlepszym wypadku.Znaczenie średniej złożoności przy korzystaniu z notacji Big-O
Potrzebuję poprawnego matematycznego wyjaśnienia znaczenia average complexity
, aby jasno wyjaśnić, co to jest dla kogoś, kto wierzy, że notacja big-O może być używana tylko w najgorszym przypadku.
Co pamiętam, jeśli w celu określenia średniej złożoności należy wziąć pod uwagę złożoność algorytmu dla wszystkich możliwych danych wejściowych, policzyć liczbę przypadków zwyrodniałych i normalnych. Jeśli liczba przypadków degeneracji podzielona przez n dąży do 0, gdy n staje się duża, możesz mówić o średniej złożoności ogólnej funkcji dla normalnych przypadków.
Czy ta definicja jest właściwa, czy też definicja przeciętnej złożoności jest inna? A jeśli to prawda, czy ktoś może to bardziej rygorystycznie niż ja?
Jeśli chodzi o argument, myślę, że jeśli podajesz notację big-o dla czasu biegania i nie kwalifikujesz go, powinieneś mówić o najgorszym przypadku, po prostu dlatego, że mówisz, że czas jest ograniczony przez funkcję z podanym big-O. Jeśli czas jest ograniczony, oznacza to, że najgorszy możliwy czas jest ograniczony, z definicji "związany". Jeśli powiesz: "to jest przeciętny przypadek O (n log n)", to jest to dobrze zdefiniowane i oznacza to, co mówisz w tym pytaniu. –
Może warto spróbować http://cstheory.stackexchange.com/ na pytanie –
@Chris: chociaż najczęściej zadawane pytania na tej stronie mówią, że "typowe problemy z pracą domową w podręcznikach" są zbyt proste, i myślę, że to jest tak podstawowe jak że. –