時間の複雑さ
4119 ワード
アルゴリズムを学ぶと、最初に出会ったのは2つです.
アルゴリズムと時間の複雑さこそ、アルゴリズムです.これは私たちが普段よく使う言葉で、どんな感じなのか、たぶんみんなが知っています.
この文章は時間の複雑さを知りたい.
時間の複雑さとBig-O
アルゴリズムと時間の複雑さこそ、アルゴリズムです.これは私たちが普段よく使う言葉で、どんな感じなのか、たぶんみんなが知っています.
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
がn²
の立場で無視できる数は小さくなります.そのためコアと書かれたn²
は、その前にO
を付けてBig-O
マーキング法と呼ばれています.
時間の複雑さを計算する方法
時間的複雑さとBig−Oが理解されている以上,時間的複雑さの計算方法を簡単に理解しよう.for ( let i=0; i<n; i++ ) {
for ( let j=0; i<m; j++ ) {
}
}
擬似的な時間の複雑さはどうなりますか?
答えはn²
です.
無限数n
とm
を繰り返す複文が2つあるからです.for ( let i=0; i<n; i++ ) {
for ( let j=0; j<m; j++ ) {
for ( let k=0; k< 100000; k++ ) {
}
}
}
では、擬似的な時間の複雑さはどうなるのでしょうか.
答えはn²
です.k
は100000までの繰り返しに限られているからです.우리 눈에 100000은 큰 수처럼 보이지만,
무한한 수인 `n`과`m`입장에서 100000라는 수는 무시해도 될 만큼
작은 수라는 것을 언제나 인지해야한다.
Reference
この問題について(時間の複雑さ), 我々は、より多くの情報をここで見つけました
https://velog.io/@kich555/시간복잡도
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
時間的複雑さとBig−Oが理解されている以上,時間的複雑さの計算方法を簡単に理解しよう.
for ( let i=0; i<n; i++ ) {
for ( let j=0; i<m; j++ ) {
}
}
擬似的な時間の複雑さはどうなりますか?答えは
n²
です.無限数
n
とm
を繰り返す複文が2つあるからです.for ( let i=0; i<n; i++ ) {
for ( let j=0; j<m; j++ ) {
for ( let k=0; k< 100000; k++ ) {
}
}
}
では、擬似的な時間の複雑さはどうなるのでしょうか.答えは
n²
です.k
は100000までの繰り返しに限られているからです.우리 눈에 100000은 큰 수처럼 보이지만,
무한한 수인 `n`과`m`입장에서 100000라는 수는 무시해도 될 만큼
작은 수라는 것을 언제나 인지해야한다.
Reference
この問題について(時間の複雑さ), 我々は、より多くの情報をここで見つけました https://velog.io/@kich555/시간복잡도テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol