タグ

algorithmに関するcubicdaiyaのブックマーク (113)

  • ソートアルゴリズムを映像化してみた - jsdo.it - Share JavaScript, HTML5 and CSS

    よくあるやつです。ぼんやり眺めてると、とても癒されます。 2014/2/25 追記: 全面的に書き直しました。 // https://github.com/norahiko/sort-visualize var helper = { range: function(min, max) { var res = []; for(var i = min; i < max; i++) { res.push(i); } return res; }, shuffle: function(ary) { for(var i = ary.length - 1; 0 <= i; i--) { var rnd = Math.random() * (i + 1) | 0; helper.swap(ary, i, rnd); } }, swap: function(ary, a, b) { if(a < 0 ||

    ソートアルゴリズムを映像化してみた - jsdo.it - Share JavaScript, HTML5 and CSS
  • Neat Algorithms - Flocking

    In this post I’ll explain and demonstrate an algorithm that simulates a group of entities grouping together, illustrating something called “flocking”. I think it’s quite neat because the flock exhibits some complex collective intelligence when just a few simple governing rules are applied to each entity. The original flocking algorithm was developed by Craig Reynolds in 1986, and has some super co

  • Pattern | CLiPS

    Pattern is a web mining module for the Python programming language. It has tools for data mining (Google, Twitter and Wikipedia API, a web crawler, a HTML DOM parser), natural language processing (part-of-speech taggers, n-gram search, sentiment analysis, WordNet), machine learning (vector space model, clustering, SVM), network analysis and <canvas> visualization. The module is free, well-document

  • EMアルゴリズムによるスペル訂正エンジン - nokunoの日記

    以下の論文が面白かったので紹介したいと思います。Learning a Spelling Error Model from Search Query Logs Noisy Channel Modelによるスペル訂正エンジンスペル訂正には標準的なNoisy Channel Modelを使うことができます(最近は識別モデルも流行りのようです)。A Spelling Correction Program Based on a Noisy Channel ModelNoisy Channel Modelでは、入力が与えられたときの訂正候補の確率を以下のようにモデル化します。言語モデル はコーパスやクエリログから単語N-gram、文字N-gramなどを推定し、スムージングして利用することが一般的です。エラーモデル は入力と出力候補の編集距離をもとに計算することが多いです(他に共起頻度やクリックログを利

  • アルゴリズムへの招待

    適当な圧縮ルールを作り、ASCII文字で描いた絵をなるべく少ない文字数で表現するには、どうする?(詳しくは第2回を参照) アルゴリズムを構成する楽しい仕組みを紹介しながら、あなたに「おおっ」と言わせたい――。これが連載『地球にやさしいアルゴリズム』の最初の目的です。「数独パズルを解く」「ASCIIアートを圧縮する」など12の問題を用意しました。ぜひ挑戦してみてください。 問題を解けても解けなくても、アルゴリズムに興味を持てたなら、関連する文献や記事を抵抗なく読めるようになるはずです。アルゴリズムを使いこなしたり、新しく作ることも無理なくできるようになるでしょう。 まずはいろいろなアルゴリズムの面白いところを見て、楽しんでみましょう。 連載目次 第1回 ナンプレを解いてみよう 第2回 パズルみたいに楽しいデータ圧縮 第3回 「場面」の移り変わりに注目する 第4回 できるだけ短いルートでゴール

    アルゴリズムへの招待
  • 『MPJoin を使った類似データ抽出 ―アルゴリズムシリーズ 1―』

    Hattori です。以前書いた記事の冒頭 で、”今度はシリーズで何かエントリを書きたい ! ”と軽いノリで一文を表記しておいたら、ホントにやることになりました。 弊社のエンジニア組織の特徴のひとつに、手を上げる・声を上げると、『じゃ、やってよ。』というノリで返ってくるという事が挙げられるのですが、今回もその例に漏れなったわけですね・・・。シクシク・・・。 というわけで、何を書こうかなぁって話しなんですが・・・。私の場合アルゴリズム系の話しかできそうにないので、毎回ポツポツとマイナーで極一部の人にしかウケないテーマを紹介して行こうと思います。 で、初回の今回は SimilarityJoin 関連のアルゴリズムで "MPJoin" というやつを紹介したいと思います。 ■ Similarity Join とは何ぞや? まず最初に SimilarityJoin [1] の定義なんですが、ざっくり

    『MPJoin を使った類似データ抽出 ―アルゴリズムシリーズ 1―』
  • How to Implement World Fastest Grep.

    当です. 世界最速のgrep 作りました. このネタで学会発表とかしました. #=> JSSST, プログラミング・シンポジウム 「動的なコード生成を用いた正規表現マッチャの実装」 最近... 「世界最速のgrep」とはしゃいでも研究室内で相手にされなくなってきました. 先輩「へぇ, そうなの.」 同僚「はいはい最速最速.」 後輩「grepってなんですか?」 先生「そんなことより並列化は? 英語で論文書いて. PS3上で動かして.....」

  • MinHashによる高速な類似検索 - Preferred Networks Research & Development

    年が明けてもう一ヶ月経ちましたね.岡野原です. 今日はMinHashと呼ばれる手法を紹介します.これは特徴ベクトルの高速な類似検索に利用することができます(クローラーの文脈だとShingleとして知られている). 今や世の中のあらゆる種類のデータが,高次元のバイナリベクトルからなる特徴ベクトルで表されて処理されるようになってきました.例えば文書データであれば文書中に出現する単語やキーワードの出現情報を並べた単語空間ベクトル(Bag of Words)で表し,画像データも,SIFTをはじめとした局所特徴量を並べた特徴ベクトル(とそれをSkecth化したもの)として表せます.行動情報や時系列データも特徴量をうまく抽出する.グラフデータもFast subtree kernels[1]と呼ばれる方法で非常に効率的に特徴ベクトルに変換することができ,グラフの特徴をよく捉えることができるのが最近わかっ

    MinHashによる高速な類似検索 - Preferred Networks Research & Development
  • StringSearch – high-performance pattern matching algorithms in Java

    StringSearch High-perfor­mance pattern matching algo­rithms in Java The Java language lacks fast string searching algorithms. StringSearch provides implementations of the Boyer-Moore and the Shift-Or (bit-parallel) algorithms. These algorithms are easily five to ten times faster than the naïve implementation found in java.lang.String. Download Documentation This library contains impleme

  • このページを見るには、ログインまたは登録してください

    Facebookで投稿や写真などをチェックできます。

  • トライ(ダブル配列,簡潔データ構造)と STL コンテナの比較(最新版) - ny23の日記

    [2011/11/30 更新; std::(unordered_)map でメモリ使用量を見積もる - ny23の日記に従い,STL コンテナのメモリ使用量を計測] [2011/02/21 更新: marisa-trie 0.1.3; 発表資料(Prefix/Patricia Trie の入れ子による辞書圧縮) - やた@はてな日記 にてこの記事の実験結果を引用されているので,以後原則更新しないこととする.なお,marisa-trie は 検索時間が短くなりました - やた@はてな日記 にあるように,marisa-0.2.0-beta3 以降ではさらに検索が速くなっています.] [2011/02/18 更新: marisa-trie の仕様変更に伴い,追記の記述を整合性が取れるよう変更; 最新版では未確認] id:s-yata さんが marisa-trie を公開されたので,例によってベ

    トライ(ダブル配列,簡潔データ構造)と STL コンテナの比較(最新版) - ny23の日記
  • オープンソースのTrieライブラリまとめ - nokunoの日記

    最近、趣味で開発しているStaKKのためにTrieライブラリを書いているのですが、参考にするためオープンソースのTrieライブラリについて調べました。簡潔データ構造を用いたものが中心です。 @hillbig氏によるもの tx LOUDSによる圧縮でメモリ使用量を削減したTrieライブラリ。 関連記事:Tx: Succinct Trie Data Structure Engineering the LOUDS Succinct Tree Representation - 射撃しつつ前転ux txの改良版。tailの圧縮によりtxの1/2くらいのサイズになるらしい。要チェック。 関連記事:ux... - ny23の日記id:s-yata 氏によるもの taiju LOUDSを含む簡潔データ構造を用いた大規模Trieライブラリ。sumire-triesインメモリの簡潔データ構造を実装した大規模T

  • トライ(ダブル配列,簡潔データ構造)と STL コンテナ - ny23の日記

    以前実装した構築速度重視の動的ダブル配列 (表中 dda) の構築速度を Darts, darts-clone (0.32g beta5, 0.32e5), DASTrie (1.0), doar (0.0.10),簡潔データ構造を利用したトライ (tx 0.16) ,STL コンテナ (std::map, std::tr1::unordered_map) 辺りと比べてみた.キー集合としては,中規模で疎な集合(Wikipedia 英語版記事タイトル)と小規模で密な集合(郵便番号辞書)を用いた. ====================================================================== Wikipedia-en 記事タイトル | Build | Search | Search* | Size [bytes] =================

    トライ(ダブル配列,簡潔データ構造)と STL コンテナ - ny23の日記
  • TouchRetouchのアルゴリズム

    画像修復(inpainting)とは画像中の欠損領域を、何らかの方法で修復することを指します。iPhoneアプリとしてはTouchRetouchが有名ですね。 基的に、画像修復はマルチコアのCPUを使っても2・3分は余裕でかかる処理なのに、TouchRetouchでは、iPhoneという非力なプラットフォームにもかかわらず10秒程度で処理が終了しています。このTouchRetouchがどのようなアルゴリズムで修復を行っているのかが気になったので、少し調べてみました。 画像修復とひとくちにいっても、 1. 輝度値の連続性を考慮した画像修復 2 .特徴空間での補間による画像修復 3. テクスチャの逐次合成による画像修復 4. テクスチャの全体最適化による画像修復 といったものがあるようです。 ここらへんはこちらの論文を参考にさせていただきました。 輝度値の変化と画像の局所性を考慮したパターン

  • Substring search algorithm

    Described new online substring search algorithm which allows faster string traversal. Presented here implementation is substantially faster than any other online substring search algorithms for average case. Substring (needle) SS of length M is sought in source (haystack) string S of length N. Algorithm sequentially steps through string S, and probes word W (2 or more bytes) if it belongs to SS. S

  • Ruby で Double-Array を実装して Common-Prefix Search を試してみる - P A R A G R A P H S

    lib/trie/double_array.rb at master from tily's ruby-gardening - GitHub Double-Array (ダブル配列) は トライ木を実装するためのアルゴリズムの 1 つで、他の実装よりも高速に TRIE から文字列を検索できるらしい。ChaSen や MeCab で、形態素解析を行うために必要な Common-Prefix Search (共通接頭辞探索) を行うために使われている。これを理解のために Ruby で実装してみた。 基的な動作確認 ここに書いてある bird, bison, cat の 3 単語で構築した Double-Array の例。 コード: require 'trie/double_array' da = Trie::DoubleArray.new da.build(%w|bird bison cat

    Ruby で Double-Array を実装して Common-Prefix Search を試してみる - P A R A G R A P H S
  • Rubyでソート・アルゴリズムを表現しよう! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyでソート・アルゴリズムを表現しよう! : melborne.github.com - アルゴリズムとその実装には往々にして乖離があります アルゴリズムが理解できてもその実装が複雑で 理解に苦しむ ということが少なくありません 原因の1つはプログラミング言語の記述力にあると思います Rubyは極めて記述力が高い言語です 人間の意志をコードで表現する上での制約が極めて少ないのです これが動く疑似コードと言われる所以です ソート・アルゴリズムは配列によるデータ構造を操作します RubyのArrayクラスは強力だから Rubyの記述力を証明するいい題材になります 早速 挿入ソート 選択ソート バブルソート クイックソート マージソートをRubyで表現してみましょ

    Rubyでソート・アルゴリズムを表現しよう! - hp12c
  • Compressed Suffix Arrayの記事まとめ - EchizenBlog-Zwei

    一応CSAの記事を書き終えたので、各記事へのリンクリストを。 補足:記事を7つも読むの面倒くさい人は、↓にもう少し簡単な圧縮法の解説を書いておいたので参照されたい。 15分でわかる(とうれしい)Suffix Arrayの簡単な圧縮法 Compressed Suffix Arrayの解説(1) -Suffix Array- Compressed Suffix Arrayの解説(2) -SAの計算量- Compressed Suffix Arrayの解説(3) -圧縮の方針- Compressed Suffix Arrayの解説(4) -unary記法- Compressed Suffix Arrayの解説(5) -Succinct Bit Vector- Compressed Suffix Arrayの解説(6) -B Vectorと Ψ Vector- Compressed Suffix

    Compressed Suffix Arrayの記事まとめ - EchizenBlog-Zwei
  • You’re Doing It Wrong - ACM Queue

    The Bike Shed June 11, 2010 Volume 8, issue 6 PDF You're Doing It Wrong Think you've mastered the art of server performance? Think again. Poul-Henning Kamp Would you believe me if I claimed that an algorithm that has been on the books as "optimal" for 46 years, which has been analyzed in excruciating detail by geniuses like Knuth and taught in all computer science courses in the world, can be opti

  • マルチコア時代の"データ構造とアルゴリズム"再入門

    データ構造とアルゴリズム再入門 はじめに ・並{行|列} & {Lock|Wait}Free ・ABA & ABA' ・volatile & メモリバリア ・プリミティブ ・CAS ・MCAS ・STM ・メモリ管理:free & GC ・Toots List & Skiplist [単方向List] ・リスト ・細粒度リスト ・Lazyリスト ・Lock-Freeリスト ・Lock-Freeリスト2 [SkipList] ・スキップリスト ・Lazyスキップリスト ・Lock-freeスキップリスト [双方向List] Queue & PriorityQueue [UnBounded Queue] ・Queue ・CAS based Lock-Free Queue ・LL/SC based Lock-Free Queue [Unbounded Priority Queue] ・Heap