数学ナビゲーター掲示板

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 発言ランク ファイル一覧 検索 過去ログ

■48016 / 親記事)  計算量について
  
□投稿者/ サボり部 一般人(1回)-(2017/07/07(Fri) 14:14:21)
    P=NP問題の読み物を読んでいた時に疑問がでてきました。
    基本ソートの計算量はO(n^2)です。

    これについては感覚的にですが、n個のものを参照することをn回繰り返すので、n^2程度の多項式時間の計算量だと感じます。

    それに対して、ある数nの素因数を求めるアルゴリズムでは、√n以下の数字で順に割っていけば解が出ます。ソートの時と同じように考えると、自分の(間違った)感覚では計算量がO(√n)に感じます。
    実際には2進数で表した時の桁数を考えて、A=log[2]nとし、√n=(√2)^Aなので、指数関数時間かかるというのが正しいです。
    確かに指数関数時間でなければ暗号化に使えなくなるのでその意味では納得できるのですが…。

    ソートでは2進数に表し直すという処理はせず、素因数を求める方ではその処理をするというのはどのような違いから出てきているのでしょうか?
    根本的なことが分かっていないのかもしれませんが、よろしくお願いします。
引用返信/返信 [メール受信/OFF] 削除キー/
■48020 / ResNo.1)  Re[1]: 計算量について
□投稿者/ ななし 一般人(1回)-(2017/07/12(Wed) 07:46:56)
    > それに対して、ある数nの素因数を求めるアルゴリズムでは、√n以下の数字で順に割っていけば解が出ます。ソートの時と同じように考えると、自分の(間違った)感覚では計算量がO(√n)に感じます。

    そのとおり、O(√n)だと思います。

    計算量が多項式時間かどうかどうかというのは、入力データのサイズがmの場合にmの多項式になるかどうかということなので、数nをデータで表したときにどのくらいのサイズなのかを考える必要があります。2進数で表すこと考えると(別に10進数でも構いません)、
    2進数m桁の数nを素因数分解するとき、nは大体2^mなので、√nは2^(m/2)くらいであり、計算量はO(√n)=O(2^(m/2))となって、これは指数時間となりますね。

引用返信/返信 [メール受信/OFF] 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 発言ランク ファイル一覧 検索 過去ログ

- Child Tree -
Edit By 数学ナビゲーター