is there a search plan for the highest safe rung, with q tests in the worst case?
DESCRIPTION
2. HSR(n, k, q). Is there a search plan for the highest safe rung, with q tests in the worst case?. 1. 2. k. n. 2. 1. 0 (safe). Search Plan. A search plan is a tree made up of two kinds of nods. x?. yes. no. x. Test node; do jars break when thrown from rung x?. - PowerPoint PPT PresentationTRANSCRIPT
1 2 k...
21
n
2
...
Is there a search plan for the highest safe rung, with q tests in the worst case?
HSR(n, k, q)
0 (safe)
Search Plan
x?x? noyes
Test node; do jars break
when thrown from rung x?
xx
Conclusion; x is the highest
safe rung
A search plan is a tree made up of two kinds of nods
1 2 k...
2
n
2
...
Is q the worst case minimum number of tests to be performed by a search plan for the highest safe rung?
minHSR(n, k, q)
10 (safe)
2
n
2
...
rungs 1,3,..., n must be sequentially (a.k.a. linearly) tested.
minHSR(n, 1, n)
10 (safe)
Linear Search Plan3 rungs, 3 jars
1?1?
22 33
2?2?
3?3?
00 11
yesno
q = 3
2
n
2
...
binary search is feasible.
minHSR(n, ⌈lg n⌉, lg n)
10 (safe)
Binary Search Plan7 rungs, ⌈lg 7⌉ = 3
jars4?4?
66 77
6?6?
7?7?
44 55
5?5?
22 33
2?2?
3?3?
00 11
1?1?
q = 3yes no
2
n
2
...
If 1<k<lg n,what is the search plan with the minimum number of tests?
1 2 k...
minHSR(n, k, q)
10 (safe)
1 2 K...
21 (safe)
N
2
...
What is the highest rung a jar can be
safely thrown from?
21 (safe)
N
2
...
If K=1,rungs 2,3,..., N must be sequentially tested.
21 (safe)
N
2
...
If K>lg N,binary search is feasible.
21 (safe)
N
2
...
If1<K<lg N,what is the search plan with the minimum number of tests?
Search Plan (a.k.a. Decision
Tree)
x?x? noyes
Test node; do jars break
when thrown from rung x?
xx
Conclusion; x is the highest
safe rung
A search plan is a tree made up of two kinds of nods
Binary Search Plan8 rungs, lg 8 = 3
jars5?5?
77 88
7?7?
8?8?
55 66
6?6?
33 44
3?3?
4?4?
11 22
2?2?
Jar1 breaks
Jar 2 breaks
Jar 3 breaks
Depth = 3 tests
1 2 k...
21 (safe)
n
2
...
•HSR(n, k, q) = ∃ p ∈ SearchPlans: correct(p, n, k, q).
HSR(n, k, q)
What is the Formal Science Wikipedia
(FSW) and How to Use it and Contribute to it?
Introduction to the Formal Science Wikipedia (FSW)
Agenda
•What is FSW?
•How to use FSW?
•How to contribute to FSW?
What is FSW?
FSW Wikipedia
Lab(parameterized
logical statement)
Page(informal text)
Develop an Avatar Edit Pages
vs.
Code the lab Create a page
How to use FSW?
Investigation Cycle
How to contribute to FSW?
(as a user)
3 Toy Labs
Ineq(c ∈ [0,2], x ∈ [0,1], y ∈ [0,1]) := x + y > c
Given c ∈ [0,2], x ∈ [0,1] and y ∈ [0,1], does the inequality x+y > c hold?
AxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]: EyIneq(c, x)
Given c ∈ [0,2], does every x ∈ [0,1] make EyIneq(c, x) hold?EyIneq(c ∈ [0,2], x ∈ [0,1]) := ∃y ∈ [0,1]: Ineq(c, x, y)
Given c ∈ [0,2] and x ∈ [0,1], is there y ∈ [0,1] that makes Ineq(c, x, y) hold?
3 Toy LabsCompact Notation
AxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]:EyIneq: ∃y ∈ [0,1]:Ineq: x + y > c
Given c ∈ [0,2], does every x ∈ [0,1] has a y ∈ [0,1]such that x+y>c .
Developing Avatars
Implement an interface derived from the logical
statement.
An Avatar for the “Toy” Lab
interface AxEyIneqAvatar {/** Given c ∈ [0,2] and x ∈ [0,1], which y ∈ [0,1] makes Ineq(c, x, y) hold? */double move (EyIneq dummy, double c, double x);
/** Given c ∈ [0,2], which x ∈ [0,1] makes EyIneq(c, x) NOT hold? */double move (AxEyIneq dummy, double c);
/** Given c ∈ [0,2], do all x ∈ [0,1] make EyIneq(c, x) hold? */Position position (AxEyIneq dummy, double c);}
33
An Avatar for the “Toy” Lab
AxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]:EyIneq: ∃y ∈ [0,1]:Ineq: x + y > c
/** Given c ∈ [0,2] and x ∈ [0,1], which y ∈ [0,1] makes Ineq(c, x, y) hold? */double move (EyIneq dummy, double c, double x){
return 1;}
EyIneq: ∃y ∈ [0,1]:Ineq: x + y > c
Best strategy: y as big as possible
34
An Avatar for the “Toy” Lab
AxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]:EyIneq: ∃y ∈ [0,1]:Ineq: x + y > c
/** Given c ∈ [0,2], which x ∈ [0,1] makes EyIneq(c, x) NOT hold? */double move (AxEyIneq dummy, double c){
return 0;}
∀x ∈ [0,1]:EyIneq
Best strategy: x as small as possible
35
An Avatar for the “Toy” Lab
/** Given c ∈ [0,2], do all x ∈ [0,1] make EyIneq(c, x) hold? */Position position (AxEyIneq dummy, double c){return c<1?Position.VERIFIER:Position.FALSIFIER;}
AxEyIneq(c) is true for c ∈ [0,1) and false for c ∈ [1,2]
AxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]:EyIneq: ∃y ∈ [0,1]:Ineq: x + y > c
∀x ∈ [0,1]:EyIneq
How Are Avatars Used?
37
How to contribute to FSW?
(as a user)
Coding Labs
Develop a set of nested Java classes
Coding the “Toy” Lab
AxEyIneq(c) :=
public class AxEyIneq {@Param double c;
}
Coding the “Toy” Lab
AxEyIneq(c) := ∀x
public class AxEyIneq implements IForall{@Param double c;double x;
}
Coding the “Toy” Lab
AxEyIneq(c) := ∀x :EyIneq: ∃y
public class AxEyIneq implements IForall{@Param double c;double x;public class EyIneq implements IExists{
double y;
}}
Coding the “Toy” Lab
AxEyIneq(c) := ∀x :EyIneq: ∃y : Ineq: x + y > c
public class AxEyIneq implements IForall{@Param double c;double x;public class EyIneq implements IExists{
double y;public class Ineq implements IPred{
public boolean execute() {return x+y>c;
}}
}}
Coding the “Toy” Lab
AxEyIneq(c) := ∀x ∈ [0,1]:EyIneq: ∃y : Ineq: x + y > c
public class AxEyIneq implements IForall{@Param double c;double x;public boolean checkecProvidedValue() {
return 0<=x && x<=1;}
public class EyIneq implements IExists{double y;public class Ineq implements IPred{
public boolean execute() {return x+y>c;
}}
}}
∈ [0,1]
Coding the “Toy” LabAxEyIneq(c ∈ [0,2]) := ∀x ∈ [0,1]:EyIneq: ∃y ∈
[0,1]:Ineq: x + y > cpublic class AxEyIneq implements IForall{@Param double c;double x;public class EyIneq implements IExists{
double y;public class Ineq implements IPred{
public boolean execute() {
return x+y>c;}
}public boolean
checkecProvidedValue() {return 0<=y && y<=1;
}}public boolean checkecProvidedValue() {
return 0<=x && x<=1;}public AxEyIneq(double c) {
if( c<0 || c>3 ){throw new
RuntimeException();}this.c = c;
}}
∈ [0,2]