タグ

algorithmに関するkiikのブックマーク (31)

  • Firebugで探索アルゴリズムを見ていこう

    Firebugで探索アルゴリズムを見ていこう:コーディングに役立つ! アルゴリズムの基(6)(1/4 ページ) プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 今回紹介するのは探索のアルゴリズムです。探索もアルゴリズムのテーマとしてはメジャーなもので、とても重要な用語や考え方が出てきます。 あるデータの集合があったとします。それぞれのデータには、個々を識別するためのIDが付いています。このIDをキーと呼びます。このキーに対応するデータを探すのが探索です。 データベースを知っている方なら主キーで検索する動作だと思ってください。例えば、商品のリストがあり、それぞれの商品に商品コードが付いています。商品コード「7100」に対応する商品データ「トマト」を検索するプログラム

    Firebugで探索アルゴリズムを見ていこう
  • Internet Explorerよりも速くソートできたよ

    Internet Explorerよりも速くソートできたよ:コーディングに役立つ! アルゴリズムの基(5)(1/4 ページ) プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 第4回「Internet Explorerよりも速くソートできるかな」では、選択ソート、バブルソート、シェルソート、クイックソートを実装して、IE組み込みのソート機能よりも速くソートできるかを試しました。残念ながら、いまのところ組み込みのソートよりも速くソートできていません。しかし徐々に差は縮まっています。 ソートのアルゴリズムは、まだまだたくさんの種類があります。代表的なものだけでもまだいくつか残っていますので、今回はこれらを実装して、IE組み込みのソート機能と速度を比較してみましょう。だん

    Internet Explorerよりも速くソートできたよ
  • Internet Explorerよりも速くソートできるかな

    Internet Explorerよりも速くソートできるかな:コーディングに役立つ! アルゴリズムの基(4)(1/3 ページ) プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) ソートはアルゴリズムに関するテーマの中でも定番中の定番です。数値を数の大小で並べ替える。ただそれだけのことですが、ありとあらゆる手法があり、それぞれパフォーマンスやプログラムの分かりやすさなどに特徴があります。今回はさまざまなソートのアルゴリズムを紹介します。 今日のプログラム言語の多くはソート機能を備えていて、自力でソートする機会はあまりありません。せっかく自力でソートするのですから組み込みのソートよりも高速にソートできるプログラムが作れるか、チャレンジしてみましょう。 今回もWebブラウ

    Internet Explorerよりも速くソートできるかな
  • 再帰でハノイの塔を攻略せよ

    プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 最大公約数を求める 「最大公約数を求めるプログラムを作って」といわれて、すぐに書けるでしょうか。 一般的には小学校で最大公約数の求め方を教わります。2つの数を共通する素数で割っていくというものです。そのままプログラムしようとすると、まず素数を求めるところから始めなければならず、少々難しそうです。 最も単純にやるとすれば、2つの数の小さいほうから1ずつ減らして両方の数を割っていき、どちらも余りが0になるものを求めるという方法でよいでしょう。しかしこのやり方は無駄が多そうです。 「ユークリッドの互除法」という方法を使うと簡単にプログラムにすることができます。ユークリッドの互除法とは以下のような方法で最大公約数を求めるやり方

    再帰でハノイの塔を攻略せよ
  • データ構造の選択次第で天国と地獄の差

    データ構造の選択次第で天国と地獄の差:コーディングに役立つ! アルゴリズムの基(2)(1/3 ページ) プログラマたるものアルゴリズムとデータ構造は知っていて当然の知識です。しかし、教科書的な知識しか知らなくて、実践的なプログラミングに役立てることができるでしょうか(編集部) 第1回「いまさらアルゴリズムを学ぶ意味」では、アルゴリズムを学ぶ意味を解説しました。今後紹介していくアルゴリズムは、データの集合を処理していくものが多数あります。そこで、先にデータ構造についておさらいしていきたいと思います。なぜならば、同じ処理を行う場合でもデータ構造をどうするかによってプログラムの難易度やパフォーマンスに大きな違いが出てくるからです。 解説のための言語は、引き続きJavaScriptを使います。JavaScriptを学ぶことが目的でないため、なるべくJavaScriptに依存しない、ほかの言語でも

    データ構造の選択次第で天国と地獄の差
  • いまさらアルゴリズムを学ぶ意味

    いまさらアルゴリズムを学ぶ意味:コーディングに役立つ! アルゴリズムの基(1)(1/3 ページ) 連載ではアルゴリズムを学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。初回は、アルゴリズムを学ぶ意義について。コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう。 アルゴリズムを学ぶ意味 IT技術者である読者の皆さんなら、普段から何げなく「アルゴリズム」という言葉はよく使っていることでしょう。しかしあらためて「『アルゴリズム』とは何か」と問われて、すぐに明快に答えられるでしょうか。 また、IT技術者であってもアルゴリズムをきちんと勉強した人は意外と多くないのではないでしょうか。大学で学んだとか、入社後の新人研修

    いまさらアルゴリズムを学ぶ意味
  • コーディングに役立つ! アルゴリズムの基本 - @IT

    連載ではアルゴリズムとデータ構造を学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。 機械学習/Deep Learningが気になる人も要注目、「アルゴリズム」の基が学べる無料の電子書籍150ページ 人気連載まとめ読み! @IT eBook(29) 人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第29弾では「コーディングに役立つ!アルゴリズムの基」10回分を1冊のPDFとしてまとめた。アルゴリズムとは何か? なぜ学ぶべきなのだろうか?

  • B木 - naoyaのはてなダイアリー

    昨年から続いているアルゴリズムイントロダクション輪講も、早いもので次は18章です。18章のテーマはB木(B Tree, Bツリー) です。B木はマルチウェイ平衡木(多分木による平衡木)で、データベースやファイルシステムなどでも良く使われる重要なデータ構造です。B木は一つの木の頂点にぶら下がる枝の数の下限と上限を設けた上、常に平衡木であることを制約としたデータ構造になります。 輪講の予習がてら、B木を Python で実装してみました。ソースコードを最後に掲載します。以下は B木に関する考察です。 B木がなぜ重要なのか B木が重要なのは、B木(の変種であるB+木*1など)が二次記憶装置上で効率良く操作できるように設計されたデータ構造だからです。データベースを利用するウェブアプリケーションなど、二次記憶(ハードディスク)上の大量のデータを扱うソフトウェアを運用した経験がある方なら、いかにディ

    B木 - naoyaのはてなダイアリー
  • 404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10

    2007年11月26日18:15 カテゴリMathLightweight Languages プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10 ぎくっ あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。 - 人力検索はてな なぜぎくってしているかというと、実はすでにアルゴリズムの発注を受けているからなのだ。いつまでも伏せておくのもなんなので、ここにえいやっとdiscloseしてしまうことにする。 アルゴリズム大募集! C&R研究所 - トップページ その下書きもかねて、そこでも紹介しないわけに行かないメジャーなアルゴリズムをとりあえず10個紹介しておくことにする。 ユークリッドの互除法(Euclidean algorithm) その昔(数百年ほど前)は「アルゴリズム」といえば、「手順一般」を指すのではなく、この「互除法

    404 Blog Not Found:プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10
  • アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found

    2009年01月31日01:00 カテゴリLightweight LanguagesMath アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 これなのですが.... 同じ文字列のn回繰り返しを作る最速の方法を探求してみた - muddy brown thang ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyPythonで言うところの「"..." * n」) を高速に実装しなければならない状況に遭遇したのでベンチマークをとってみたところ、その結果がとても新鮮で驚いたので、これを共有しつつもダメ出ししてもらえないかなーと思って晒してみることに。 なぜかもっとシンプルな奴がなかったので。 以下、比較。初期値はIEにあわせてあります。Firefox/Saf

    アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found
  • GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)

    GCアルゴリズム詳細解説 日語の資料がすくないGCアルゴリズムについて詳細に解説します トップページページ一覧メンバー編集 GC 最終更新: author_nari 2010年03月14日(日) 20:47:11履歴 Tweet このWikiが目指す所 GCとは? GCを学ぶ前に知っておく事 実行時メモリ構造 基アルゴリズム編 Reference Counter Mark&Sweep Copying 応用アルゴリズム編 IncrementalGC 世代別GC スナップショット型GC LazySweep TwoFinger Lisp2 Partial Mark and Sweep -Cycle Collection- Mostly Parallel GC train gc MostlyCopyingGC(Bartlett 1989) TreadmillGC(Barker 1992) 補足

    GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)