Nad tutaj , Dave Clarke zaproponował, aby porównać asymptotycznej wzrostu należy wykreślić funkcje w zasięgu ręki. Jako teoretycznie skłonny informatyk nazywam (red.) To vodoo, ponieważ fabuła nigdy nie jest dowodem. Po zastanowieniu muszę się zgodzić, że jest to bardzo użyteczne podejście, które czasami jest niedostatecznie wykorzystywane; fabuła to skuteczny sposób na uzyskanie pierwszych pomysłów, a czasem to wszystko, czego potrzebujesz.
Podczas nauczania TCS zawsze jest uczeń, który pyta: „Do czego potrzebuję formalnego dowodu, jeśli mogę po prostu wykonać X, który zawsze działa?” Do jego nauczycieli należy wskazanie i zilustrowanie błędu. Istnieje genialny zestaw przykładów widocznych wzorców, które ostatecznie ulegają awarii w matematyce.SE, ale są to dość matematyczne scenariusze.
Jak więc oszukać heurystyczną kontrolę fabuły? Istnieją przypadki, w których różnice są trudne do odróżnienia, np
[ źródło ]
Zgadnij, a następnie sprawdź źródło rzeczywistych funkcji. Ale nie są one tak spektakularne, jak bym się spodziewał, w szczególności dlatego, że prawdziwe relacje można łatwo dostrzec na podstawie samych funkcji, nawet dla początkujących.
Czy istnieją przykłady (względnego) asymptotycznego wzrostu, w którym prawda nie jest oczywista z definicji funkcji, a kontrola wykresu dla stosunkowo dużego daje zupełnie błędny pomysł? Mile widziane są funkcje matematyczne i rzeczywiste zestawy danych (np. Środowisko wykonawcze określonego algorytmu); powstrzymaj się jednak od częściowych funkcji.
źródło
Odpowiedzi:
[ źródło ]
źródło
Oto kolejny (co prawda raczej skonstruowany) przykład, ale wciąż taki, który wydaje mi się niezwykły. Ma to na celu wykazanie, że wykresy mogą być bardzo mylące dla oceny asymptotycznego wzrostu.
Czy potrafisz zgadnąć, która z funkcji rośnie (asymptotycznie) szybciej?
Więc jest zasadniczo , tj. To samo co , ale jego druga pochodna nie jest równomiernie , ale oscyluje między a z wykładniczo rosnącym okresem. Ta oscylacja nie jest widoczna na zwykłych wykresach.g x2 f 2 0 4
W tym przykładzie możemy zdemaskować oscylacje, biorąc pod uwagę wykres log-log:
Oczywiście ogólnie to nie pomaga; na przykład możemy mieć podwójnie wykładniczy okres ...
źródło
Dobrym przykładem jest głęboko magiczny algorytm minimalnego DFA Brzozowskiego. Biorąc pod uwagę automat skończony , możemy obliczyć z niego minimalny deterministyczny automat skończony:N=(Q,S⊆Q,F⊆Q,R⊆Q×Σ×Q)
Jest to oczywiście najgorszy przypadek algorytmu czasu wykładniczego, ponieważ może on przyjąć niedeterministyczny automat i dać ci deterministyczny (lub, co bardziej oczywiste, wywołuje konstrukcję podzbioru dwa razy).
Jeśli jednak podasz algorytmowi Brzozowskiego DFA jako dane wejściowe, na wielu popularnych rodzajach danych wejściowych może konkurować i często przewyższać wyspecjalizowane algorytmy minimalizacji DFA (zwykle lub jeśli jesteś hardkorowy i wdrażasz algorytm Hopcraft).O ( n log ( n ) )O(n2) O(nlog(n))
Dotyczy to części „fabuły” heurystycznej kontroli fabuły - musimy wybrać, które punkty próbkować podczas rysowania fabuły, i można oszukać naiwną fabułę, jeśli nie starannie wybierzesz swoje punkty. Dotyczy to również innych przykładów, takich jak Quicksort i algorytm Simplex, ale dla pedagogiki wolę ten algorytm od tych dwóch.
Różnica Quicksort jest „tylko” kwadratowa względem logarytmiczno-liniowej, co jest mniej spektakularne niż różnica wielomianowa / wykładnicza. Algorytm simpleks ma podobnie spektakularną różnicę, ale jego analiza jest znacznie bardziej skomplikowana niż algorytm Brzozowskiego.
(Wydaje mi się również, że algorytm minimalizacji DFA Brzozowskiego jest znacznie mniej znany niż na to zasługuje, ale oczywiście jest to kwestia gustu.)
źródło
Matematyczną technikę dopasowania krzywej można zastosować, aby uzyskać nieskończoną liczbę odpowiedzi na twoje pytanie. Biorąc pod uwagę krzywą i zakres, można łatwo znaleźć wielomian, który pasuje do krzywej z dowolnym stopniem dokładności. Ten przykład z wikipedii pokazuje, w jaki sposób fala grzechu może być dość dokładnie dopasowana do wielomianu czwartego rzędu (niebieska krzywa).
Mógłbym użyć wielomianów wyższego rzędu i oszukać heurystykę inspekcji wykresu nawet lepiej niż ten wykres.
źródło