9. Sorting III Lower bounds for the comparison based sorting, radix- - - PowerPoint PPT Presentation

9 sorting iii
SMART_READER_LITE
LIVE PREVIEW

9. Sorting III Lower bounds for the comparison based sorting, radix- - - PowerPoint PPT Presentation

9. Sorting III Lower bounds for the comparison based sorting, radix- and bucket-sort 248 9.1 Lower bounds for comparison based sorting [Ottman/Widmayer, Kap. 2.8, Cormen et al, Kap. 8.1] 249 Lower bound for sorting Up to here: worst case


slide-1
SLIDE 1
  • 9. Sorting III

Lower bounds for the comparison based sorting, radix- and bucket-sort

248

slide-2
SLIDE 2

9.1 Lower bounds for comparison based sorting

[Ottman/Widmayer, Kap. 2.8, Cormen et al, Kap. 8.1]

249

slide-3
SLIDE 3

Lower bound for sorting

Up to here: worst case sorting takes Ω(n log n) steps. Is there a better way?

250

slide-4
SLIDE 4

Lower bound for sorting

Up to here: worst case sorting takes Ω(n log n) steps. Is there a better way? No: Theorem 14 Sorting procedures that are based on comparison require in the worst case and on average at least Ω(n log n) key comparisons.

250

slide-5
SLIDE 5

Comparison based sorting

An algorithm must identify the correct one of n! permutations of an array (Ai)i=1,...,n .

251

slide-6
SLIDE 6

Comparison based sorting

An algorithm must identify the correct one of n! permutations of an array (Ai)i=1,...,n . At the beginning the algorithm know nothing about the array structure.

251

slide-7
SLIDE 7

Comparison based sorting

An algorithm must identify the correct one of n! permutations of an array (Ai)i=1,...,n . At the beginning the algorithm know nothing about the array structure. We consider the knowledge gain of the algorithm in the form of a decision tree:

251

slide-8
SLIDE 8

Comparison based sorting

An algorithm must identify the correct one of n! permutations of an array (Ai)i=1,...,n . At the beginning the algorithm know nothing about the array structure. We consider the knowledge gain of the algorithm in the form of a decision tree:

Nodes contain the remaining possibilities.

251

slide-9
SLIDE 9

Comparison based sorting

An algorithm must identify the correct one of n! permutations of an array (Ai)i=1,...,n . At the beginning the algorithm know nothing about the array structure. We consider the knowledge gain of the algorithm in the form of a decision tree:

Nodes contain the remaining possibilities. Edges contain the decisions.

251

slide-10
SLIDE 10

Decision tree

a < b b < c abc a < c acb cab b < c a < c bac bca cba

Yes No Yes No Yes No Yes No Yes No abc acb cab bac bca cba abc acb cab bac bca cba acb cab bac bca

252

slide-11
SLIDE 11

Decision tree

A binary tree with L leaves provides K = L − 1 inner nodes.10 The height of a binary tree with L leaves is at least log2 L. ⇒ The heigh of the decision tree h ≥ log n! ∈ Ω(n log n). Thus the length of the longest path in the decision tree ∈ Ω(n log n). Remaining to show: mean length M(n) of a path M(n) ∈ Ω(n log n).

10Proof: start with emtpy tree (K = 0, L = 1). Each added node replaces a leaf by two

leaves, i.e.} K → K + 1 ⇒ L → L + 1.

253

slide-12
SLIDE 12

Average lower bound

Tbl Tbr ← br → ← bl →

Decision tree Tn with n leaves, average height

  • f a leaf m(Tn)

Assumption m(Tn) ≥ log n not for all n. Choose smalles b with m(Tb) < log b ⇒ b ≥ 2 bl + br = b with bl > 0 und br > 0 ⇒ bl < b, br < b ⇒ m(Tbl) ≥ log bl und m(Tbr) ≥ log br

254

slide-13
SLIDE 13

Average lower bound

Average height of a leaf:

m(Tb) = bl b (m(Tbl) + 1) + br b (m(Tbr) + 1) ≥ 1 b(bl(log bl + 1) + br(log br + 1)) = 1 b(bl log 2bl + br log 2br) ≥ 1 b(b log b) = log b. Contradiction.

  • The last inequality holds because f(x) = x log x is convex (f′′(x) = 1/x > 0) and

for a convex function it holds that f((x + y)/2) ≤ 1/2f(x) + 1/2f(y) (x = 2bl, y = 2br ).11 Enter x = 2bl, y = 2br, and bl + br = b.

11generally f(λx + (1 − λ)y) ≤ λf(x) + (1 − λ)f(y) for 0 ≤ λ ≤ 1.

255

slide-14
SLIDE 14

9.2 Radixsort and Bucketsort

Radixsort, Bucketsort [Ottman/Widmayer, Kap. 2.5, Cormen et al, Kap. 8.3]

256

slide-15
SLIDE 15

Radix Sort

Sorting based on comparison: comparable keys (< or >, often =). No further assumptions.

257

slide-16
SLIDE 16

Radix Sort

Sorting based on comparison: comparable keys (< or >, often =). No further assumptions. Different idea: use more information about the keys.

257

slide-17
SLIDE 17

Assumptions

Assumption: keys representable as words from an alphabet containing m elements. Examples m = 10 decimal numbers 183 = 18310 m is called the radix of the representation.

258

slide-18
SLIDE 18

Assumptions

Assumption: keys representable as words from an alphabet containing m elements. Examples m = 10 decimal numbers 183 = 18310 m = 2 dual numbers 1012 m is called the radix of the representation.

258

slide-19
SLIDE 19

Assumptions

Assumption: keys representable as words from an alphabet containing m elements. Examples m = 10 decimal numbers 183 = 18310 m = 2 dual numbers 1012 m = 16 hexadecimal numbers A016 m is called the radix of the representation.

258

slide-20
SLIDE 20

Assumptions

Assumption: keys representable as words from an alphabet containing m elements. Examples m = 10 decimal numbers 183 = 18310 m = 2 dual numbers 1012 m = 16 hexadecimal numbers A016 m = 26 words “INFORMATIK” m is called the radix of the representation.

258

slide-21
SLIDE 21

Assumptions

keys = m-adic numbers with same length.

259

slide-22
SLIDE 22

Assumptions

keys = m-adic numbers with same length. Procedure z for the extraction of digit k in O(1) steps. Example z10(0, 85) = 5 z10(1, 85) = 8 z10(2, 85) = 0

259

slide-23
SLIDE 23

Radix-Exchange-Sort

Keys with radix 2. Observation: if for some k ≥ 0: z2(i, x) = z2(i, y) for all i > k and z2(k, x) < z2(k, y), then it holds that x < y.

260

slide-24
SLIDE 24

Radix-Exchange-Sort

Idea: Start with a maximal k. Binary partition the data sets with z2(k, ·) = 0 vs. z2(k, ·) = 1 like with quicksort. k ← k − 1.

261

slide-25
SLIDE 25

Radix-Exchange-Sort

0111 0110 1000 0011 0001

262

slide-26
SLIDE 26

Radix-Exchange-Sort

0111 0110 1000 0011 0001

262

slide-27
SLIDE 27

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000

262

slide-28
SLIDE 28

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000

262

slide-29
SLIDE 29

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000 0011 0001 0110 0111 1000

262

slide-30
SLIDE 30

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000 0011 0001 0110 0111 1000

262

slide-31
SLIDE 31

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000 0011 0001 0110 0111 1000 0001 0011 0110 0111 1000

262

slide-32
SLIDE 32

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000 0011 0001 0110 0111 1000 0001 0011 0110 0111 1000

262

slide-33
SLIDE 33

Radix-Exchange-Sort

0111 0110 1000 0011 0001 0111 0110 0001 0011 1000 0011 0001 0110 0111 1000 0001 0011 0110 0111 1000 0001 0011 0110 0111 1000

262

slide-34
SLIDE 34

Algorithm RadixExchangeSort(A, l, r, b)

Input: Array A with length n, left and right bounds 1 ≤ l ≤ r ≤ n, bit position b Output: Array A, sorted in the domain [l, r] by bits [0, . . . , b] . if l < r and b ≥ 0 then i ← l − 1 j ← r + 1 repeat repeat i ← i + 1 until z2(b, A[i]) = 1 or i ≥ j repeat j ← j − 1 until z2(b, A[j]) = 0 or i ≥ j if i < j then swap(A[i], A[j]) until i ≥ j RadixExchangeSort(A, l, i − 1, b − 1) RadixExchangeSort(A, i, r, b − 1)

263

slide-35
SLIDE 35

Analysis

RadixExchangeSort provides recursion with maximal recursion depth = maximal number of digits p. Worst case run time O(p · n).

264

slide-36
SLIDE 36

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9

265

slide-37
SLIDE 37

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 3

265

slide-38
SLIDE 38

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 3 8

265

slide-39
SLIDE 39

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 3 8 18

265

slide-40
SLIDE 40

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 122 3 8 18

265

slide-41
SLIDE 41

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 122 3 8 18

265

slide-42
SLIDE 42

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 122 3 8 18

265

slide-43
SLIDE 43

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 122 3 23 8 18

265

slide-44
SLIDE 44

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 21 122 3 23 8 18

265

slide-45
SLIDE 45

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 21 122 3 23 8 18 19

265

slide-46
SLIDE 46

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 21 122 3 23 8 18 19 29

265

slide-47
SLIDE 47

Bucket Sort

3 8 18 122 121 131 23 21 19 29 1 2 3 4 5 6 7 8 9 121 131 21 122 3 23 8 18 19 29 121 131 21 122 3 23 8 18 19 29

265

slide-48
SLIDE 48

Bucket Sort

121 131 21 122 3 23 8 18 19 29

slide-49
SLIDE 49

Bucket Sort

121 131 21 122 3 23 8 18 19 29 1 2 3 4 5 6 7 8 9 3 8 18 19 121 21 122 23 29 131

slide-50
SLIDE 50

Bucket Sort

121 131 21 122 3 23 8 18 19 29 1 2 3 4 5 6 7 8 9 3 8 18 19 121 21 122 23 29 131 3 8 18 19 121 21 122 23 29

266

slide-51
SLIDE 51

Bucket Sort

3 8 18 19 121 21 122 23 29

slide-52
SLIDE 52

Bucket Sort

3 8 18 19 121 21 122 23 29 1 2 3 4 5 6 7 8 9 3 8 18 19 21 23 29 121 122 131

slide-53
SLIDE 53

Bucket Sort

3 8 18 19 121 21 122 23 29 1 2 3 4 5 6 7 8 9 3 8 18 19 21 23 29 121 122 131 3 8 18 19 21 23 29 121 122 131

267

slide-54
SLIDE 54

implementation details

Bucket size varies greatly. Possibilities Linked list or dynamic array for each digit. One array of length n. compute offsets for each digit in the first iteration. Assumptions: Input length n , Number bits / integer: k , Number Buckets: 2b Asymptotic running time O(k

b · (n + 2b).

For Example: k = 32, 2b = 256 : k

b · (n + 2b) = 4n + 1024.

268

slide-55
SLIDE 55

Bucket Sort – Different Assumption

Hypothesis: uniformly distributed data e.g. from [0, 1)

Input: Array A with length n, Ai ∈ [0, 1), constant M ∈ ◆+ Output: Sorted array k ← ⌈n/M⌉ B ← new array of k empty lists for i ← 1 to n do B[⌊Ai · k⌋].append(A[i]) for i ← 1 to k do sort B[i] // e.g. insertion sort, running time O(M2) return B[0] ◦ B[1] ◦ · · · ◦ B[k] // concatenated

Expected asymptotic running time O(n) (Proof in Cormen et al, Kap. 8.4)

269