Biorąc pod uwagę wejścia , budujemy losową sieć sortująca z bram poprzez iteracyjne zbieranie dwóch zmiennych z i dodanie bramę komparatora że swapy nich, jeśli .
Pytanie 1 : W przypadku stałej , jak duża musi być aby sieć poprawnie sortowała z prawdopodobieństwem ?
Mamy co najmniej dolną granicę ponieważ wejście, które jest poprawnie posortowane, z wyjątkiem tego, że każda kolejna para jest zamieniana, zajmie czasu dla każdej pary, która zostanie wybrana jako komparator . Czy to także górna granica, być może z większą liczbą czynników ?
Pytanie 2 : Czy istnieje rozkład bramek komparatora, który osiąga , być może poprzez wybór bliskich komparatorów z większym prawdopodobieństwem?
sorting-network
Geoffrey Irving
źródło
źródło
Odpowiedzi:
Here's some empirical data for question 2, based on D.W.'s idea applied to bitonic sort. Forn variables, choose j−i=2k with probability proportional to lgn−k , then select i uniformly at random to get a comparator (i,j) . This matches the distribution of comparators in bitonic sort if n is a power of 2, and approximates it otherwise.
Dla danej nieskończonej sekwencji bramek wyciągniętych z tego rozkładu, możemy przybliżać liczbę bramek wymaganych do uzyskania sieci sortującej, sortując wiele losowych sekwencji bitów. Oto szacunek dla biorąc pod uwagę średnią ponad 100 sekwencji bramkowych z 6400 sekwencjami bitowymi użytymi do przybliżenia liczby: Wygląda na to, że odpowiada Θ ( n log 2 n ) , takiej samej złożoności jak sortowanie bitoniczne. Jeśli tak, nie jemy dodatkowego współczynnika log n ze względu na problem kolektora kuponów napotykający każdą bramę.n<200 100 6400 Θ(nlog2n) logn
Dla podkreślenia: używam tylko sekwencji bitowych do przybliżenia oczekiwanej liczby bramek, a nie 2 n . Średnia wymagana liczba bramek rośnie wraz z tą liczbą: dla n = 199, jeśli użyję sekwencji 6400 , 64000 i 640000 , szacunki wynoszą 14270 ± 1069 , 14353 ± 1013 i 14539 ± 965 . Zatem możliwe jest uzyskanie ostatnich kilku sekwencji zwiększa asymptotyczną złożoność, choć intuicyjnie wydaje się to mało prawdopodobne.6400 2n n=199 6400 64000 640000 14270±1069 14353±1013 14539±965
Edit: Here's a similar plot up ton=80 , but using the exact number of gates (computed via a combination of sampling and Z3). I've switched from power of two d=j−i to arbitrary d∈[1,n2] with probability proportional to logn−logdd . Θ(nlog2n) still looks plausible.
źródło