560 likes | 661 Views
Comparison Networks. Sorting Sorting binary values Sorting arbitrary numbers Implementing symmetric functions. Mergesort(array[1,…,n] of Integers): begin Mergesort(array[1,…,n/2]); Mergesort(array[n/2+1,…,n]); Merge(array[1,…,n/2], array[n/2+1,…,n]); end.
E N D
Comparison Networks Sorting • Sorting binary values • Sorting arbitrary numbers • Implementing symmetric functions
Mergesort(array[1,…,n] of Integers): begin Mergesort(array[1,…,n/2]); Mergesort(array[n/2+1,…,n]); Merge(array[1,…,n/2], array[n/2+1,…,n]); end comparisons required to merge two arrays of size m/2 comparisons to sort n elements Sorting Algorithms Example Order of comparisons not fixed in advance. Not readily implementable in hardware.
C A D Sorting Network B B C A D Sorting Networks Order of comparisons fixed in advance. Readily implementable in hardware.
sorted Sorting Networks (binary values) inputs outputs 1 0 0 0 0 0 Sorting Network 1 0 0 1 0 1 1 1 1 1
Comparator (2-sorter) outputs inputs min(x, y) x C max(x, y) y
Comparator (2-sorter) AON Implementation outputs inputs x min(x, y) max(x, y) y
Comparator (2-sorter) outputs inputs min(x, y) x max(x, y) y
1 0 0 0 0 1 0 0 width n 1 0 1 1 0 1 1 1 depth d Comparison Network
1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 d stages Comparison Network n / 2 comparisons per stage
Sorting Network Any ideas?
Sorting Network . . . n 1 . . . . . . n Sorting Network inputs outputs
Insertion Sort Network inputs outputs depth2n 3
Batcher Sorting Network Next Lecture
Sorting Arbitrary Numbers outputs inputs min(x, y) x max(x, y) y x, y can be values from any linearly ordered set, e.g., integers, reals, etc.
Comparison function: 1 if X > Y, C(X,Y) = 0 otherwise. Integer Comparator X, Y: integers represented as m-bit binary strings. Idea: use C(X,Y) to select the min and the max of X and Y.
C(X, Y) C(X, Y) Integer Comparator X min(X, Y) Y C(X, Y) X C(X, Y) max(X, Y) Y
2 2 2 9 9 6 6 2 6 9 9 6 Sorting Arbitrary Numbers sorted
1 1 1 1 5 4 4 5 4 5 5 4 Sorting Arbitrary Numbers sorted
3 3 3 3 7 0 0 7 0 7 7 0 Sorting Arbitrary Numbers not sorted How can we verify if a network sorts all possible input sequences?
inputs outputs Sorting Arbitrary Numbers Try all possible 0/1 sequences.
inputs outputs 0 0 0 0 0 0 0 0 0 0 0 0 Sorting Arbitrary Numbers 000 000 Try all possible 0/1 sequences.
0 0 0 0 0 0 0 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 Try all possible 0/1 sequences.
0 0 0 0 1 0 0 1 0 1 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 Try all possible 0/1 sequences.
0 0 0 0 1 1 1 1 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 Try all possible 0/1 sequences.
0 0 0 1 1 0 0 0 0 1 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 Try all possible 0/1 sequences.
0 0 0 1 1 1 1 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 Try all possible 0/1 sequences.
1 1 1 1 1 0 0 1 0 1 1 0 not sorted! Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 101 Try all possible 0/1 sequences.
1 1 1 1 1 1 1 1 1 1 1 1 not sorted! Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 101 111 111 Try all possible 0/1 sequences.
inputs outputs Sorting Arbitrary Numbers Try all possible 0/1 sequences.
inputs outputs 0 0 0 0 0 0 0 0 0 0 0 0 Sorting Arbitrary Numbers 000 000 Try all possible 0/1 sequences.
0 0 0 0 0 0 0 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 Try all possible 0/1 sequences.
0 0 0 0 1 1 0 1 0 0 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 Try all possible 0/1 sequences.
0 0 0 0 1 1 1 1 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 Try all possible 0/1 sequences.
0 0 0 1 1 1 0 0 0 0 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 Try all possible 0/1 sequences.
0 0 0 1 1 1 1 0 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 Try all possible 0/1 sequences.
1 0 0 1 1 1 1 1 0 1 1 0 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 011 Try all possible 0/1 sequences.
1 1 1 1 1 1 1 1 1 1 1 1 Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 011 111 111 Try all possible 0/1 sequences.
Sorting Arbitrary Numbers inputs outputs 000 000 001 001 010 001 011 011 100 001 101 011 110 011 111 111 all sorted! Try all possible 0/1 sequences.
Zero-One Principle If a comparison network sorts all possible sequences of 0’s and 1’s correctly, then it sorts all sequences ofarbitrary numbers correctly.
Lemma Given For a monotonically increasing function f,
Lemma Given For a monotonically increasing function f,
Proof: Lemma f is monotonically increasing:
Proof: Lemma f is monotonically increasing:
Proof: Lemma f is monotonically increasing:
Generalization Given
Generalization For a monotonically increasing function f, (by induction)
Suppose a) the network sorts all sequences of 0’s and 1’s, b) there exists a sequence that it doesn’t sort, i.e., such that but is placed before in the output. Define 0 if f (x) = 1 otherwise Proof: Zero-One Principle