[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
「アルゴリズム」というのは、簡単に言ってしまえば、「何かをする手順」のこと。
そして、何かをするにしても、色々なやり方があり、どのやり方にも一長一短があり、もっと端的に、ある見方をすれば、あるやり方は他のやり方よりも優れている(ダメだ)という判断が下せる(こともある)。
アルゴリズムに関して、こうした優劣の判断は、大きく分けて「空間的効率」と「時間的効率」という2つの側面から為され、その中でも時間的効率ということを主に問題にすることが多い。というのも、アルゴリズムの優劣によって、同じ問題を特にしても、「劇的」と言ってもいいような差が出るからだ。
たとえば、今ここに1秒間につき1億回の演算が可能なプロセッサがあるとしよう。そして、何かあることを為そうというときの要素数nに応じて、n、n2、そして2nの処理数を要する3つのアルゴリズムがあるとする。このとき、処理にかける要素数によって、各アルゴリズムがその仕事を為し果せる時間は、以下のようになる。
n | n2 | 2n | |
n=10 | 10-7秒 | 10-6秒 | 10-5秒 |
n=100 | 10-6秒 | 10-4秒 | 4×1014年 |
要素数nが10だと、どのアルゴリズムもマイクロ秒のオーダで処理が終わり、何てことはない。問題は、処理する要素数が増えるにしたがって、どれぐらい処理に要する時間が増えるか、ということで、nが100のときを見てもらうと……要素数nに対して処理がn秒とn2秒かかるアルゴリズムに関しては、まだマイクロ秒のうちに処理が終わるけど、処理に2n秒要するアルゴリズムは、な、何と、マイクロ秒どころか、単位からして「年」になっちゃってる。しかも、4×1014っつーんだから、これ、40兆年ですよ、40兆年。
斯様に、処理する要素数nが肩に乗っかった形で処理時間が表されるアルゴリズムは、「指数時間を要する」と言って、まあ、確かに、処理する要素数が小さい分には実用的だったり、何にせよ有限時間では処理は終わるし、端的に「解決不能」ではないんだけど……普通こういうのは「アルゴリズム」とは呼べないような代物。
で、アルゴリズムのこうした時間的効率(複雑さ)を計る指標として、O(ラージオー)記法というのとΩ(ラージオメガ)記法というのとΘ(ラージシータ)記法というのがあって、定義は以下の通り。
あるアルゴリズムの実行時間がその処理する要素数nの函数f(n)で表せ、それに対してある正の定数cとある正の定数n0が存在し、すべてのn≧n0に対してある函数g(x)が存在して、
0≦f(n)≦O(g(n))
0≦Ω(g(n))≦f(n)
0≦Ω(g(n))≦f(n)≦O(g(n))
と表せる場合、「(処理にf(n)かかる)あるアルゴリズムはO(g(n))(あるいはΩ(g(n))、Θ(g(n)))のオーダである」などと言う。
たとえば、あるアルゴリズムAの時間効率がf(x)=60n2+5n+1と表せる場合、60n2+5n+1≦60n2+5n2+n2=66n2だから、c=66とg(n)=n2すれば、O(n2)と表せ、ゆえに、アルゴリズムAの時間効率はO(n2)、というわけ。
さらに、60n2≦60n2+5n+1だから、このアルゴリズムのオーダはΩ(n2)でもあり、ゆえにΘ(n2)でもある。
そんな感じで、「仕込み」は終わりとして、次回からは色んなソートアルゴリズムを見てきましょ。
なんてヨタ話と、関わりは、あんの?
何にせよ、巡回セールスマン問題も、そして詰め将棋のような問題も、複雑さを云々するためにはまずこうしたフォーマリスムに変換する必要がある。
というわけで、関わりあり。
<a href="http
へー。
で、やってみたら、一回目で最短だせました。おお凄いぞ自分。
でも、アルゴリズムにすると…最大探索深度=点の数=nとして、探索時点深度での最短距離をsdとすると、
えーと、探索深度が深くなるほど足きり値を小さくしていけば、ほどほどの効率化はできるかなぁ、とか素人考えに思いましたが数学苦手なんで適当です。なんか変数宣言した意味がなかったですね。ではでは。
で、この手の問題って、計算機にかけるよりも、人間が直接ヒューリスティックに解いちゃった方がいい類の問題ですね、今のところ。
というのも、たとえば巡回する都市数が30だとしても、全部の経路をチェックして比較するのに、30!(30の階乗)のステップ数を要し、1ステップを1ピコセカンド(1秒の12分の1)で実行できるにしても、何億年か(どころじゃなくて、何兆年、かも)かかっちゃうってことで……これ、いくら効率化したって、実用に耐えられる程度の効率化は難しい、ってことになっちゃう。
ってことで、この「巡回セールスマン問題」は、巡回する都市数がちっちゃいうちはまだどうにかなるけど、大きくなるともうお手上げ、ってな問題なわけです。
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
音
雑
虫
技術
『スペクタクルの社会』を読む
ドゥルーズ講義録
電波
趣味の数学
趣味のゲーデル
『プリンキピア・マテマティカ』を読む
自己紹介もどき
ブログペット俳句
芸術一般
言語ヲタ
お客様
GRE CS
留学
Boing Boing
映画
ちょっといい話
かなりダメな話
魂の叫び
哲学と数学
論文
引用
「いい」とも「ダメ」とも言いがたい話
悲喜こもごも
証明論
ポエム
書物への呪詛
言わずもがななことではあるけれどときに忘れてしまうこと
何か無駄なことをしよう
日々
趣味の勉強
夢
ブログの記事
翻訳
勉強
不眠
文房具
ライフハック
育児
thayashi#ucalgary.ca
(#を@に置換してください)
このブログで紹介したことのある本をランダム表示。
このブログで紹介したことのある音をランダム表示。