W algorytmie median-of-medians, musimy podzielić tablicę na kawałki wielkości 5. Zastanawiam się, jak wynalazcy algorytmów wymyślili magiczna liczba "5", a nie, może być, 7 lub 9 lub coś innego?Mediana algorytmu median: dlaczego dzielić tablicę na bloki wielkości 5
Odpowiedz
myślę, że jeśli będziesz sprawdzać „Dowód O (n) Czas trwania” sekcji strony wiki dla medians-of-medians algorithm:
Mediana-obliczania wywołanie rekurencyjne nie przekracza najgorszego scenariusza zachowań liniowy ponieważ lista środkowych 20% wielkości listy, a drugi wywołanie rekurencyjne recurses na co najwyżej 70% z listy, co czas przepływu
o (n) Określenie Cn do prac partycjonujących (odwiedziliśmy każdy element a con wiele razy, aby uformować je w grupy n/5 i przyjąć każdą medianę w czasie O (1)). Z tego, za pomocą indukcji, można łatwo wykazać, że
To powinno pomóc zrozumieć, dlaczego.
Liczba musi być większa niż 3 (i oczywiście liczba nieparzysta) dla algorytmu. 5 jest najmniejszą liczbą nieparzystą większą niż 3. Tak więc 5 zostało wybrane.
Nie musi być większa tan 3 (i nieparzysta), zobacz moją odpowiedź poniżej. –
Tak, ale to jest inny algorytm. Jest tylko niewielka zmiana algorytmu, o który pytał OP - ale wciąż jest to inny algorytm. OP zapytał "dlaczego w tym konkretnym algorytmie potrzebujemy bloków 5", a nie "jest wariant na tym algorytmie, w którym moglibyśmy użyć mniejszych bloków". Próbowali zrozumieć, jak coś zostało obliczone, zamiast próbować znaleźć, czy jest coś innego, co może zrobić to lepiej. – rabensky
Można również użyć bloków o wielkości 3 lub 4, jak pokazano w artykule Select with groups of 3 or 4 K. Chen i A. Dumitrescu (2015). Chodzi o to, aby dwa razy użyć algorytmu "mediana median", a dopiero potem partycji. Zmniejsza to jakość czopu, ale jest szybszy.
Więc zamiast:
T(n) <= T(n/3) + T(2n/3) + O(n)
T(n) = O(nlogn)
dostaje:
T(n) <= T(n/9) + T(7n/9) + O(n)
T(n) = Theta(n)
- 1. Dlaczego algorytm median-median nie może używać bloku wielkości 3?
- 2. Wyjaśnienie algorytmu Median of Medians
- 3. Niezrozumienie mediany algorytmu mediana dla znalezienia elementu k
- 4. Median of Medians
- 5. interviewstreet mediana wyzwanie
- 6. mediana pandy dataframe
- 7. Dlaczego mediana potknie się w data.table (integer kontra double)?
- 8. Median filtr zamaskowanych macierzy
- 9. Jak dzielić i łączyć tablicę w C++ dla UDP?
- 10. Mediana obliczeniowa na mapie zmniejsza
- 11. Refaktor algorytmu C# dzielący tablicę na 3 części?
- 12. Znajdź median w wielu zakresach podrzędnych nieuporządkowanej listy
- 13. Excel Mediana dla wielu warunków
- 14. Mediana of Lists
- 15. Python: ważona mediana algorytm z pand
- 16. średnia i mediana reszt z modelu liniowego
- 17. Znalezienie Mediana w serwerze sql września każdy dzień w tabeli
- 18. Filtr Median Bardzo wydajna implementacja
- 19. python: dlaczego random.shuffle zmienia tablicę
- 20. Dlaczego TSLint i JSLint zgłaszają puste bloki?
- 21. Wdrażanie algorytmu python naukowych na Amazon ec2
- 22. Mediana z 2 posortowanych tablic o różnych długościach
- 23. Ogólna metoda znajdowania median 3 wartości
- 24. Geometryczna mediana/punkt spotkania Realizacja 2D
- 25. Jak zaimplementować tablicę w vbscript o zmiennej wielkości
- 26. Znalezienie bloki w macierzach
- 27. Dlaczego nie ma algorytmu std :: copy_if?
- 28. Konwertuj tablicę int na tablicę znaków
- 29. DOMContentLoaded bloki strona ładowanie
- 30. Czy źle jest dzielić tablicę C, po prostu za pomocą wskaźnika do jej środka?
Dowodzi to O (n) Czas trwania zastosowania 20%, to nie ma obalić O (n) Czas pracy jakiejś innej wartości procentowej (jeśli jakiś inny procent był również O (n), nie uzasadnia wyboru 20% powyżej drugiego). – Dukeling