< Return to Video

ビッグオー記法 (4 min)

  • 0:00 - 0:04
    今後の一連の動画で、漸近的な記法のフォーマルな扱い、
  • 0:04 - 0:09
    特にビッグオー記法を、たくさんの例と共に提供したい。
  • 0:09 - 0:13
    ビッグオー記法は正の整数の関数に関する物だ。
    それをT(n)と呼ぼう。
  • 0:13 - 0:18
    私たちはT(n)の意味について常に同じ認識をするだろう。
  • 0:18 - 0:22
    アルゴリズムのワーストケースの実行時間が、入力のサイズnのどんな関数となるかを考えていく。
  • 0:22 - 0:26
    で、問題は、このビデオの残りで答えていきたい問題は、
  • 0:26 - 0:30
    T(n)がf(n)のビッグオーと言ったら何を意味するのか、という事だ。
  • 0:30 - 0:35
    言い換えると、ここにある基本的な関数f(n)があるとする。例えばn log nとか。
  • 0:35 - 0:39
    私はビッグオー記法が本当は何を意味するか、について考えるための、いくつかの考え方を提示するつもりだ。
  • 0:39 - 0:43
    前菜として、言葉の定義から始めよう。
  • 0:43 - 0:48
    ある関数がf(n)のビッグオーとはどういう意味か?
    それは結局の所、十分に大きな全てのnに対し、
  • 0:48 - 0:52
    それはf(n)の定数倍を上から抑える。
  • 0:52 - 0:56
    それを幾つか別の方法で考えてみよう。
    この言葉による定義を図に翻訳し、
  • 0:56 - 1:00
    その後フォーマルな数学に翻訳しよう。
  • 1:00 - 1:05
    図で表すと、T(n)はこの青い関数で示されると考えられて
  • 1:05 - 1:11
    f(n)はこの緑の関数で示されると考えられて、
  • 1:11 - 1:16
    これはT(n)の下に存在している。
    だがもしf(n)を二倍にすると、T(n)と交差する関数が得られ
  • 1:16 - 1:22
    そこから先はこの関数の方が永遠により大きい。
    この場合、T(n)はまさに
  • 1:22 - 1:26
    f(n)のビッグオーだと言える。
    その訳は、十分に大きな全てのnに対して
  • 1:26 - 1:31
    つまり一旦十分にグラフの右側に来れば、
  • 1:31 - 1:35
    確かにf(n)の定数倍、この場合は二倍が、T(n)の上限となっている。
  • 1:35 - 1:40
    最後に、実際の数学的な定義を提供しよう。
    フォーマルな証明に使う時の為に。
  • 1:40 - 1:45
    では数学的にはどのように、
  • 1:45 - 1:49
    結局はf(n)の定数倍にバウンドされなくてはならない、という事を表現出来るのか?
    以下のような、2つの定数が存在する事が分かる、
  • 1:49 - 1:56
    それをcとn0と呼ぼう。
    n0より大きな全てのnについて、
  • 1:56 - 2:03
    T(n)がc * f(n)を越えないような、そんな2つの定数。
    つまり、これら2つの定数の役目は、
  • 2:03 - 2:07
    定数倍と言葉で言った時、十分に大きいと言葉で言った時に
  • 2:07 - 2:12
    それを定量化する事だ。
    cはあきらかにf(n)の定数倍を定量化していて、
  • 2:12 - 2:17
    n0は十分に大きい、というのを定量化している。
    それはそれを越えたら
  • 2:17 - 2:21
    c掛けるf(n)がT(n)の上限になると主張出来る閾値である。
  • 2:21 - 2:26
    図に戻ると、cとn0は何にあたるだろう?
    cはもちろん、単なる2だろう。
  • 2:26 - 2:31
    n0は交点、つまり2*f(n)とT(n)が交わる所。
  • 2:31 - 2:36
    X軸まで垂線を引く。
    ここが、この写真でこn0の相対値だ。
  • 2:36 - 2:39
    以上がフォーマルな定義だ。
    ある物がf(n)より大きい事を証明するには、
  • 2:39 - 2:43
    2つの定数cとn0で、
  • 2:43 - 2:48
    n0以上の全てのnに対して、c掛けるf(n)がT(n)の上限になっているような物を見つければ良い。
  • 2:48 - 2:52
    それについての一つの考え方としては、ある関数のビッグオーとなっている何かを作りたい時は、
  • 2:52 - 2:56
    勝負相手とゲームをしていて、
  • 2:56 - 3:00
    この不等式が成り立つ事をあなたは示したくて、あなたの勝負相手は
  • 3:00 - 3:05
    十分大きなnではそれは成り立たない、という事を示さなくてはいけない。
    で、あなたが先に定数のcとn0を選ばなくてはいけない。
  • 3:05 - 3:09
    その後で相手はn0より大きなどんな数を選んでも良い、というゲーム。
  • 3:09 - 3:14
    その関数がf(n)のビッグオーなら、そしてその時に限り
  • 3:14 - 3:18
    このゲームに勝てる。
    もしあなたが先にc とn0を選んで、相手がどんな大きなnを選んでも
  • 3:18 - 3:22
    この不等式が成り立つように出来るなら。
  • 3:22 - 3:27
    もしどうやっても勝ち目が無いなら、それはf(n)のビッグオーでは無い、どんなcとn0を選ぼうと、
  • 3:27 - 3:31
    相手がいつも、適切な大きい値のnを選ぶ事で、
  • 3:31 - 3:36
    この不等式をひっくり返せるなら。
    最後に一つ、強調しておきたい事がある。
  • 3:36 - 3:41
    これらの定数は、定数という言葉に込めた意味としては、それらがnと独立である、という事。
  • 3:41 - 3:45
    この定義を適用し、2つの定数cとn0を選ぶ時は
  • 3:45 - 3:49
    nがどこにも現れていないのを確認した方が良い。
    cは例えば1000とか100万とかかもしれない。
  • 3:49 - 3:53
    何らかの、nと独立な定数。
  • 3:53 - 3:57
    ビッグオー記法についてはいくつかの考え方がある。
    言葉では、十分に大きな数nに対して
  • 3:57 - 4:01
    上で縛りたい、という事。
    それをどう数学に翻訳するかを示し、
  • 4:01 - 4:04
    図ではどう表現出来るかを示した。
    そしてゲームっぽい理論での考え方を
  • 4:04 - 4:08
    お見せした。
    次のビデオでは、いくつかの例を
  • 4:08 - 4:09
    見ていこう。
Title:
ビッグオー記法 (4 min)
Video Language:
English
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino edited Japanese subtitles for Big-Oh Notation (4 min)
Kazuma Arino added a translation

Japanese subtitles

Revisions