Prawdopodobieństwo działania losowej sieci sortującej

14

Biorąc pod uwagę n wejścia x0,,xn1 , budujemy losową sieć sortująca z m bram poprzez iteracyjne zbieranie dwóch zmiennych xi,xj z i<j i dodanie bramę komparatora że swapy nich, jeśli xi>xj .

Pytanie 1 : W przypadku stałej n , jak duża musi być m aby sieć poprawnie sortowała z prawdopodobieństwem >12 ?

Mamy co najmniej dolną granicę m=Ω(n2logn) ponieważ wejście, które jest poprawnie posortowane, z wyjątkiem tego, że każda kolejna para jest zamieniana, zajmie Θ(n2logn2) 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 logn ?

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?m=O~(n)

Geoffrey Irving
źródło
1
Chyba można dostać górną granicę g O ( 1 ) ) , patrząc na jedno wejście na raz, a następnie granicę związkową, ale to nie jest zbyt ścisłe. O(n3logO(1))
daniello
2
Pomysł na pytanie 2: wybierz sieć sortującą o głębokości . Na każdym kroku losowo wybierz jedną z bram sieci sortującej i wykonaj to porównanie. Po krokach ˜ O ( n ) wszystkie bramki w pierwszej warstwie zostaną zastosowane. Po kolejnych krokach ˜ O ( n ) zostaną zastosowane wszystkie bramki w drugiej warstwie. Jeśli możesz wykazać, że jest to monotoniczne (wstawienie dodatkowych porównań w środku sieci sortującej nie zaszkodzi), uzyskasz rozwiązanie z ˜ O ( n )O(log2n)O~(n)O~(n)O~(n)średnio komparatory. Nie jestem jednak pewien, czy tak naprawdę utrzymuje się monotyczność.
DW
2
@DW: Monotoniczność niekoniecznie się utrzymuje. Rozważ sekwencje Sekwencjasprace; snie (rozważ dane wejściowe (1, 0, 0)). Chodzi o to, że(x0,x2),(x0,x1)
s=(x1,x2),(x0,x2),(x0,x1);s=(x1,x2),(x0,x1),(x0,x2),(x0,x1).
ss(x0,x2),(x0,x1)sortuje wszystkie otrzymywane dane wejściowe oprócz (patrz tutaj ). W S , to nie może dotrzeć do wejścia ( x 0 , x 2 ) , ( x 0 , x 1 ) . W s może. (0,1,0)s(x0,x2),(x0,x1)s
Neal Young,
3
Rozważ wariant, w którym sieć jest wybierana przez losowe wybranie dwóch sąsiednich zmiennych na każdym etapie. Teraz obowiązuje monotoniczność (ponieważ sąsiednie zamiany nie powodują inwersji). Zastosuj pomysł @ DW do sieci sortowania nieparzystych parzystych , która ma n rund: w nieparzystych rundach porównuje wszystkie sąsiednie pary, gdzie i jest nieparzysta, w parzystych rundach porównuje wszystkie sąsiednie pary, w których i jest parzyste. Whp losowa sieć jest poprawna w porównaniach O ( n 2 log n ) , ponieważ „obejmuje” tę sieć. (Czy coś mi brakuje?)xi,xi+1niiO(n2logn)
Neal Young
2
Monotoniczność sąsiednich sieci: Biorąc pod uwagę , dla j { 0 , 1 , , n } zdefiniuj s j ( a ) = j i = 1 a i . Powiedz a b, jeśli s j ( a ) s j ( b ) ( ja,b{0,1}nj{0,1,,n}sj(a)=i=1jaiabsj(a)sj(b)j ). Napraw dowolne porównanie " xi<xi+1 ”. Niech ' i b ' pochodzą z i b robiąc tego porównania. Zastrzeżenie 1. a a i b b . Zastrzeżenie 2: jeśli a b , to a b . Następnie pokaż indukcyjnie: jeśli y jest wynikiem sekwencji porównania s na wejściu xabab aabb ababysx, and y is the result of super-sequence s of s on x, then yy. So if y is sorted, so is y.
Neal Young

Odpowiedzi:

3

Here's some empirical data for question 2, based on D.W.'s idea applied to bitonic sort. For n variables, choose ji=2k with probability proportional to lgnk, 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<2001006400Approximate number of gatesΘ(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.64002nn=19964006400064000014270±106914353±101314539±965

Edit: Here's a similar plot up to n=80, but using the exact number of gates (computed via a combination of sampling and Z3). I've switched from power of two d=ji to arbitrary d[1,n2] with probability proportional to lognlogdd. Θ(nlog2n) still looks plausible.

Exact numbers of gates

Geoffrey Irving
źródło
2
Nice experiment! There's a different way the coupon collector issue could arise here, though: you're only sampling a small fraction of the 2n bit sequences needed to verify correctness on all inputs. It seems we can conclude (scientifically, not mathematically of course) from your experiment that a random network of this type and size sorts a random permutation whp. I'd also be curious to see exhaustive 2n testing on such random networks for all n up to which you're willing to go. (n=20 shouldn't be too bad, maybe even n=30 depending on what language & hardware you're using).
Joshua Grochow
1
It looks the same for exact up to n=27, but I don’t view that as conclusive.
Geoffrey Irving
1
@JoshuaGrochow: I've added exact values up to n=80.
Geoffrey Irving
1
Nice! There does appear to be a growing spread to the exact data though, which perhaps indicates an upper bound with an extra factor of logn? (That is, if the "spread" is growing at a rate of logn.)
Joshua Grochow
1
Yeah, we can't rule out an extra factor. I'd be surprised if it was logn, though, since up at 80 we have lgn6 and the constant is suspiciously close to 1 otherwise. At this point I think theory has to take over. :)
Geoffrey Irving