-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path二分探索.html
80 lines (74 loc) · 19.8 KB
/
二分探索.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<title>二分探索</title>
<p>二分探索 (binary search)は、全順序集合$S$に対し単調な関数$f : S \rightarrow \{0,1\}$が与えられた時、$f(x) = 1$となる最小の$x$を見つける、あるいは近似するアルゴリズムである。</p>
<p>(だれか加筆してください)</p>
<pre>
・探索対象
f(x) >= [F_TERGET]となる最小値[x]を調べる
xは整数としてみる。
・目的関数f(x)が満たす条件
f(x)は単調増加関数。(_)
f(x) <= f(x+|α|)
・初期区間の区間端が満たす条件
[NG,OK] (NG<=OK)
//[NG]の設定
NG = 0;//適当に入れてる
/*//やったことない
NG = 0;
sub = -1;//sub<0 減少方向に持っていく
while( f(NG) >= F_TERGET ){
NG += sub;//オバフロ
sub *= 2;//オバフロ
}
*/
//f(NG) < F_TERGET が成立する値[NG]
//f(NG) >= F_TERGET が成立しない値[NG]
/*
f(-inf)>=F_TERGET
の場合はどうなるんだろうね?
*/
//[OK]の設定
OK = 1;
while( f(OK) < F_TERGET ){
OK *= 2;//オーバーフロー
}
/*//区間が負の場合に出会ったことが無い
OK = 1;
add = 1;//add>0増加方向に持っていく
while( f(OK) < F_TERGET ){
OK += add;//オーバーフロー
add *= 2;//オーバーフロー
}
*/
//f(OK) >= F_TERGET が成立する値[OK]
//f(OK) < F_TERGET が成立しない値[OK]
・1step
while(OK-NG>1 /*続行条件*/)
{
//中央値の取得
mid = (OK+NG)/2;//オーバーフローに注意NG+(OK-NG)/2
F_mid = f(mid);//fの計算オーダー
//判定
if( F_mid < F_TERGET ){
//区間[NG,mid]上にF_TERGETはない。f([NG,mid]) < F_TERGET
//f(x)<[F_TERGET]が成立する最大値[x]は、[mid]以上
//f(x)>=[F_TERGET]が成立しない最大値[x]は、[mid]以上
NG = mid;
}
else{//F_mid >= F_TERGET;
//区間[mid,OK]上にF_TERGETはある。f([mid,OK]) >= F_TERGET
//f(x)>=[F_mid]が成立する最小値[x]は、[mid]以下
OK = mid;
}
/*
調べる区間が[NG,OK]から
[NG,mid]又は[mid,OK]に変更される。
この1stepで区間は半分ぐらいになる。
*/
}
答えは[OK]
</pre>
<img src="
data:image/png;base64,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
" />