検索
Close this search box.
NOTE

黄金分割探索:単峰関数の最適化と三分探索との違い

目次

記事情報

メール
Xで共有

単峰関数の最小点

\(a<b\)を満たす実数\(a,b\in \mathbb{R} \)を端点とする有界閉区間上に定義された1変数関数\begin{equation*}f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \end{equation*}が与えられているものとします。さらに、\(f\)の定義域上にある点\(c\in \left[ a,b\right] \)が存在して、\begin{eqnarray*}&&\left( a\right) \ f\text{は}\left[ a,c\right] \text{上において狭義単調減少である} \\
&&\left( b\right) \ f\text{は}\left[ c,b\right] \text{上において狭義単調増加である}
\end{eqnarray*}がともに成り立つものとします。このような性質を満たす関数を単峰関数(unimodal function)と呼びます。この場合、点\(c\)は\(f\)の唯一の最小点であり、\(f\left( c\right) \)は\(f\)の最小値です。つまり、\begin{equation*}\min_{x\in \left[ a,b\right] }f\left( x\right) =f\left( c\right)
\end{equation*}が成り立ちます。

関数\(f\)が単峰関数であることは分かっているものの、最小点\(c\)が判明していない状況を想定します。さらに、関数\(f\)は微分可能であるとは限らないものとします。つまり、最小点\(c\)を具体的に特定する上で微分を利用できないということです。この場合、\(\left[ a,b\right] \)上の点\(x\)に対して関数\(f\)が定める値\(f\left( x\right) \)どうしを比較しながら最小点\(c\)を見つける必要があります。

例(最小点を持つ単峰関数)
関数\(f:\mathbb{R} \supset \left[ 0,6\right] \rightarrow \mathbb{R} \)はそれぞれの\(x\in \left[ 0,6\right] \)に対して、\begin{equation*}f\left( x\right) =\left( x-2\right) ^{2}
\end{equation*}を定めるものとします。この関数は\(\left[ 0,2\right] \)上において狭義単調減少であり、\(\left[ 2,6\right] \)上において狭義単調増加です。したがって\(f\)は単峰関数であるとともに、最小点は、\begin{equation*}c=2
\end{equation*}であり、最小値は、\begin{equation*}
\min_{x\in \left[ 0,6\right] }f\left( x\right) =f\left( 2\right) =0
\end{equation*}です。

例(最大点を持つ単峰関数)
\(a<b\)を満たす実数\(a,b\in \mathbb{R} \)を端点とする有界閉区間上に定義された1変数関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)に対してある点\(c\in \left[ a,b\right] \)が存在して、\begin{eqnarray*}&&\left( a\right) \ f\text{は}\left[ a,c\right] \text{上において狭義単調増加である} \\
&&\left( b\right) \ f\text{は}\left[ c,b\right] \text{上において狭義単調減少である}
\end{eqnarray*}がともに成り立つ場合にも、このような関数を単峰関数と呼びます。この場合、点\(c\)は\(f\)の唯一の最大点であり、\(f\left( c\right) \)は\(f\)の最大値です。つまり、\begin{equation*}\max_{x\in \left[ a,b\right] }f\left( x\right) =f\left( c\right)
\end{equation*}が成り立ちます。以降では最小点を持つ単峰関数を議論の対象としますが、最大点を持つ単峰関数に関しても同様の議論が成り立ちます。

 

黄金分割探索の基本戦略

単峰関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)の最小点を特定しようとしている状況を想定します。

図:黄金分割探索
図:黄金分割探索

まずは、\(0<\rho <\frac{1}{2}\)を満たす何らかの値\(\rho \in \mathbb{R} \)を設定した上で、区間\(\left[ a,b\right] \)を以下の割合\begin{equation*}\rho :1-2\rho :\rho
\end{equation*}で三分する2つの点\(x_{1},x_{2}\in \left[ a,b\right] \)を特定し(上図)、それらの点に対して\(f\)が定める値\(f\left( x_{1}\right) ,f\left(x_{2}\right) \)どうしを比較します。\(\rho \)の値をどのように定めるべきかは後ほど議論します。いずれにせよ、\begin{eqnarray*}x_{1} &=&a+\rho \left( b-a\right) \\
x_{2} &=&a+\left( 1-\rho \right) \left( b-a\right)
\end{eqnarray*}であるため、\begin{eqnarray*}
f\left( x_{1}\right) &=&f\left( a+\rho \left( b-a\right) \right) \\
f\left( x_{2}\right) &=&f\left( a+\left( 1-\rho \right) \left( b-a\right)
\right)
\end{eqnarray*}の大小を比較します。その結果、以下の2つの場合が起こり得ます。

1つ目のケースは、\begin{equation*}
f\left( x_{1}\right) <f\left( x_{2}\right)
\end{equation*}である場合です。つまり、変数\(x\)の値が\(x_{1}\)から\(x_{2}\)へ増加すると\(f\left( x\right) \)の値は増加しますが、単峰性の仮定より、この場合には\(x\)が\(x_{2}\)を出発点に大きくなると\(f\left( x\right) \)の値は大きくなり続けます。したがって、\(f\)の最小点は\(\left[ x_{2},b\right] \)上に存在しないため、\(\left[ x_{2},b\right] \)上の点を最小点の候補から外すことができます。

2つ目のケースは、\begin{equation*}
f\left( x_{1}\right) \geq f\left( x_{2}\right)
\end{equation*}である場合です。つまり、変数\(x\)の値が\(x_{1}\)から\(x_{2}\)へ増加すると\(f\left( x\right) \)の値は減少しますが、単峰性の仮定より、この場合には\(x\)が\(x_{1}\)を出発点に小さくなると\(f\left( x\right) \)の値は大きくなり続けます。したがって、\(f\)の最小点は\(\left[ a,x_{1}\right] \)上に存在しないため、\(\left[ a,x_{1}\right] \)上の点を最小点の候補から外すことができます。

結論をまとめると、\begin{eqnarray*}
f\left( x_{1}\right) &<&f\left( x_{2}\right) \Rightarrow \text{最小点は}\left[ a,x_{2}\right] \text{上にある} \\
f\left( x_{1}\right) &\geq &f\left( x_{2}\right) \Rightarrow \text{最小点は}\left[ x_{1},b\right] \text{上にある}
\end{eqnarray*}となります。つまり、この1回の比較により、探索範囲を\(1-\rho \)に絞り込めるということです。

続いて、残された探索範囲である区間を対象に、同様のプロセスを繰り返します。つまり、残された区間を\(\rho :1-2\rho :\rho \)の割合で三分する2つの点を特定し、それらの点に対して\(f\)が定める値を比較し、\(f\)の最小点が存在する区間を絞り込むということです。ただし、\(\rho \)の値を上手く設定することにより、先に利用した点を再利用できます。具体的には以下の通りです。

最初のステップにおいて\(f\left( x_{1}\right) <f\left( x_{2}\right) \)であった状況を想定します。この場合、探索範囲は\(\left[ a,b\right] \)から\(\left[ a,x_{2}\right] \)へ絞られます。その上で、新たな区間\(\left[ a,x_{2}\right] \)を再び\(\rho :1-2\rho :\rho \)の割合で三分する2つの点\(x_{1}^{\prime },x_{2}^{\prime }\in \left[ a,x_{2}\right] \)を特定します。\(x_{1}^{\prime}<x_{2}^{\prime }\)です。ただし、\(a<x_{1}<x_{2}\)であるため、先に特定した点\(x_{1}\)を再利用できれば関数評価を1回節約できるため効率的です。\(\rho <\frac{1}{2}\)ゆえに点\(x_{1}\)は新たな探索単位\(\left[ a,x_{2}\right] \)の中点よりも右側にあるため、\(x_{1}^{\prime }\)ではなく\(x_{2}^{\prime }\)として\(x_{1}\)を再利用することになります。このような省力化を実現するためには、\(\rho \)をどの水準に定めておけばよいでしょうか。

図:黄金分割探索
図:黄金分割探索

2つの点\(x_{1}^{\prime },x_{2}^{\prime }\in \left[ a,x_{2}\right] \)が区間\(\left[ a,x_{2}\right] \)を\(\rho:1-2\rho :\rho \)の割合で三分する状況を想定していますが、点\(x_{1}\)を再利用して\(x_{2}^{\prime }=x_{1}\)とするため、2つの点\(x_{1}^{\prime },x_{1}\)が\(\left[ a,x_{2}\right] \)を\(\rho :1-2\rho :\rho \)の割合で三分することになります。上図より、\begin{equation*}\left[ a,x_{1}\right] \text{の長さ}:\left[ x_{1},x_{2}\right] \text{の長さ}=\left[ a,x_{2}^{\prime }\right] \text{の長さ}:\left[ x_{2}^{\prime },x_{2}\right] \text{の長さ}
\end{equation*}すなわち、\begin{equation*}
\rho :1-2\rho =1-\rho :\rho
\end{equation*}が成り立つため、\begin{equation*}
\rho ^{2}=\left( 1-2\rho \right) \left( 1-\rho \right)
\end{equation*}すなわち、\begin{equation*}
\rho ^{2}-3\rho +1=0
\end{equation*}を得ます。これを\(\rho \)について解くことにより、\begin{equation*}\rho =\frac{3\pm \sqrt{5}}{2}
\end{equation*}を得ますが、\(0<\rho <\frac{1}{2}\)であるため、\begin{equation*}\rho =\frac{3-\sqrt{5}}{2}\approx 0.382
\end{equation*}を得ます。以上の値\(\rho \)を踏まえた上で、2つの点\(x_{1}^{\prime },x_{2}^{\prime }\left( =x_{1}\right) \)が\(\left[ a,x_{2}\right] \)を\(\rho :1-2\rho :\rho \)の割合で三分するように定めるため、\begin{eqnarray*}x_{1}^{\prime } &=&a+\rho \left( x_{2}-a\right) \\
x_{2}^{\prime } &=&x_{1}
\end{eqnarray*}となります。その上で、これらの点に対して\(f\)が定める値\(f\left(x_{1}^{\prime }\right) ,f\left( x_{2}^{\prime }\right) \)どうしを比較することにより、\begin{eqnarray*}f\left( x_{1}^{\prime }\right) &<&f\left( x_{2}^{\prime }\right)
\Rightarrow \text{最小点は}\left[ a,x_{2}^{\prime }\right] \text{上にある} \\
f\left( x_{1}^{\prime }\right) &\geq &f\left( x_{2}^{\prime }\right)
\Rightarrow \text{最小点は}\left[ x_{1}^{\prime
},x_{2}\right] \text{上にある}
\end{eqnarray*}となり、探索範囲が\(1-\rho \)に絞り込まれます。

最初のステップにおいて\(f\left( x_{1}\right) \geq f\left( x_{2}\right) \)であった場合についても同様に考えます。この場合、探索範囲は\(\left[ a,b\right] \)から\(\left[ x_{1},b\right] \)へ絞られます。その上で、新たな区間\(\left[ x_{1},b\right] \)を再び\(\rho :1-2\rho :\rho \)の割合で三分する2つの点\(x_{1}^{\prime },x_{2}^{\prime }\in \left[ x_{1},b\right] \)を特定します。\(x_{1}^{\prime }<x_{2}^{\prime }\)です。ただし、\(x_{1}<x_{2}<b\)であるため、先に特定した点\(x_{2}\)を再利用します。\(\rho <\frac{1}{2}\)ゆえに点\(x_{2}\)は新たな探索単位\(\left[ x_{1},b\right] \)の中点よりも左側にあるため、\(x_{2}^{\prime }\)ではなく\(x_{1}^{\prime }\)として\(x_{2}\)を再利用することになります。先に求めた値\(\rho \)をもとに、2つの点\(x_{1}^{\prime }\left(=x_{2}\right) ,x_{2}^{\prime }\)が\(\left[ x_{1},b\right] \)を\(\rho:1-2\rho :\rho \)の割合で三分するように定めるため、\begin{eqnarray*}x_{1}^{\prime } &=&x_{2} \\
x_{2}^{\prime } &=&x_{1}+\left( 1-\rho \right) \left( b-x_{1}\right)
\end{eqnarray*}となります。その上で、これらの点に対して\(f\)が定める値\(f\left(x_{1}^{\prime }\right) ,f\left( x_{2}^{\prime }\right) \)どうしを比較することにより、\begin{eqnarray*}f\left( x_{1}^{\prime }\right) &<&f\left( x_{2}^{\prime }\right)
\Rightarrow \text{最小点は}\left[ x_{1},x_{2}^{\prime }\right] \text{上にある} \\
f\left( x_{1}^{\prime }\right) &\geq &f\left( x_{2}^{\prime }\right)
\Rightarrow \text{最小点は}\left[ x_{1}^{\prime },b\right] \text{上にある}
\end{eqnarray*}となり、探索範囲が\(1-\rho \)に絞り込まれます。

同様のプロセスを\(k\in \mathbb{N} \)回繰り返すことにより、最小点が存在する区間の長さが、\begin{equation*}\left( b-a\right) \left( 1-\rho \right) ^{k}
\end{equation*}にまで絞り込まれます。ただし、\begin{equation*}
1-\rho \approx 0.61803
\end{equation*}です。つまり、探索範囲は指数関数的に縮小するということです。最終的には、\begin{equation*}
\lim_{k\rightarrow +\infty }\left( b-a\right) \left( 1-\rho \right) ^{k}=0
\end{equation*}となるため、最小点だけが残ります。このような探索法を黄金分割探索(Golden section search)と呼びます。

黄金比(golden ratio)とは、\begin{equation*}
1:\frac{1+\sqrt{5}}{2}
\end{equation*}という比です。さらに、黄金比を構成する値\begin{equation*}
\varphi =\frac{1+\sqrt{5}}{2}
\end{equation*}を黄金数(golden number)と呼びます。一方、黄金分割探索に登場する値\begin{equation*}
\rho =\frac{3-\sqrt{5}}{2}
\end{equation*}に関して、\begin{eqnarray*}
1-\rho &=&1-\frac{3-\sqrt{5}}{2} \\
&=&\frac{1+\sqrt{5}}{2}
\end{eqnarray*}が成り立ちますが、これは黄金数\(\varphi \)と一致します。以上が黄金分割探索という名称の由来です。

例(黄金分割探索)
関数\(f:\mathbb{R} \supset \left[ 0,6\right] \rightarrow \mathbb{R} \)はそれぞれの\(x\in \left[ 0,6\right] \)に対して、\begin{equation*}f\left( x\right) =\left( x-2\right) ^{2}
\end{equation*}を定めるものとします。先に示したように\(f\)は単峰関数であるとともに、最小点は\(c=2\)です。同じことを黄金分割探索を用いて確認します。ただし、\begin{equation*}\rho =\frac{3-\sqrt{5}}{2}\approx 0.382
\end{equation*}です。区間\(\left[ 0,6\right] \)の三分点は、\begin{eqnarray*}x_{1} &=&0+\rho \cdot 6=9-3\sqrt{5} \\
x_{2} &=&0+\left( 1-\rho \right) 6=3\sqrt{5}-3
\end{eqnarray*}であるため\begin{eqnarray*}
f\left( x_{1}\right) &=&f\left( 9-3\sqrt{5}\right) \approx 0.085 \\
f\left( x_{2}\right) &=&f\left( 3\sqrt{5}-3\right) \approx 2.918
\end{eqnarray*}を得ます。したがって、\begin{equation*}
f\left( x_{1}\right) <f\left( x_{2}\right)
\end{equation*}であり、ゆえに探索範囲は\(\left[ 0,x_{2}\right] \)すなわち\(\left[ 0,3\sqrt{5}-3\right] \)に絞られます。新たな区間\(\left[ 0,3\sqrt{5}-3\right] \)の三分点は、\begin{eqnarray*}x_{1}^{\prime } &=&0+\rho \left( 3\sqrt{5}-3\right) =6\sqrt{5}-12 \\
x_{2}^{\prime } &=&x_{1}=9-3\sqrt{5}
\end{eqnarray*}であるため、\begin{eqnarray*}
f\left( x_{1}^{\prime }\right) &=&f\left( 6\sqrt{5}-12\right) \approx 0.340
\\
f\left( x_{2}^{\prime }\right) &=&f\left( x_{1}\right) \approx 0.085
\end{eqnarray*}を得ます。したがって、\begin{equation*}
f\left( x_{1}^{\prime }\right) >f\left( x_{2}^{\prime }\right)
\end{equation*}であり、ゆえに探索範囲は\(\left[ x_{1}^{\prime },3\sqrt{5}-3\right] \)すなわち\(\left[ 6\sqrt{5}-12,3\sqrt{5}-3\right] \)に絞られます。新たな区間\(\left[ 6\sqrt{5}-12,3\sqrt{5}-3\right] \)の三分点は、\begin{eqnarray*}x_{1}^{\prime \prime } &=&x_{2}^{\prime }=x_{1}=9-3\sqrt{5} \\
x_{2}^{\prime \prime } &=&\left( 6\sqrt{5}-12\right) +\left( 1-\rho \right) \left[ \left( 3\sqrt{5}-3\right) -\left( 6\sqrt{5}-12\right) \right] =12\sqrt{5}-24
\end{eqnarray*}であるため、\begin{eqnarray*}
f\left( x_{1}^{\prime \prime }\right) &=&f\left( x_{2}^{\prime }\right)
=f\left( x_{1}\right) \approx 0.085 \\
f\left( x_{2}^{\prime \prime }\right) &=&f\left( 12\sqrt{5}-24\right)
\approx 0.693
\end{eqnarray*}を得ます。\begin{equation*}
f\left( x_{1}^{\prime \prime }\right) <f\left( x_{2}^{\prime \prime }\right)
\end{equation*}であり、ゆえに探索範囲は\(\left[ 6\sqrt{5}-12,x_{2}^{\prime \prime }\right] \)すなわち\(\left[ 6\sqrt{5}-12,12\sqrt{5}-24\right] \)に絞られます。以上のプロセスによって、探索範囲は、\begin{equation*}\left[ 0,6\right] \rightarrow \left[ 0,3\sqrt{5}-3\right] \rightarrow \left[
6\sqrt{5}-12,3\sqrt{5}-3\right] \rightarrow \left[ 6\sqrt{5}-12,12\sqrt{5}-24\right] \end{equation*}へと絞られました。各ステップにおいて探索範囲は\(1-\rho \)に縮小していますが、真の最小点\(c=2\)はいずれの探索範囲にも含まれています。以降も同様のプロセスを繰り返します。

 

黄金分割探索の定式化

単峰関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)の最小点を特定しようとしている状況を想定します。黄金分割探索は以下のように定式化されます。ただし、\begin{equation*}\rho =\frac{3-\sqrt{5}}{2}\approx 0.382
\end{equation*}です。

  1. ステップ\(0\):当初の探索範囲を、\begin{equation*}\left[ a_{0},b_{0}\right] =\left[ a,b\right] \end{equation*}で表記する。この区間の三分点は、\begin{equation*}
    \left( x_{0}^{\left( 1\right) },x_{0}^{\left( 2\right) }\right) =\left(
    a_{0}+\rho \left( b_{0}-a_{0}\right) ,a_{0}+\left( 1-\rho \right) \left(
    b_{0}-a_{0}\right) \right)
    \end{equation*}である。その上で、新たな探索範囲\(\left[ a_{1},b_{1}\right] \)を、\begin{equation*}\left[ a_{1},b_{1}\right] =\left\{
    \begin{array}{cl}
    \left[ a_{0},x_{0}^{\left( 2\right) }\right] & \left( if\ f\left(
    x_{0}^{\left( 1\right) }\right) <f\left( x_{0}^{\left( 2\right) }\right)
    \right) \\
    \left[ x_{0}^{\left( 1\right) },b_{0}\right] & \left( if\ f\left(
    x_{0}^{\left( 1\right) }\right) \geq f\left( x_{0}^{\left( 2\right) }\right)
    \right)
    \end{array}\right.
    \end{equation*}と定める。
  2. ステップ\(1\):探索範囲\(\left[ a_{1},b_{1}\right] \)の三分点は、\begin{equation*}\left( x_{1}^{\left( 1\right) },x_{1}^{\left( 2\right) }\right) =\left\{
    \begin{array}{cl}
    \left( a_{1}+\rho \left( b_{1}-a_{1}\right) ,x_{0}^{\left( 1\right) }\right)
    & \left( if\ f\left( x_{0}^{\left( 1\right) }\right) <f\left( x_{0}^{\left(
    2\right) }\right) \right) \\
    \left( x_{0}^{\left( 2\right) },a_{1}+\left( 1-\rho \right) \left(
    b_{1}-a_{1}\right) \right) & \left( if\ f\left( x_{0}^{\left( 1\right)
    }\right) \geq f\left( x_{0}^{\left( 2\right) }\right) \right)
    \end{array}\right.
    \end{equation*}である。その上で、新たな探索範囲\(\left[ a_{2},b_{2}\right] \)を、\begin{equation*}\left[ a_{2},b_{2}\right] =\left\{
    \begin{array}{cl}
    \left[ a_{1},x_{1}^{\left( 2\right) }\right] & \left( if\ f\left(
    x_{1}^{\left( 1\right) }\right) <f\left( x_{1}^{\left( 2\right) }\right)
    \right) \\
    \left[ x_{1}^{\left( 1\right) },b_{1}\right] & \left( if\ f\left(
    x_{1}^{\left( 1\right) }\right) \geq f\left( x_{1}^{\left( 2\right) }\right)
    \right)
    \end{array}\right.
    \end{equation*}と定める。
  3. ステップ\(k\):探索範囲\(\left[ a_{k},b_{k}\right] \)の三分点は、\begin{equation*}\left( x_{k}^{\left( 1\right) },x_{k}^{\left( 2\right) }\right) =\left\{
    \begin{array}{cl}
    \left( a_{k}+\rho \left( b_{k}-a_{k}\right) ,x_{k-1}^{\left( 1\right)
    }\right) & \left( if\ f\left( x_{k-1}^{\left( 1\right) }\right) <f\left(
    x_{k-1}^{\left( 2\right) }\right) \right) \\
    \left( x_{k-1}^{\left( 2\right) },a_{k}+\left( 1-\rho \right) \left(
    b_{k}-a_{k}\right) \right) & \left( if\ f\left( x_{k-1}^{\left( 1\right)
    }\right) \geq f\left( x_{k-1}^{\left( 2\right) }\right) \right)
    \end{array}\right.
    \end{equation*}である。その上で、新たな探索範囲\(\left[a_{k+1},b_{k+1}\right] \)を、\begin{equation*}\left[ a_{k+1},b_{k+1}\right] =\left\{
    \begin{array}{cl}
    \left[ a_{k},x_{k}^{\left( 2\right) }\right] & \left( if\ f\left(
    x_{k}^{\left( 1\right) }\right) <f\left( x_{k}^{\left( 2\right) }\right)
    \right) \\
    \left[ x_{k}^{\left( 1\right) },b_{k}\right] & \left( if\ f\left(
    x_{k}^{\left( 1\right) }\right) \geq f\left( x_{k}^{\left( 2\right) }\right)
    \right)
    \end{array}\right.
    \end{equation*}と定める。
  4. 先の議論から明らかになったように、黄金分割探索の任意のステップにおいて、最小点は常に探索範囲内に残ります。

    命題(黄金分割探索の区間保持)
    単峰関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)の最小点を\(c\in \left[ a,b\right] \)で表記する。黄金探索のステップ\(k\in \mathbb{N} \)における探索範囲を\(\left[ a_{k},b_{k}\right] \subset \left[ a,b\right] \)で表記する場合、\begin{equation*}\forall k\in \mathbb{N} :c\in \left[ a_{k},b_{k}\right] \end{equation*}が成り立つ。

    証明

    プレミアム会員専用コンテンツです
    ログイン】【会員登録

    黄金分割探索によって得られる極限点は最小点と一致します。

    命題(黄金分割探索の結果は最小点と一致する)
    単峰関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)の最小点を\(c\in \left[ a,b\right] \)で表記する。黄金分割探索のステップ\(k\in \mathbb{N} \)における探索範囲を\(\left[ a_{k},b_{k}\right] \subset \left[ a,b\right] \)で表記する場合、\begin{equation*}\bigcap_{k=0}^{+\infty }\left[ a_{k},b_{k}\right] =\left\{ c\right\}
    \end{equation*}であるとともに、\begin{equation*}
    \lim_{k\rightarrow +\infty }a_{k}=\lim_{k\rightarrow +\infty }b_{k}=c
    \end{equation*}が成り立つ。

    証明

    プレミアム会員専用コンテンツです
    ログイン】【会員登録

     

    所与の誤差以内で真の最小値の近似値を実現する回数

    黄金分割探索のプロセスを限りなく繰り返せば、最終的に得られる極限点が最小点と一致することが明らかになりました。ただ、実際にプロセスを無限回繰り返すことはできません。では、真の最小点\(c\)との誤差を事前に設定した場合、プロセスを何回繰り返せば、誤差の範囲内に収まる値を得られるのでしょうか。

    黄金分割探索のステップ\(k\in \mathbb{N} \)における探索範囲を\(\left[ a_{k},b_{k}\right] \subset \left[ a,b\right] \)で表記し、さらにその中点を、\begin{equation*}m_{k}=\frac{a_{k}+b_{k}}{2}
    \end{equation*}で表記します。真の最小点\(c\)との誤差として\(\varepsilon >0\)を採用した場合、\begin{equation*}\left\vert m_{k}-c\right\vert \leq \varepsilon
    \end{equation*}を満たす\(k\)を特定することが目標になります。

    命題(所与の誤差以内で真の最小値を実現する回数)
    単峰関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)の最小点を\(c\in \left[ a,b\right] \)で表記する。黄金分割探索のステップ\(k\in \mathbb{N} \)における探索範囲を\(\left[ a_{k},b_{k}\right] \subset \left[ a,b\right] \)で表記し、さらにその中点を、\begin{equation*}m_{k}=\frac{a_{k}+b_{k}}{2}
    \end{equation*}で表記する。真の最小点\(c\)との誤差として\(\varepsilon >0\)を採用した場合、\begin{equation*}k=\left\lceil \frac{\ln \left( \frac{b-a}{2\varepsilon }\right) }{\ln \left(
    \frac{1}{1-\rho }\right) }\right\rceil
    \end{equation*}のもとでは、\begin{equation*}
    \left\vert m_{k}-c\right\vert \leq \varepsilon
    \end{equation*}が成り立つ。ただし、\begin{equation*}
    \rho =\frac{3-\sqrt{5}}{2}\approx 0.382
    \end{equation*}である。

    証明

    プレミアム会員専用コンテンツです
    ログイン】【会員登録

    例(所与の誤差以内で真の最小値を実現する回数)
    初期の区間\(\left[ a,b\right] \)の長さが、\begin{equation*}b-a=1
    \end{equation*}であるとともに、誤差が、\begin{equation*}
    \varepsilon =10^{-6}
    \end{equation*}である場合、\begin{eqnarray*}
    k &\geq &\frac{\ln \left( \frac{b-a}{2\varepsilon }\right) }{\ln \left(
    \frac{1}{1-\rho }\right) } \\
    &=&\frac{\ln \left( \frac{1}{2\times 10^{-6}}\right) }{\ln \left( \frac{2}{\sqrt{5}-1}\right) } \\
    &=&\frac{\ln \left( 5\times 10^{5}\right) }{\ln \left( \frac{2}{\sqrt{5}-1}\right) } \\
    &\approx &\frac{13.122}{0.481} \\
    &\approx &27.3
    \end{eqnarray*}となるため、三分探索のステップを\(28\)回繰り返せばよいことが明らかになりました。

     

    黄金分割探索と三分探索の比較

    三分探索の最初のステップでは探索範囲\(\left[ a_{0},b_{0}\right] \)を三等分する点\(x_{0}^{\left( 1\right) },x_{0}^{\left( 2\right) }\)を特定し、それらに対して\(f\)が定める値\begin{eqnarray*}&&f\left( x_{0}^{\left( 1\right) }\right) \\
    &&f\left( x_{0}^{\left( 2\right) }\right)
    \end{eqnarray*}を計算し、両者を比較します。つまり、関数評価が2回行われます。探索範囲が\(\left[a_{1},b_{1}\right] \)へと更新されると、新たな探索範囲\(\left[ a_{1},b_{1}\right] \)を三等分する点\(x_{1}^{\left( 1\right) },x_{1}^{\left( 2\right) }\)を特定し、それに対して\(f\)が定める値\begin{eqnarray*}&&f\left( x_{1}^{\left( 1\right) }\right) \\
    &&f\left( x_{1}^{\left( 2\right) }\right)
    \end{eqnarray*}を計算し、両者を比較します。\(x_{1}^{\left( 1\right)},x_{1}^{\left( 2\right) }\)は\(x_{0}^{\left( 1\right) },x_{0}^{\left(2\right) }\)とは異なる点であるため、直前のステップにおいて計算した関数値が再利用されず、ここでも関数評価が2回行われます。以降についても同様です。つまり、各ステップにおいて関数評価を必ず2回行う必要があります。

    黄金分割探索の最初のステップでは探索範囲\(\left[ a_{0},b_{0}\right] \)を\(\rho :1-2\rho :\rho \)の割合で分割する点\(x_{0}^{\left( 1\right) },x_{0}^{\left( 2\right) }\)を特定し、それらに対して\(f\)が定める値\begin{eqnarray*}&&f\left( x_{0}^{\left( 1\right) }\right) \\
    &&f\left( x_{0}^{\left( 2\right) }\right)
    \end{eqnarray*}を計算し、両者を比較します。つまり、関数評価が2回行われます。探索範囲が\(\left[a_{1},b_{1}\right] \)へと更新されると、新たな探索範囲\(\left[ a_{1},b_{1}\right] \)を\(\rho :1-2\rho :\rho \)の割合で分割する点\(x_{1}^{\left(1\right) },x_{1}^{\left( 2\right) }\)を特定し、それらに対して\(f\)が定める値\begin{eqnarray*}&&f\left( x_{1}^{\left( 1\right) }\right) \\
    &&f\left( x_{1}^{\left( 2\right) }\right)
    \end{eqnarray*}を計算し、両者を比較します。ただし、\(x_{1}^{\left( 1\right) },x_{1}^{\left( 2\right) }\)のどちらか一方が\(x_{0}^{\left( 1\right) }\)または\(x_{0}^{\left( 2\right) }\)と一致するため、直前のステップにおいて計算した関数値が再利用され、新たな関数評価は1回だけです。つまり、最初のステップを除き、以降のステップでは関数評価を1回行うだけで済みます。このような意味において、黄金分割探索は三分探索よりも効率的なアルゴリズムです。

     

    演習問題

    問題(黄金分割探索)
    関数\(f:\mathbb{R} \supset \left[ 0,2\right] \rightarrow \mathbb{R} \)はそれぞれの\(x\in \left[ 0,2\right] \)に対して、\begin{equation*}f\left( x\right) =x^{4}-14x^{3}+60x^{2}-70x
    \end{equation*}を定めるものとします。黄金分割探索を3ステップ適用してください。

    解答を見る

    プレミアム会員専用コンテンツです
    ログイン】【会員登録

    alg-002 alg-001

関連知識

メール
Xで共有
フィボナッチ探索(Fibonacci search)は単峰関数の最小値(最大値)を求めるための基本的な探索アルゴリズムです。本稿ではフィボナッチ探索の仕組みを定式化するとともに、黄金分割探索との違いを解説します。
イスラエルとイランの対立はなぜ起きるのか。本記事ではジョン・ミアシャイマーの攻撃的リアリズムをもとに、イランの核開発、イスラエルの先制攻撃、米国の中東戦略、安全保障ジレンマの観点から今回の紛争を解説します。
技術分野では誤った判断が即座に故障や事故を招くため慎重になりますが、政治・教育・財政政策などの社会科学分野では結果が長期的で目に見えにくく、独りよがりの意見を述べやすくなります。本稿では、社会科学分野の知識を軽視する危うさと、専門知識を尊重する姿勢の重要性を解説します。
ランナーが怪我をしているのに走ってしまう理由を、簡単な経済学のモデルを用いて説明します。ポイントは時間不整合性(現在バイアス)です。
三分探索(Ternary Search)は単峰関数の最小値(最大値)を求めるための基本的な探索アルゴリズムです。本稿では三分探索の仕組みを定式化し、区間保持、収束、誤差評価を数学的に証明します。
経済学でよく用いられる対応(correspondence)の連続性について、誤解が多いと思われる事実について整理します。
ユダヤ教はキリスト教やイスラム教徒と同様、唯一絶対の神から与えられた啓典を信仰の基盤にする啓典宗教です。ユダヤ教の特徴は、集団救済の宗教であり、外的規範の実践を重視する規範宗教であるという点です。その意味を解説します。
写真が本格的に発達した19世紀の中頃は、絵画を中心に印象派が勃興した時代でもあります。印象派の作風は写実主義の対極にあるように見えますが、実は、その成り立ちは写真の発明や普及と深い関係があることが指摘されています。写真が普及するまでの歴史的経緯を追いながら、印象派に及ぼした影響について解説します。
0は自然数なのでしょうか。0を自然数に含める流儀と含めない流儀がありますが、どちらが正しいか決め手はありません。重要なのは定義を共有しておくことです。ここでは後続集合を用いた定義や、帰納的集合を用いた定義などを紹介します。
オークションの入札者は商品への評価額などを私的情報として持っています。入札者たちが自身の利益を最大化するために真の評価額とは異なる金額を入札する結果、オークション市場ではインセンティブの問題が発生します。オークション理論はインセンティブの問題を解消するためのオークションメカニズムを設計する学問です。
もともとメキシコ領であったカリフォルニアからテキサスへ至る領域は、テキサス併合やメキシコ・アメリカ戦争(米墨戦争)などを経てアメリカへ編入されます。こうした動きを正当化するスローガンとして叫ばれたのが「明白な使命(マニフェスト・デスティニー)」。その意味を、時代背景やアメリカという国の成り立ちとともに解説します。
アダム・スミスの経済に関する思想は、社会秩序を導く人間本性について考察した著作である『道徳感情論』と関連付けながら理解する必要があります。今回はそのような立場からスミスの思想を概観します。
デカルトは『方法序説』において、理性の力を取り戻し、理性を活用するための方法を 4 つの準則としてまとめました。今回はデカルトの準則を参考にして、簡単には解けそうにない数学の問題に直面したときの対処方法を準則としてまとめます。
小学校などで割り算を学ぶ際に、「0では割ってはいけない」ことを理屈で説明するのではなく、守るべき「お約束」として習います。今回はその理由を体と呼ばれる数学概念を利用して解説します。
対戦競技におけるプレイヤーの実力を表す指標をレーティングと呼びます。対戦競技には相手がいるため、レーティングは実際の対戦結果から決定すべきです。イロ・レーティングシステムは1対1の対戦競技におけるレーティング決定ルールであり、チェスや将棋、囲碁、アメフト、サッカー、テニスなどの様々な対戦競技において採用されています。
日本では計算機が登場する前にそろばんが広く使われていましたが、西欧社会ではどのような道具が使われていたのでしょうか。フランス人の鉄道技術者ヘンリ・ルーカスが 1891 年に開発したジェナイル・ルーカスの定規は、計算機が登場する以前の西欧社会において科学者や会計士の間で広く使われていた計算道具です。
金利とは何でしょうか?また、経済に大きな影響を与える金利は長期の実質金利ですが、それはなぜでしょうか?金利の水準はどのように決まるでしょうか?また、中央銀行である日銀が行う金利引き下げと量的緩和とはどのような政策であり、それはどのような効果を持つのでしょうか。以上のポイントについて分かりやすく解説します。
17 世紀にオランダで起きたチューチップ・バブルとはどのような現象でしょうか?また、その原因は?バブルを加速させた金融商品であるコール・オプションとは何か?また、資産価値を評価する考え方としてファンダメンタル価値理論と群集心理説の 2 つが有力ですが、これらの考え方を用いるとチューリップ・バブルはどのように解釈できるでしょうか?これらのポイントについて解説します。

質問とコメント

プレミアム会員専用コンテンツです

会員登録

有料のプレミアム会員であれば、質問やコメントの投稿と閲覧、プレミアムコンテンツ(命題の証明や演習問題とその解答)へのアクセスなどが可能になります。

WIISでは、年齢・性別・学歴・職業・社会的立場などにかかわらず、すべてのユーザーが「学ぶ人」として対等であると考えています。ここは、知識を競う場所ではなく、互いに尊重し合いながら理解を深めていく場です。安心して思考し、質問し、考え続けられる環境を、みなさんと一緒につくっていきたいと考えています。

誤字脱字、リンク切れ、内容の誤りを発見した場合にはコメントに投稿するのではなく、以下のフォームからご連絡をお願い致します。

プレミアム会員専用コンテンツです
ログイン】【会員登録