人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

あなたが一番好きなアルゴリズムを教えてください。
また、その理由やどんな点が好きなのかも教えてください。

●質問者: KIICHIGO
●カテゴリ:コンピュータ
✍キーワード:あなた アルゴリズム
○ 状態 :終了
└ 回答数 : 24/24件

▽最新の回答へ

1 ● heroheropon
●13ポイント ベストアンサー

テキストを比較するdiffというUnix系のコマンドがありますが、これは実は高度に数学的なエディットグラフというアルゴリズムが使われています。

[1] E.W.Myers, "An O(ND) difference algorithm and its variations", Algorithmixa, 1 (1986), pp.251-266


こちらに日本語の解説がありました。

http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm

テキストを比較するのなんて簡単なんじゃないか?と思いますが、実際にプログラムを組もうとすると頓挫します(笑) この解説を読むと、とてもシンプルですばらしく数学的な発想の転換が用いられていることがわかり「数学的な感動」があります。

エディットグラフの原理は、たとえばカーナビの最短経路検索などでも使われています。


2 ● hakob
●13ポイント

クイックソートが好きです。

異様に件数が多い対象の整列に、いかに高速であるかを身をもって思い知りました。

(ヒープソートはメモリが足りないです。。。)


あと、ハッシュアルゴリズムのSHA-1も好きですね。

CRYPT暗号のアルゴリズムも好きです。

こう考えると、自分で実際にプログラムを書いて有用性を確認したアルゴリズムは大抵好きな気がします。。。


3 ● SALINGER
●13ポイント

再帰・・・自分自身を使って自分を定義する

プログラムを勉強したてのころに、ハードディスクの中の全てのMP3ファイルを調べてリスト化するコードを書こうとしていました。

ところが特定のフォルダの中のMP3は取得できるのですが、そのサブフォルダ更にそのサブフォルダと続く階層がどこまで続くのかがわからないので、どう書けばいいのかがわからず一度挫折しました。

しばらくして、アルゴリズムの本を読んでいたときに再帰というのがあるということを知りました。そのとき直感的にこれを使えば前に諦めたコードが書けると思い、書いてみると実際すごくシンプルなコードで実現できることがわかりました。

ネットなどで調べれば方法はすぐにわかったのかもしれませんが、プログラムということの面白さの本質は自分で考えることなんだと再帰を通して理解できました。


4 ● noocyte
●13ポイント

グラフアルゴリズム (グラフ理論的アルゴリズム),特にグラフのトポロジカルな構造を解析するアルゴリズムに一番興味があります.(単に量的な最適化を行うだけのアルゴリズムにはそれほど興味がない.)


例えば,



好きな理由は,局所的で単純な情報を積み重ねて全体的な構造や性質を認識できるところ.

(グラフアルゴリズムを知らないプログラマから見れば,どうしてそんなことができるのか不思議に思うだろう.ただ非プログラマには,「それができることがすごい」ということさえわからないだろうけど.)


応用分野としては,プログラムの解析 (データフロー解析制御フロー解析,(コンパイラなどによる) 最適化プログラムスライシング,バグ検出など) に最も興味があり,暇ができたら趣味でプログラム解析ツールとか逆コンパイラなどを作ってみたいと思っているのですが … 最近全く暇がない.orz


昔,ループ (サイクル) が複雑に入り組んだグラフを解析するアルゴリズムを考えたことがあります.これだと現在の制御フロー解析で使われている,ドミネーターツリーを使う方法に比べて goto 文だらけのスパゲッティプログラムも解析できる可能性があるし,制御系解析に応用すれば多入力・多出力・多重フィードバックループの構造も解析できるはず.数学的に計算量などは証明していないけど,たぶん O(n2) ぐらい?


でも,当時勤めていた某大手電機メーカの研究所で周囲にその話をしても,アルゴリズムの内容どころか応用的価値さえ全く理解してもらえず「それが何の役に立つの?」と言われた….○| ̄|_


さらに,グラフのトポロジカルな構造が時間的に変化するシステム (グラフ書き換えシステムなど) にも昔から興味があって,その変化を解析するアルゴリズムも考えてみたいけど,いまだに具体的な応用問題を扱う機会がありません.orz


あと,幾何学や計算幾何学のアルゴリズムも非常に興味があります.幾何学アルゴリズムという言葉が出たついでに余談ですが,「外積 C言語」とか「外積 アルゴリズム」などで検索して私のサイトにやってくる人が後を絶たないのが激謎.外積の計算式って,単純な掛け算と引き算だけ (Ax * By - Ay * Bx) なのに,一体何がわからないのかわからない.

「どんな言語であれ,"Hello, world!" と四則演算の書き方がわかれば小学生でもすぐ書けるでしょ!」と言いたい.それと,大学生以上でも三角形の重心の公式を知らない人が多いようで,「三角形 重心 公式 (C言語)」などで検索して来る人も多い.


5 ● yyok
●13ポイント

Combsort 11

バブルソートにほんの少し手を加えるだけで、劇的に速くなるのに驚きました。

昔あった日系バイトで紹介されて知りました。

コーディングも簡単なので、実装して使ったことがあります。


1-5件表示/24件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ