optimal solution minimizing number of $3’s has at most one $3
description
Transcript of optimal solution minimizing number of $3’s has at most one $3
optimal solution minimizing number of $3’shas at most one $3 ($3 + $3 $5 + $1)
has at most two $1’s ($1+$1+$1 $3)
has value at most $4 in $1 and $3has the same number of $5 as greedy sol
yes
no
8 = 4 + 48 = 6 + 1 + 1
yes
optimal solution minimizing number of $4’shas at most one $4 ($4 + $4 $7 + $1)
has at most three $1’s ($1+$1+$1+$1 $4)
has value at most $6 in $1 and $4has the same number of $7 as greedy sol
MAIN IDEA: if there is a counterexample then there is a small counterexample
1<A<B
LEMMA: optimal solution for the smallest counterexample doesn’t contain B
E = O1 + OA * A + OB * B E = G1 + GA * A + GB * B
E-B = O1 + OA * A + (OB-1)*BE-B = G1 + GA * A + (GB-1)*B
LEMMA: optimal solution for the smallest counterexample doesn’t contain B copies of A (A+A+...+A B+B+...+B) A copies of 1 (1+1+...+1 A)
E (B-1)*A + (A-1) = A*B-1
THEOREM: if there is a counterexample thenthere is on with E A*B-1
MAIN IDEA: if there is a counterexample then there is a small counterexample
for all C AB-1 find optimum (dynamic programming) check if agrees with greedy
LEMMA: greedy solution for the smallest counterexample doesn’t contain A
E = O1 + OA * A E = G1 + GA * A + GB * B
E-A = O1 + (OA-1)* A E-A = G1 + (GA-1)* A + GB*B
LEMMA: optimal solution for the smallest counterexample doesn’t contain 1
E = O1 + OA * A E = G1 + GB * B
E-1 = (O1-1)+ OA * A E-1 = (G1-1)+ + GB * B
LEMMA: If there exists a counterexample,then there exists a counterexample E = OA * A E = G1 + GB * Bwith OA <B and G1<A
LEMMA: If there exists a counterexample,then there exists a counterexample E = OA * A E = G1 + GB * Bwith OA <B and G1<A
with GB = 1
polynomial-time solution
check if P= B/AA is a counterexample
check if P= B/AA is a counterexample
6 = 5 + 1 = 2*3 yes
8 = 6 + 1 + 1 = 2*4 no
8 = 7 +1 = 2*4 yes
each measurement has 3 outcomes3 measurements 27 outcomes
N=14 2*14 = 28 outcomes
S G S SG G
1/3 1/3 1/3
2/3
M[i,j] = min {P[j] + min M[k,j] + M[i-k,j]
P[i] + min M[i,k] + M[i,j-k]
1ki-1
1kj-1
K[i,s] K[i-1,s]if sW[i] and K[i-1,s-W[i]]+V[i]>K[i,s] then K[i,s] K[i-1,s-W[i]]+V[i]
M(m,n)=m * n - 1
proof: induction on m+n
base case m+n=2 m=n=1 ok
m * n m1 * n and m2 * n, by IH (m1*n – 1) + (m2 * n – 1 ) + 1 = m * n -1
binary search tree
5
4 7
2
1 3
depth running time
INSERTDELETESEARCH
B-tree
5
4 7
2
1 3
branching factor > 2 * makes balancing easier * efficient for “burst memory” (HDD)
uniform depth
INSERTDELETESEARCH
B-treebranching factor > 2 * makes balancing easier * efficient for “burst memory” (HDD)
. . .
. . .
103
106
109
B-tree
every node other than the root has T-1 keys(i.e., T children)
every node has 2T-1 keys(i.e., 2T children)
if T=2 the number of children is 2,3, or 4
B-tree - insert
10 20 30
23 24 29
25 27
INSERT(T,26)
B-tree - insert
10 20 30
23 24 29
25 27
INSERT(T,26)
B-tree - insert
10 20 30
23 24 29
25 27
INSERT(T,26)
B-tree - insert
10 20 30
23 24 29
25 26
INSERT(T,26)
27
B-tree - insert
10 20 30
23 24 29
25 26
INSERT(T,28)
27
full leaf
B-tree - insert
10 20 30
23 24 29
25 26
INSERT(T,28)
27
full leaf
B-tree - insert
10 20 30
23 24 29
25 26
INSERT(T,28)
27
full leaf
B-tree - insert
10
20
30
23 24 29
25 26
INSERT(T,28)
27
full leaf
B-tree - insert
10
20
30
23
24
29
25 26
INSERT(T,28)
27
full leaf
B-tree - insert
10
20
30
23
24
29
25
26
INSERT(T,28)
27
full leaf
B-tree - insert
10
20
30
23
24
29
25
26
INSERT(T,28)
27
full leaf
28
B-tree - insert
10 20 30
23 24 29
25 27
INSERT(T,26)
split proactively
B-tree - insert
10
20
30
23 24 29
25 27
INSERT(T,26)
split proactively
B-tree - insert
10
20
30
23 24 29
25 27
INSERT(T,26)
split proactively
B-tree - insert
10
20
30
23
24
29
25 27
INSERT(T,26)
split proactively
B-tree - insert
10
20
30
23
24
29
25 27
INSERT(T,26)
split proactively
B-tree - insert
10
20
30
23
24
29
25
INSERT(T,26)
split proactively
26 27
B-tree - insert
10
20
30
23
24
29
25
INSERT(T,28)
split proactively
26 27
B-tree - insert
10
20
30
23
24
29
25
INSERT(T,28)
split proactively
26
27 28
B-tree - insert
2T-1 keys T-1 and T-1 keys
every node other than the root has T-1 keys(i.e., T children)
every node has 2T-1 keys(i.e., 2T children)
uniform depth – the only operation increasing depth is splitting the root
B-tree - delete
10
20
30
23
24
29
25
26
27 28
DELETE(T,28)
B-tree - delete
10
20
30
23
24
29
25
26
27
DELETE(T,28)
leaf deletion
B-tree - delete
10
20
30
23
24
29
25
26
27
DELETE(T,27)
leaf deletion
?