Probabilité qu'un réseau de tri aléatoire fonctionne


14

Étant donné n entrées x0,,xn1 , nous construisons un réseau de tri aléatoire avec m portes en choisissant itérativement deux variables xi,xj avec i<j et en ajoutant une porte de comparaison qui les échange si xi>xj .

Question 1 : Pour fixe n, quelle taille doit être m pour que le réseau trie correctement avec une probabilité >12 ?

Nous avons au moins la limite inférieure m=Ω(n2logn) depuis une entrée qui est triée correctement sauf que chaque paire consécutive est échangé aura Θ(n2logn2) de temps pour chaque paire d'être choisi comme un comparateur . Est-ce aussi la limite supérieure, éventuellement avec plus de facteurs logn ?

Question 2 : Y a-t-il une distribution de portes de comparaison qui atteint , peut-être en choisissant des comparateurs proches avec une probabilité plus élevée?m=O~(n)


1
Je suppose que l'on peut obtenir une limite supérieure en regardant une entrée à la fois, puis en limitant l'union, mais cela semble loin d'être serré. O(n3logO(1))
daniello

2
Idée pour la question 2: choisissez un réseau de tri de profondeur . À chaque étape, choisissez au hasard l'une des portes du réseau de tri et effectuez cette comparaison. Après ~ O ( n ) étapes, toutes les portes de la première couche aura été appliquée. Après un autre ~ O ( n ) étapes, toutes les portes de la deuxième couche auront été appliquées. Si vous pouvez montrer que c'est monotone (l'insertion de comparaisons supplémentaires au milieu du réseau de tri ne peut pas nuire), vous aurez obtenu une solution avec ˜ O ( n )O(log2n)O~(n)O~(n)O~(n)comparateurs au total en moyenne. Je ne sais pas si la monoticité tient vraiment.
DW

2
@DW: La monotonie ne tient pas nécessairement. Considérez les séquences Séquencedetravaux; s'nelefait pas (considérez l'entrée (1, 0, 0)). L'idée est que(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) sorts any input it receives except (0,1,0) (see here). In s, that input cannot reach (x0,x2),(x0,x1). In s it can.
Neal Young

3
Considérons la variante où le réseau est choisi en choisissant deux variables adjacentes au hasard à chaque étape. Maintenant, la monotonie tient (car les swaps adjacents ne créent pas d'inversions). Appliquez l'idée de @ DW à un réseau de tri pair-impair , qui a n tours: dans les tours impairs, il compare toutes les paires adjacentes où i est impair, dans les tours pairs, il compare toutes les paires adjacentes où i est pair. Whp le réseau aléatoire est correct dans les comparaisons O ( n 2 log n ) , car il "inclut" ce réseau. (Ou est-ce que je manque quelque chose?)xi,xi+1niiO(n2logn)
Neal Young

2
Monotonie des réseaux adjacents: étant donné , pour j { 0 , 1 , , n } définissons s j ( a ) = j i = 1 a i . Dites a b si s j ( a ) s j ( b ) ( ja,b{0,1}nj{0,1,,n}sj(a)=i=1jaiabsj(a)sj(b)j). Corrigez toute comparaison " ". Soit a et b viennent de a et b en faisant cette comparaison. Revendication 1. a a et b b . Revendication 2: si a b , alors a b . Ensuite, inductivement: si y est le résultat de la séquence de comparaison s sur l'entrée xxi<xi+1abab 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

Réponses:


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.

For a given infinite sequence of gates pulled from this distribution, we can approximate the number of gates required to get a sorting network by sorting many random bit sequences. Here's that estimate for n<200 taking the mean over 100 gate sequences with 6400 bit sequences used to approximate the count: Approximate number of gates It appears to match Θ(nlog2n), the same complexity as bitonic sort. If so, we don't eat an extra logn factor due to the coupon collector problem of coming across each gate.

To emphasize: I'm using only 6400 bit sequences to approximate the expected number of gates, not 2n. The mean required gates does rise with that number: for n=199 if I use 6400, 64000, and 640000 sequences the estimates are 14270±1069, 14353±1013, and 14539±965. Thus, it's possible getting the last few sequences increases the asymptotic complexity, though intuitively it feels unlikely.

n=80d=jid[1,n2]lognlogddΘ(nlog2n) still looks plausible.

Exact numbers of gates


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.