時間の複雑さ

4119 ワード

アルゴリズムを学ぶと、最初に出会ったのは2つです.
アルゴリズムと時間の複雑さこそ、アルゴリズムです.これは私たちが普段よく使う言葉で、どんな感じなのか、たぶんみんなが知っています.
ex) youTube의 알고리즘이 나를 여기로 이끌었다... 등등
では、時間の複雑さは何でしょうか.
この文章は時間の複雑さを知りたい.

時間の複雑さとBig-O


時間の複雑さとは、いかなる問題を解決するために制定された一連のプログラムや方法であり、数式化された形式で表現され、計算を実行するために取られる段階的なステップである.
ウィキペディア
もちろん意味がわかりませんが、簡単に言えば
これはアルゴリズムを解くのに要する時間を意味する.
すなわち,ある問題を表すアルゴリズムがどれほど単純で複雑であるかを示す指標といえる.
選択ソートSelection sort最初のiから1 ~ n-1
2番目のiから2 ~ n-1
...n(n-1)/2、すなわちO(n²)の時間的複雑さがある.
? n(n-1)/2½n²-½nです.なぜO(n²)と呼ばれていますか.
これは,時間の複雑さを計算する際に,最も重要なのはコアとなる演算を見つけることであるからである.½n²-½nからnが大きいほど、½または-½nの立場で無視できる数は小さくなります.そのためコアと書かれたは、その前にOを付けてBig-Oマーキング法と呼ばれています.

時間の複雑さを計算する方法


時間的複雑さとBig−Oが理解されている以上,時間的複雑さの計算方法を簡単に理解しよう.
for ( let i=0; i<n; i++ ) {
  for ( let j=0; i<m; j++ ) {
    
  }
}
擬似的な時間の複雑さはどうなりますか?
答えはです.
無限数nmを繰り返す複文が2つあるからです.
for ( let i=0; i<n; i++ ) {
  for ( let j=0; j<m; j++ ) {
    for ( let k=0; k< 100000; k++ ) {
      
    }
  }
}
では、擬似的な時間の複雑さはどうなるのでしょうか.
答えはです.kは100000までの繰り返しに限られているからです.
우리 눈에 100000은 큰 수처럼 보이지만, 
무한한 수인 `n`과`m`입장에서 100000라는 수는 무시해도 될 만큼 
작은 수라는 것을 언제나 인지해야한다.