• Keine Ergebnisse gefunden

The Selection Problem

N/A
N/A
Protected

Academic year: 2021

Aktie "The Selection Problem"

Copied!
44
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

4. Searching

Linear Search, Binary Search, Interpolation Search, Lower Bounds [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems

2.1-3,2.2-3,2.3-5]

(2)

The Search Problem

Provided

A set of data sets examples

telephone book, dictionary, symbol table Each dataset has a keyk.

Keys are comparable: unique answer to the question k1 ≤ k2 for keys k1,k2.

Task: find data set by key k.

(3)

The Selection Problem

Provided

Set of data sets with comparable keys k.

Wanted: data set with smallest, largest, middle key value. Generally:

find a data set with i-smallest key.

(4)

Search in Array

Provided

Array Awith n elements(A[1], . . . , A[n]). Key b

Wanted: indexk,1 ≤k ≤ nwith A[k] = bor ”not found”.

10

4

20

2

22

1

24

6

28

9

32

3

35

5

38

8

41

10

42

7

(5)

Linear Search

Traverse the array from A[1] to A[n]. Best case: 1comparison.

Worst case: n comparisons.

Assumption: each permutation of then keys with same probability. Expected number of comparisons:

1 n

n

X

i=1

i = n+ 1 2 .

(6)

Search in a Sorted Array

Provided

Sorted array A with nelements (A[1], . . . , A[n]) with A[1] ≤ A[2] ≤ · · · ≤A[n].

Key b

Wanted: indexk,1 ≤k ≤ nwith A[k] = bor ”not found”.

10

1

20

2

22

3

24

4

28

5

32

6

35

7

38

8

41

9

42

10

(7)

Divide and Conquer!

Searchb = 23.

10

1

20

2

22

3

24

4

28

5

32

6

35

7

38

8

41

9

42

10

b <28

10

1

20

2

22

3

24

4

28

5

32

6

35

7

38

8

41

9

42

10

b >20

22

3

24

4

28

5

10

1

20

2

32

6

35

7

38

8

41

9

42

10

b >22

24

4

10

1

20

2

22

3

28

5

32

6

35

7

38

8

41

9

42

10

b <24

24

10 20 22 28 32 35 38 41 42 erfolglos

(8)

Binary Search Algorithm BSearch(A,b,l,r)

Input : Sorted array A of n keys. Key b. Bounds1l rn or l > r beliebig.

Output : Index of the found element. 0, if not found.

m← b(l+r)/2c

if l > r then // Unsuccessful search return 0

else if b=A[m] then// found return m

else if b < A[m] then// element to the left return BSearch(A, b, l, m1)

else // b > A[m]: element to the right return BSearch(A, b, m+ 1, r)

(9)

Analysis (worst case)

Recurrence (n= 2k) T(n) =

(d falls n= 1, T(n/2) +c falls n > 1. Compute:

T(n) =T n

2

+c = T n

4

+ 2c

= T n 2i

+i·c

= T n

n

+ log2n·c.

(10)

Analysis (worst case)

T(n) =

(d if n = 1, T(n/2) +c if n > 1. Guess : T(n) =d+c·log2n

Proof by induction:

Base clause: T(1) = d.

Hypothesis: T(n/2) = d+c·log2n/2 Step: (n/2→ n)

T(n) =T(n/2) +c = d+c·(log2n−1) +c = d+ clog2n.

(11)

Result

Theorem

The binary sorted search algorithm requires Θ(logn)fundamental operations.

(12)

Iterative Binary Search Algorithm

Input : Sorted array A of n keys. Key b.

Output : Index of the found element. 0, if unsuccessful.

l1; rn whilel r do

m← b(l+r)/2c if A[m] =b then

returnm

else if A[m]< b then lm+ 1

else

rm1 return 0;

(13)

Correctness

Algorithm terminates only if Ais empty or b is found.

Invariant: If bis in A thenb is in domain A[l, ..., r]

Proof by induction

Base clause b ∈ A[1, .., n](oder nicht) Hypothesis: invariant holds afteri steps.

Step:

b < A[m] ⇒ b ∈ A[l, .., m−1]

b > A[m] ⇒ b ∈ A[m+ 1, .., r]

(14)

Can this be improved?

Assumption: values of the array are uniformly distributed.

Example

Search for ”Becker” at the very beginning of a telephone book while search for ”Wawrinka" rather close to the end.

Binary search always starts in the middle.

Binary search always takesm =

l + r−l2 .

(15)

Interpolation search

Expected relative position of bin the search interval [l, r]

ρ= b−A[l]

A[r]−A[l] ∈ [0,1].

New ’middle’: l+ ρ·(r −l)

Expected number of comparisonsO(log logn) (without proof).

? Would you always prefer interpolation search?

! No: worst case number of comparisonsΩ(n).

(16)

Exponential search

Assumption: keyb is located somewhere at the beginning of the Array A. nvery large.

Exponential procedure:

1 Determine search domainl = r, r = 1.

2 Double r until r > n orA[r] > b.

3 Setr ← min(r, n).

4 Conduct a binary search with l ←r/2, r.

(17)

Analysis of the Exponential Search

Let m be the wanted index.

Number steps for the doubling ofr: maximallylog2m. Binary search then also O(log2m).

Worst case number of steps overallO(log2n).

? When does this procedure make sense?

! If m << n. For example if positive pairwise different keys and b << N (N: largest key value).

(18)

Lower Bounds

Binary and exponential Search (worst case): Θ(logn) comparisons.

Does foranysearch algorithm in a sorted array (worst case) hold that number comparisons = Ω(logn)?

(19)

Decision tree

3

1

2

5

4 6

b < A[3]

b < A[5]

b > A[3]

b > A[1] b > A[5]

For any inputb =A[i]the algorithm must succeed decision tree comprises at leastnnodes.

Number comparisons in worst case = height of the tree = maximum number nodes from root to leaf.

(20)

Decision Tree

Binary tree with heighth has at most 20 + 21 +· · ·+ 2h−1 = 2h−1< 2h nodes.

At least nnodes in a decision tree with height h. n < 2h ⇒h > log2n.

Number decisions = Ω(logn). Theorem

Any search algorithm on sorted data with lengthnrequires in the worst case Ω(logn) comparisons.

(21)

Lower bound for Search in Unsorted Array

Theorem

Any search algorithm with unsorted data of lengthnrequires in the worst case Ω(n) comparisons.

(22)

Attempt

? Correct?

”Proof”: to findb in A, bmust be compared with each of the n elementsA[i] (1≤ i ≤ n).

! Wrong argument! It is still possible to compare elements withinA.

(23)

Better Argument

Consider icomparisons without band e comparisons withb. Comparisons geenrate g groups. Initially g = n.

To connect two groups at least one comparison is needed:

n−g ≤i.

At least one element per group must be compared with b. Number comparisonsi+e ≥ n−g+ g = n.

(24)

5. Selection

The Selection Problem, Randomised Selection, Linear Worst-Case Selection [Ottman/Widmayer, Kap. 3.1, Cormen et al, Kap. 9]

(25)

Min and Max

? To separately find minimum an maximum in (A[1], . . . , A[n]), 2n comparisons are required. (How) can an algorithm with less than2n comparisons for both values at a time can be found?

! Possible with 32N comparisons: compare 2 elemetns each and then the smaller one with min and the greater one with max.

(26)

The Problem of Selection

Input

unsorted array A= (A1, . . . , An)with pairwise different values Number1 ≤ k ≤ n.

Output A[i]with |{j : A[j] < A[i]}| = k −1 Special cases

k = 1: Minimum: Algorithm with ncomparison operations trivial.

k = n: Maximum: Algorithm with ncomparison operations trivial.

k = bn/2c: Median.

(27)

Approaches

Repeatedly find and remove the minimum O(k·n). Median: O(n2)

Sorting (covered soon): O(nlogn) Use a pivotO(n) !

(28)

Use a pivot

1 Choose a pivotp

2 Partition Ain two parts, thereby determining the rank of p.

3 Recursion on the relevant part. Ifk = r then found.

p > > > >

p > > > >

p p

1 r n

(29)

Algorithmus Partition( A[l..r ], p )

Input : Array A, that contains the sentinelp in the interval[l, r] at least once.

Output : Array A partitioned in [l..r] aroundp. Returns position of p.

whilel < r do

while A[l]< p do ll+ 1 while A[r]> p do

rr1 swap(A[l], A[r]) if A[l] =A[r]then

ll+ 1 return l-1

(30)

Correctness: Invariant

InvariantI:Ai p∀i[0, l),Ai > p ∀i(r, n],∃k [l, r] :Ak=p.

whilel < r do

while A[l]< p do ll+ 1 while A[r]> p do

rr1 swap(A[l], A[r]) if A[l] =A[r]then

ll+ 1 return l-1

I

I undA[l]p I undA[r]p

I undA[l]pA[r]

I

(31)

Correctness: progress

whilel < r do

while A[l]< p do ll+ 1 while A[r]> p do

rr1 swap(A[l], A[r]) if A[l] =A[r] then

ll+ 1 return l-1

progress ifA[l]< p progress ifA[r]> p

progress ifA[l]> poderA[r]< p progress ifA[l] =A[r] =p

(32)

Choice of the pivot.

The minimum is a bad pivot: worst case Θ(n2)

p1 p2 p3 p4 p5

A good pivot has a linear number of elements on both sides.

p

·n ·n

(33)

Analysis

Partitioning with factor q (0< q < 1): two groups with q ·nand (1−q)·nelements (without loss of generality g ≥1−q).

T(n) ≤ T(q ·n) +c·n

= c·n+q ·c·n+T(q2 ·n) = ...= c·n

logq(n)−1

X

i=0

qi+T(1)

≤ c·n

X

i=0

qi

| {z }

geom. Reihe

= c·n· 1

1−q = O(n)

(34)

How can we achieve this?

Randomness to our rescue (Tony Hoare, 1961). In each step choose a random pivot.

1 4

1 4 1

2

schlecht gute Pivots schlecht

Probability for a good pivot in one trial: 12 =: ρ.

Probability for a good pivot after k trials: (1−ρ)k−1 ·ρ. Expected value of the geometric distribution: 1/ρ = 2

(35)

[Expected value of the Geometric Distribution]

Random variableX ∈ N+ with P(X = k) = (1−p)k−1 ·p. Expected value

E(X) =

X

k=1

k·(1−p)k−1 ·p=

X

k=1

k ·qk−1 ·(1−q)

=

X

k=1

k·qk−1 −k·qk =

X

k=0

(k+ 1)·qk−k·qk

=

X

k=0

qk = 1

1−q = 1 p.

(36)

Algorithm Quickselect ( A[l..r], i )

Input : Array A with length n. Indices 1lirn, such that for all xA[l..r]it holds |{j|A[j]x}| ≥l and |{j|A[j]x}| ≤r.

Output : Partitioniertes Array A, so dass |{j|A[j]A[i]}|=i if l=rthen return;

repeat

choose a random pivot xA[l..r]

pl

for j =l to r do

if A[j]x then pp+ 1 until l+r4 p 3(l+r)4

mPartition(A[l..r], x) if i < mthen

quickselect(A[l..m], i) else

(37)

Median of medians

Goal: find an algorithm that even in worst case requires only linearly many steps.

Algorithm Select (k-smallest)

Consider groups of five elements.

Compute the median of each group (straighforward) Apply Select recursively on the group medians.

Partition the array around the found median of medians. Result: i If i = k then result. Otherwise: select recursively on the proper side.

(38)

Median of medians

1 groups of five

2 medians

3 recursion for pivot

4 base case

5 pivot (level 1)

6 partition (level 1)

7 median = pivot level 0 . . .

. . . . . . . . .

(39)

How good is this?

≤ m

m

≥ m

Number points left / right of the median of medians (without median group and the rest group) ≥3·(d12dn5ee −2) ≥ 3n10 −6

Second call with maximally d7n10 + 6eelements.

(40)

Analysis

Recursion inequality:

T(n) ≤ T ln

5 m

+T

7n 10 + 6

+d·n.

with some constantd. Claim:

T(n) =O(n).

(41)

Proof

Base clause: choosec large enough such that T(n) ≤ c·n für alle n≤ n0. Induction hypothesis:

T(i) ≤ c·i für alle i < n. Induction step:

T(n) ≤ T ln

5 m

+T

7n 10 + 6

+d·n

= c·ln 5

m +c·

7n 10 + 6

+d·n.

(42)

Proof

Induction step:

T(n) ≤c·ln 5 m

+ c· 7n

10 + 6

+ d·n

≤c· n

5 +c+c· 7n

10 + 6c+c+d·n = 9

10 ·c·n+ 8c+d·n.

Choose c ≥ 80·d and n0 = 91.

T(n) ≤ 72

80 ·c·n+ 8c+ 1

80 ·c·n = c· 73

80n+ 8

| {z }

≤nfürn > n0

≤ c·n.

(43)

Result

Theorem

The k-the element of a sequence of nelements can be found in at most O(n) steps.

(44)

Overview

1. Repeatedly find minimum O(n2) 2. Sorting and choosingA[i] O(nlogn) 3. Quickselect with random pivot O(n)expected 4. Median of Medians (Blum) O(n)worst case

1 4

1 4 1

2

schlecht gute Pivots schlecht

Referenzen

ÄHNLICHE DOKUMENTE

Patients with Liddle's syndrome have hypertension with hypokalaemia and low renin and aldosterone concentrations and respond to inhibitors of epithelial sodium transport such

By aggregating the results of all the tests performed, the result for a single test run of 64 instances could be derived (PHYB.XL). The combination of parallelization and

The parallel searches are carried out by differently configured instances of a tabu search algorithm, which cooperate by the exchange of (best) solutions at the end of defined

Seetõttu nõustus Jumala Sõna täiuslikuks inimeseks saama, jäädes samal ajal täieliku jumaliku armastuse kandjaks, mis oligi Tema inimeseks kehastumise ainuke

In the simple case, each query can be answered either without using any index, in a given answer time, or with using one built index, reducing answer time by a gain specified for

The main features of the proposed evolution- ary local search for the E2AUG problem are: (a) the deterministic preprocessing of problem data, which is able to reduce the number of

The most successful algorithms (w. quality and running time) in practice rely on local search....

For instances in which n points are placed uniformly at random in the unit square and the distances are measured according to the Manhattan metric, Chandra, Karloff, and Tovey show