タグ

algorithmとAlgorithmに関するmainyaaのブックマーク (69)

  • Consistent Hashing を試す

    Consistent Hashing は、 複数のノードにレコードを分散させる方法として、 Amazon Dynamo や Cache::Memcached::Fast などで使われているアルゴリズムです。 この文章では、Perl で実際に Consistent Hashing を実装し、 その特徴を理解することを目的とします。 更新履歴 2008-06-01: 公開 サーバー台数で割った余り (mod) を使用する まず Consistent Hashing と比較するために、レコードに対して整数のハッシュ値を求め、 ハッシュ値をノード数で割った余り (mod) で、ノードを選択するという方法を書いてみます。 ここでは、ハッシュ値の算出に CRC (Cyclic Redundancy Check) を使用しています。 use strict; use String::CRC; use Pe

    mainyaa
    mainyaa 2008/06/02
    Perl で実際に Consistent Hashing を実装
  • 1日で作る全文検索エンジン - Building a full-text search engine in "ONE" day - - とあるはてな社員の日記

    最近、「Introduction to Information Retrieval」というStanfordの大学院向け教科書のドラフトを読んでいます。id:naoyaあたりが勉強会で読んでいる教科書です。この教科書には、効率のいい全文検索システムを作るにはどうすればいいか、という(まさに)教科書的手法が網羅的に書いてあり、そのあたりに興味がある人には、非常に興味深く読めるお勧めのです。 ただ、面白い面白いと言っているだけでは、エンジニアとしては価値半減ですので、GW中にrubyで一日かけて実装してみました。 さすがに実装は、一日で作ったものですから、非常に素朴です。マルチバイト文字はbi-gramで、シングルバイトはスペースなどの区切り記号で認識しています。インデックスは、rubyの処理系のHashやArrayで保持しており、外部にMarshallで書き出す、というものです。検索エンジン

  • Video Suggestion and Discovery for YouTube: Taking Random Walks Through the View Graph

    mainyaa
    mainyaa 2008/05/12
    Youtubeのお勧め動画アルゴリズムAdsorptionについて。
  • 「解読不能は数学的に証明済み」、RSAを超える新暗号方式とは ― @IT

    2008/04/11 すべての暗号はいずれ破られる。2000年前のシーザー暗号の時代から高度な暗号技術が一般化したデジタル通信の現代に至るまで、それが暗号通信の歴史が証明し続けた事実であると同時に、もっとも人口に膾炙したクリシェでもあった。例えば、鳴り物入りでリリースされたDVDのコンテンツ暗号技術CSS」(Content Scramble System)が、リリースからわずか数年で10代のノルウェー人ハッカーに破られたことは記憶に新しい。 【追記】(2008年4月15日) この記事は取材に基づいて執筆したものですが、一部専門家らから「CAB方式暗号は解読不能」というのは誇大表現ではないかとの疑義が呈されています。アルゴリズムの公開や第三者による検証がない現在、この記事に登場するCAB方式が発案者・実装者の主張通り画期的な暗号方式で、当に解読が不可能であるかどうか分かりません。現在、専

  • Some more advanced GC techniques

    After my last two posts about garbage collection, some people people suggested some more advanced techniques be used to solve the pausing problem. Here's a quick* overview of some more advanced techniques, some of which can eliminate noticeable pauses and some of which can solve other problems in GC. The train algorithm The idea of the train algorithm is to break the heap (or, really, just the old

  • mixi Engineers’ Blog » スマートな分散で快適キャッシュライフ

    今日は以前のエントリーで書くと述べたConsistent Hashingに関して語らせて頂こうかと思います。ただしConsistent Hashingはセミナーやカンファレンスなどでかなり語られていると思いますので、コンセプトに関しては深入りせず、実用性に着目したいと思います。 問題定義 分散されたキャッシュ環境において、典型的なレコードを適切なノードに格納するソリューションはkeyのハッシュ値に対しmodulo演算を行い、その結果を基にノードを選出する事です。ただし、このソリューションはいうまでもなく、ノード数が変わるとキャッシュミスの嵐が生じます。つまり実世界のソリューションとしては力不足です。 ウェブサイトのキャッシュシステムの基はキャッシュがヒットしなかったらデータベースにリクエストを発行し、レコードが存在したらキャッシュしてクライエントに返すという流れです。ここで問題なのが一瞬

    mixi Engineers’ Blog » スマートな分散で快適キャッシュライフ
    mainyaa
    mainyaa 2008/03/10
    Consistent Hashing
  • Dynamic Programming による類似文字列マッチの実装例

    Dynamic Programming による類似文字列マッチの実装例 2007-01-22-4 [Programming][Algorithm] 「Modern Information Retrieval」(8.6.1 p.216) での Dynamic Programming (DP) の解説のところのアルゴリズムを 素直に Perl で実装したみた。 さらにマッチ箇所取り出しロジックも実装してみた。 # DP はいわゆる「類似文字列検索(あいまい検索)」に使うと 便利なalgorithm。 実は、大学院でも前の会社でも、PerlやらC++やらで実装して使ってた。 単純ながら使い勝手もよく、まさに現場向きかと。 grep 式に頭から見ていくので計算量的にはイマイチなのだが、 転置インデックス検索などで範囲を絞ってから適用すれば実用上問題ない。 ■定義みたいなの Q1. 二つの文字列 "

    Dynamic Programming による類似文字列マッチの実装例
    mainyaa
    mainyaa 2008/03/10
    DynamicProgrammingによる類似文字列マッチをPerlで実装
  • 遺伝的アルゴリズムとニューラルネットワーク、ゲームAIによるキャラクタの「進化」を考える | インサイド

    IGDA日は、ゲームAI連続セミナーの第5回を10月27日に開催しました。今回のメインテーマは遺伝的アルゴリズム(GA)とニューラルネットワーク(NN)で、ともに「生物界の法則」をAIの進化・学習に取り込もうという技術です。講師はフロム・ソフトウェアの三宅陽一郎氏です。三宅氏はXbox360用『クロムハウンズ』のAIの開発者で、CEDECでもAIについての講演を行っています。 今回は、遺伝子アルゴリズムやニューラルネットワークによってNPCをよりよくコントロールする(進化させる)ことがテーマとなりました。遺伝的アルゴリズムでは、「遺伝子」を掛け合わせることで多様なふるまいをするNPCを登場させることができます。また、ニューラルネットワークは個別NPCの行動の精度をあげることができます。 ■遺伝的アルゴリズムは分かりやすく使いやすい 遺伝的アルゴリズムは「集団を一定の方向に進化させる方法」

    遺伝的アルゴリズムとニューラルネットワーク、ゲームAIによるキャラクタの「進化」を考える | インサイド
  • 「ナンプレ」パズルの良問を自動・大量生成する新システム

    SUDOKU」(数独)の名称で人気のパズル「ナンバープレース」(ナンプレ)。同パズルの高品質な問題を自動的に大量生成できるシステムを、タイムインターメディアが開発した。一般的なPCで短時間に問題を作成できる上、パズル作家の考え方を取り入れることで「良問」を生成できるようになっているという。 ナンプレ自体は19世紀末にフランスで登場したものがルーツ。日の出版社「ニコリ」が「数独」と名付けて1984年に掲載し、1997年に日で数独のを目にしたニュージーランド人が2004年11月から英Timesに連載を始め、翌年、ブームに火が付いた。 人気が広がるにつれて問題の需要も増えているが、これに対し「良い問題」の供給が足りていないのが現状という。新システムの開発に当たった同社常務・知識工学センターの藤原博文さんによると、主流はコンピュータによる自動生成だが、良問と悪問の区別がつかない「にわかパズ

    「ナンプレ」パズルの良問を自動・大量生成する新システム