アルゴリズム単語

295件
アルゴリズム
2.4千文字の記事
  • 2
  • 0pt
掲示板へ

もしかして? → アルゴリズムたいそう / アルゴリズムこうしん

アルゴリズムとは、「問題を解くための手順」である。

概要

アルゴリズムとは、「問題を解く手順(解き方)」のことである

現代ではもっぱら「コンピューターの計算手順の最適化方法」をすが、たとえば「ニコニコ大百科読者が、一覧の一覧編集履歴から、ストーリーを一行で語るの一覧が追加された日付を調べる手順」のように、コンピューター以外のものが処理できる手順についてもアルゴリズムと呼ぶことができる。

「いかに問題の解き方を工夫するか」というのが、アルゴリズムの研究と言ってほぼ間違いない。

例1

たとえば、1から100まで足し算することを考えてみよう。

1に2を足したら3、3に3を足して6、6に4を足して……と99回足し算を手作業でがんばる人もいるかもしれない。実際、昔の人はそうやって足し算していた。しかし、この問題は、等差数列の和の公式を使えば(1+100)*100/2 = 5050と四則演算をたった3回するだけで答えが出る。

例2

次に概要で挙げた「ニコニコ大百科読者が、「一覧の一覧」の編集履歴から、「ストーリーを一行で語るの一覧」が追加された日付を調べる手順」について検討してみようと思うが、長くなるので二分探索の記事に委ねることとする。

二分探索

で、結局アルゴリズムって何の役に立つの?

つまり、アルゴリズムが優秀であれば、計算量を減らすことができるのだ。

ただし、手順が異なるだけであり、同じ問題を解決するのであるから、アルゴリズムの優劣によらず答えは一致している必要がある。

答えが同じなのに計算量を減らすのが何の役に立つって? と思われるかもしれないが、これは非常に重要な問題で、第二次大戦以前からずーーーーっと脈々と研究が続けられてきた。なぜなら、計算する量が少なければ少ないほど、コンピュータが短い時間で答えを出せるからだ。

実用例1: 動画再生

たとえば、古いパソコンニコニコを見ているとき、動画カクカクしてイラッとしたことはないだろうか? これも、コンピュータの処理が、計算量より低かったから生じる問題だ。つまり、ニコニコ動画が使っている「アルゴリズム」がさらにパワーアップすれば、古いパソコンでもヌルヌル字幕を動かせたりすることができるのだ。

実用例2: 暗号

それだけではない。たとえば現在広く使われているRSA暗号は、「コンピュータ解読させようとすると、あまりに時間がかかりすぎる」という理由で安全性が保たれている。 → P≠NP予想

つまり、「どんなRSA暗号でも速く解読するアルゴリズムを手に入れたぜ!」と宣言し、しかもそれが正しいと認められたなら、大な富と尊敬を得られる……かもしれない。いやむしろ、っ先にFBIやらインターポールやらペンタゴンやらMI6やらがやってきて、映画マーキュリー・ライジングexit」の登場人物のような運命が待っているのだろうか。とにかく世界が震撼するのは間違いない。

アルゴリズムの評価方法

上述のように、計算量が少ないアルゴリズムが優秀なアルゴリズムということになるが、それだけでは較しにくい。そこで、較の際には計算回数(手順)がアルゴリズムで取り扱う対の数の増加に合わせてどのような増え方をするかで評価を行う。

たとえば、上記例1においてnまでの総和をめるために、地足し算する場合の足し算の回数はn-1で、和の公式を用いる方法なら四則演算の回数は常に3である。

別の例をとると、nチーム優勝者を決める場合、総当たり戦なら試合数はn(n-1)/2であり(優勝決定戦が必要になる可性を除く)、トーナメント戦であれば試合数はn-1(優勝者以外は必ず1敗するため)である。

このようにn, n2, n3,...など、計算や手順の実施回数が、対となるnのべき乗の和(多項式)で表せるものを、多項式時間で解けるアルゴリズムと表現し、多項式時間(より短い時間)で解けるアルゴリズムが存在する問題を、多項式時間で解ける問題と表現する。

それに対して、計算回数が2nなど、nが大きくなると多項式時間より大きくなる式(指数関数など)で表される場合は、多項式時間で解けないということになる。

記述するときはnが大きくなった時に支配的になる項のみで定数倍は無視して表現し、O(n), O(n2), O(2n)などと表現されるOはorder(「注文」以外に「秩序」とか「等級」という意味もある)の略である。

逆(逆関数的)に計算回数がlog(n)に例するアルゴリズムは、かなり優秀なアルゴリズムであると言える。例1で挙げた等差数列の和の公式は、計算回数はnが増えても増加しないのでO(1)であり、最高に優秀なアルゴリズムということになる。

条件により計算回数が一定しない場合は、計算回数の期待値や、最大値、最頻値のようなもので評価する場合もある。

また、計算終了にかかる時間を概算したい場合や必要な資の大まかな量を知りたい場合など、完璧に正しい数値を知らなくとも良い場合がある。ある種のアルゴリズムには処理速度を優先して正確な値ではなく近似値をめるだけのものがある。近似値といっても計算結果がの値と一致する確率が非常に高かったり、誤差が極めて小さかったりすれば実用上問題にならない。スパースモデリング深層学習はそのような思想で運用されている。

関連動画

関連記事

ニコニコ大百科に記事のあるアルゴリズム

その他の関連項目

【スポンサーリンク】

  • 2
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

この記事の掲示板に最近描かれたお絵カキコ

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

アルゴリズム

9 ななしのよっしん
2017/09/17(日) 18:56:54 ID: l/rsAuJqRa
AIを謳うやつに(今のところ)まともなアルゴリズムなんかないよ
プラセボに近いよ
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2017/10/19(木) 23:24:20 ID: SFpkrx3pKH
技術部カテのアルゴリズム説明でわからんてコメ立つけど、理解できない仕事できないと思う
👍
高評価
0
👎
低評価
0
11 ななしのよっしん
2017/12/23(土) 11:53:57 ID: vg/83yckbv
学生諸君はあまり本気出して勉強しなくてもいい
この一千万件のデータ処理をO(n2)で書いたバカ出てこい、と怒られたときに何を怒られているのかすぐ理解できる程度でいい
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2017/12/30(土) 00:48:57 ID: l/rsAuJqRa
問題の解き方は一通りじゃなくてたくさんのやり方があって条件に対して優劣が大きな差がつく
ということだけおぼえておけばおk
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2018/01/07(日) 13:38:04 ID: 463WeF36XO
でもアルゴリズムに強い個人的関心を持たないプログラマーで優秀なやつ見たことないなぁ
👍
高評価
0
👎
低評価
0
14 ななしのよっしん
2019/05/10(金) 22:16:28 ID: vg/83yckbv
要は関心の持ち方だな
日本高校バカみたいな数学の授業にも言えるけど、大事なのは答えを教えてもらう事じゃなくて考える事
アルゴリズムに関心を持つのは大事だが、ソートがどうしたマージがどうしたなんて本読んでも役に立たん
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2019/07/30(火) 06:48:43 ID: 5pc+DHuEDw
あれだけ話題になったのに、
フカシギの数え方の記事ないんだな

👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2020/05/08(金) 01:28:14 ID: 5G9cqEGmZL
アルゴリ・ズム・ダイクン
👍
高評価
0
👎
低評価
0
17 削除しました
削除しました ID: h/7PT36E+A
削除しました
18 ななしのよっしん
2023/03/31(金) 16:28:46 ID: 6USKlzLEaY
秘密計算なるアルゴリズムが実に興味深い
データ暗号化、保護したままクラウド処理、統計処理できるとか
電子投票とかに使えそうだ
プライバシー保護が進む時代の「秘密計算」の可性 : 読売新聞 <https://www.yomiuri.co.jp/choken/kijironko/ckscience/20220726-OYT8T50051/exit
読売新聞の記事は秘密分散方式だけ説明していて詳細なことは省いているせいで却ってわかりにくかった
秘密計算 | 用解説 | 野村総合研究所(NRI) <https://www.nri.com/jp/knowledge/glossary/lst/ha/secure_computationexit
まあ扱いにくさや用途が現状限られているのもあって実用例は少数らしいが
秘密計算の社会実装は可なのかーーエストニアの事例と内事例を紹介 - プライバシーテック研究所 <https://acompany.tech/privacytechlab/secure-computing-deexit
(省略しています。全て読むにはこのリンクをクリック!)
👍
高評価
0
👎
低評価
0

急上昇ワード改