Tom III sztuki programowania komputerowego Knutha (rozdział 5, werset 3.2) zawiera poniższą tabelę zawierającą dokładną minimalną liczbę porównań wymaganych do wybrania tego najmniejszego elementu z nieposortowanego zestawu wielkości , dla wszystkich . Ta tabela, wraz z dobrze znanymi wyrażeniami typu zamkniętego i , reprezentuje większość stanu techniki w 1976 r. .n 1 ≤ t ≤ n ≤ 10 V 1 ( n ) = n - 1 V 2 ( n ) = n - 2 + ⌈ n / 2 ⌉
Czy w ciągu ostatnich 36 lat obliczono jakieś dokładniejsze wartości ? Szczególnie interesują mnie dokładne wartości , minimalna liczba porównań wymaganych do obliczenia mediany.M ( n ) = V ⌈ n / 2 ⌉ ( n )
Jak wskazuje @ MarkusBläser, tabela Knutha wydaje się już zawierać najnowsze wyniki Billa Gasarcha, Wayne'a Kelly i Billa Pugh ( Znalezienie i-tego największego spośród n dla małych i, n . SIGACT News 27 (2): 88-96, 1996 .)
Odpowiedzi:
Kenneth Oksanen opublikował rozszerzoną tabelę wartości do w oparciu o własne wyszukiwanie komputerowe . Okansen zapewnia także opisy drzew optymalnego porównania dla większości zgłaszanych wartości. Oto zrzut ekranu jego stołu:n=15
Dzięki @ MarkusBläser za prowadzenie!
źródło
Zastanawiam się, czy ta informacja może ci się przydać. Niestety nie zawiera żadnych dodatkowych informacji na pytanie tego postu, ale jest raczej odpowiedzią na Twój komentarz dotyczący tego, do czego służy (analiza wariantów QuickSelect).
Oczekiwana minimalna liczba porównań, odnotowana lub jest oczywiście znacznie łatwiejsza do obliczenia (przy oczekiwaniach przyjętych jednolicie dla wszystkich permutacji), v t ( n ) v t ( n ) = n + min ( t , n - t ) + lot .v(n,t) vt(n)
Ten wynik nie jest rzadko wykorzystywany, a w szczególności stanowi podstawę algorytmów w „Adaptive Sampling for QuickSelect” autorstwa Martíneza, Panario i Violi . Punktem wyjściowym artykułu jest mediana z trzech QuickSelect, a następnie pytanie: czy istotne jest systematyczne wybieranie mediany, gdy poszukiwany element ma względną rangę znacznie niższą niż n / 2 lub znacznie wyższą niż n / 2 ?
Innymi słowy, załóżmy, że szukasz elementu na liście elementów i wybierasz sworzeń przestawny z grup elementów . Zamiast wziąć medianę ( ), weźmiesz gdzie . Pokazują, że ten algorytm może przy właściwym wyborze być praktycznie bardziej wydajny niż wariant mediany z trzech.n m m / 2 α m α = k / n mk n m m/2 αm α=k/n m
źródło