タグ

関連タグで絞り込む (186)

タグの絞り込みを解除

Algorithmとalgorithmに関するyassのブックマーク (155)

  • マージ・ソート : 巨大データのソート法

    はじめに まずはともあれ腕試し、この問題を解いてみてくださいな: 【問1】 デタラメな順序で並んだ文字列の集合がテキストファイル「input.txt」に収められています。この文字列群を辞書順(昇順)に並び換えたテキストファイル「sorted.txt」を作りなさい。 ※各文字列は改行で区切られています。 プログラミング教の練習問題、あるいは学校の課題で出てきそうな“お馴染み”の問題です。ソート(整列)アルゴリズムの実装には配列/代入/条件分岐/ループなどなどプログラミングの基中の基となる構文を総動員するため、練習問題としてよく使われますね。 早速解いてみましょう、ソート・アルゴリズムにはこれまたお馴染みのバブル・ソートを使います。C#、VB.NETC++/CLIの3まとめて一気にいきますよ: using System; using System.IO; using System.C

    マージ・ソート : 巨大データのソート法
  • JavaでTrieデータ構造を実装する

    WEB+DB PRESS vol.42の特集「アルゴリズム&データ構造」でもとりあげられていたTrie(とらい; p34-37)について調べてみたので、忘れないようにメモです。 Trie(s)というのは単語を辞書のなかから見つけ出すときに人がふつうに行っている探し方のアルゴリズムです。例えば、poolならまず、pのところに行って、次にoのところに行って、、、つまり、p -> o -> o -> lと探していきます。続いてprizeを見つけるとしたら、p -> r -> i -> z -> eですが、先頭の文字が同じpなので、pの付近からはずれたところから始めたりはしません。この二つの単語の場合pをprefixと見なすのがTrieです。poolとpoleだったらprefixはpoにのびていきます。prefixがのびていけばいくほど候補は減っていきます。ちょうどIDEのメソッド補完機能のように

    JavaでTrieデータ構造を実装する
  • GoogleのMapReduceアルゴリズムをJavaで理解する

    GoogleMapReduceアルゴリズムをJavaで理解する:いま再注目の分散処理技術(前編)(1/2 ページ) 最近注目を浴びている分散処理技術MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部) いま注目の大規模分散処理アルゴリズム 最近、大規模分散処理が注目を浴びています。特に、「MapReduce」というアルゴリズムについて目にすることが多くなりました。Googleの膨大なサーバ処理で使われているということで、ここ数年の分散処理技術の中では特に注目を浴びているようです(参考「見えるグーグル、見えないグーグル」)。MapReduceアルゴリズムを使う利点とは、いったい何なのでしょうか。なぜ、いま注目を浴びているのでしょうか。 その詳細は「MapReduce : Simplified Data Proc

    GoogleのMapReduceアルゴリズムをJavaで理解する
  • 列挙学校に行ってきました。 - DO++

    2/28, 2/29に三浦で開かれた列挙学校に行ってきました。 公式ページに発表スライドがアップロードされています。すばらしい![link] 列挙問題とは「与えられた条件を満たすものを漏れなく,重複なく出力する問題」で、これを時間、スペース的に効率良く列挙するのが目的になります。この列挙問題は、それ自体問題として面白いですが、実用的にもデータマイニングや機械学習、情報検索(のインデクス作成)、など多くの分野で重要となってきています。 例えば、全ての順序付き木を漏れなく、重複なく列挙するという問題については、単純にやろうと思うと、適当に木を伸ばしていって過去に作ったものと重複していないかチェックしていってというふうにやることが考えられますが、これは時間、スペースともに非常に非効率です。 この順序付き木の列挙問題については最右拡張という方法が知られています。これは、ルートのみの木からはじめて、

    列挙学校に行ってきました。 - DO++
  • 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(ウィキ)
  • livedoor Developers Blog:String::Trigram でテキストの類似度を測る - livedoor Blog(ブログ)

    こんにちは。検索グループ解析チームの nabokov7 です。 今回は、livedoor キーワードでの事例より、テキストの類似度を測るのに便利な手法を紹介します。 livedoor キーワードは、livedoor ブログでその日その日で話題になった語をランキング表示するサービスです。 当初、はてなキーワードやWikipediaを足して2で割ったようなサービスを作れといった開き直った指示のもとで開発が開始されたともいう、分社化前の芸風の名残で、キーワードの検索結果にはユーザが自由に解説を書き込める Wikipedia 的スペースもついています。 で、この解説部分に、さまざまなサイトから文章をまる写ししちゃう人がとても多いのですね。 特に多いウィキペディア日語版からの剽窃を防止するために、livedoor キーワードでは以下のような対策を講じることにしました。 ウィキペディア日語版の解説

  • 無印吉澤(※新エントリはhatenablogに掲載中) - Bloom filterの解説文

    吉澤です。このサイトではIPv6やP2Pなどの通信技術から、SNSやナレッジマネジメントなどの理論まで、広い意味での「ネットワーク」に関する話題を扱っていたのですが、はてなブログに引っ越しました。 最新の記事は http://muziyoshiz.hatenablog.com/ でご覧ください。 RSSフィードは http://muziyoshiz.hatenablog.com/feed に手動で変更するか、 Feedly or Live Dwango Reader を使っている方は以下のボタンで変更ください。 ■[P2P]Bloom filterの解説文 最近、アリエルエリアのホームページがリニューアルされたのをきっかけにサイト内のドキュメントをいろいろ覗いていたら、チーフアーキテクト井上氏によるBloom filterの解説文がありました。去年の11月には既に公開されていたようなので今

  • Bayesian Sets - mots quotidiens.

    Bayesian Sets (Ghahramani and Heller, NIPS 2005)は Google Sets と同じようなことをベイズ的に行うアルゴリズムです。 いくつかアイテムを入れると, それを「補完する」ようなアイテムを 返してくれます。 これは NIPS の accepted papers が出た去年の8月から気になっていて, 会議ではオーラルの発表もあって大体のやっていることはわかった ものの, 何と(会議の時も!)論文がなく, 直接Hellerに連絡して もらえるように頼んでいたところ, Online proceedings の締切りがあった 時に連絡があって, 読めるようになりました。(リンクは下のページ参照) 岡野原君に先に 紹介 されてしまいましたが, 以下は, 岡野原君が書いていない話。 Bayesian Sets は, アイテム集合 D に対して,

  • どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup

    Webの全体像を効率よく取り込み,分類する 「YSTのシステムは大まかに三つの機能に分かれます(図2)。最初は世界中のWebページをYSTのシステムに取り込む『クローリング(crawling)』という機能です」(Yahoo! JAPAN,リスティング事業部 検索企画室の宮崎光世氏,以下同)。 取り込むと簡単に言っても,Webページの数は膨大なうえ,更新の頻度や情報の質などがまちまちです。すべてのページに同じようにアクセスしていると非効率なことこの上ありません。そこで,限られた時間で質の良い検索ができるようにするための工夫をしています。例えば,クローリングを繰り返すうちに頻繁に更新されることがわかったページは短いサイクルでチェックし,ほとんど更新のないページはチェックの頻度を落とす,といったことをしているそうです。 ただ,更新の頻度が単に高いだけではダメです。重要性が高いと考えられるWebサ

    どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup
  • 定番アルゴリズムを徹底理解! - 今からでも遅くない!アルゴリズム入門:selfup

    このパートでは,プログラミングを勉強するうえで欠かせないアルゴリズムの中でも定番中の定番を紹介します。ソート(並べ替え)やサーチ(検索)などの機能は今では標準のライブラリとして提供されています。実用的なプログラムを作るときにそのものずばりをいちいち書く機会は少ないかもしれません。しかし定番のアルゴリズムは,様々に形を変えて普段のプログラミングに登場します。 解説を読んで仕組みがわかったら,ぜひそれをプログラムにしてみてください。読んだだけではプログラムを書けるようにはなりませんし,プログラムを書いてみて初めて,実は十分に理解できていなかったと気付くことがよくあります。しかもアルゴリズムは特定のプログラミング言語に依存しないので,一度身に付ければ,後でどんな言語を学ぶ場合でも役に立ちます。 1番目から6番目まではソートのアルゴリズム,7番目から9番目まではサーチのアルゴリズムです。一つひとつ

    定番アルゴリズムを徹底理解! - 今からでも遅くない!アルゴリズム入門:selfup
  • 高度プログラミング演習(九州大学全学共通教育科目)の説明資料

    実践プログラミング CとC++プログラミングに関するいくつかの例題と解説. 単なるプログラミングテクニックや文法の解説ではなく, 背後にある考え方の習得(アルゴリズム,データ構造,数学など)を重視して いる. プログラムをじっくり眺めそこから技法を学び取る. 最大値 [HTML] 曜日の計算 [HTML] 平均値,分散 [HTML] 2次方程式の解 [HTML] 最小自乗法 [PPT], [HTML] 待ち行列シミュレーション [PPT], [HTML] アーランの即時式モデル [PPT], [HTML] 行列のLU分解 [PPT], [HTML] ニュートン法による非線型方程式の解 [PPT], [HTML] 数値積分 [PPT], [HTML] 2分探索木 [PPT], [HTML] ヒープソート [PPT], [HTML] クイックソート [PPT], [HTML]

  • [結] InstantRails でRuby on Railsを動かす - 2006年3月 - 結城浩の日記

    目次 2006年3月29日 - マルチリンガルの時代 / 2006年3月27日 - 模様替え / 2006年3月25日 - ナルニア国物語 / LaTeXで式展開の説明文を付ける方法 / 2006年3月24日 - 伝統と変化 / 2006年3月22日 - 当選者発表中 / 2006年3月21日 - JWord防止 / 2006年3月20日 - コンセプトアウト・デマンドイン / 2006年3月19日 - 日曜日 / 2006年3月17日 - アルゴリズムを学習する最良の方法 / 2006年3月16日 - すばらしいに仕上がっています / 『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』無料プレゼント / 2006年3月14日 - 結城浩の最新刊『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』 / rubyco(るびこ)の日記 / 2006年3月13

    yass
    yass 2006/03/18
    アルゴリズムを学習する最良の方法
  • 最適化法optimization

  • RSSリーダ・サービスが更新チェックするフィードを選択するアルゴリズム(修正版) - llameradaの日記

    先日、はてなは理系の会社? - higepon blogのエントリに触発されて、RSSリーダ・サービスが更新チェックするフィードを選択する戦略を考えた。(更新をチェックするRSSフィードの賢い選択方法 - llameradaの日記) 一応の結果を得たものも、先日の計算で求めた式には不満があった。それはフィードの更新頻度が反映されていない点である。計算間違いかと思い、何度か計算をチェックしたが、計算自体は問題ないようであった。 そこで改めて考え直してみると、フィードの更新モデルが不適切であった。フィードが更新される間隔に指数分布を仮定していたが、この仮定は明らかにおかしい。指数分布ではフィードの更新間隔が0である確率が0ではない。指数分布ではなくベータ分布を仮定すべきであった。(指数分布もベータ分布の一種ではあるが。) そこで、フィードの更新間隔にベータ分布を仮定して、再計算しようとしたが、

    RSSリーダ・サービスが更新チェックするフィードを選択するアルゴリズム(修正版) - llameradaの日記
  • 255byte以内のURLに対してMD5でハッシュを得たときに、それがコリジョンを起こす場合はありますでしょうか。…

    255byte以内のURLに対してMD5でハッシュを得たときに、それがコリジョンを起こす場合はありますでしょうか。 255byte程度の短い文字列に対してであればコリジョンが発生しないと聞いたのですが根拠となる情報があれば教えてください。