タグ

algorithmに関するmoozのブックマーク (225)

  • アルゴリズム解説

    このページでは、リバーシプログラムThellの思考エンジン"spot"で使われているアルゴリズムについて解説します。リバーシプログラミングについてある程度の理解と経験があることを前提としていますので、初めての方は参考文献にあるような文書を参照することから始めるとよいでしょう。 2005/10/01 PVSとalpha-betaの性能比較を掲載。 2005/09/30 置換表の項目を独立。ハッシュキーの生成について追記。 2005/09/23 「関連リンク」を「参考文献」として分離。 2005/07/19 評価関数について気まぐれで書いた文書 2005/07/17 Thell 3.0.2リリースにあわせ、反復深化について追記。 2005/07/06 図を追加。評価関数学習について若干追記。 2005/07/04 置換表について追記。擬似コードを掲載。 2005/06/26 リンクに探索アルゴ

    mooz
    mooz 2010/04/21
    オセロ, リバーシ
  • プログラミングコンテストでのデータ構造

    前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757

    プログラミングコンテストでのデータ構造
  • QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。

    かつてのMac OS9までの描画エンジンの主役はQuickDrawが担っていた。GUIなOSでは、文字も含めてすべてをグラフィックとして扱うので、画面に見えているすべてのもの*1はQuickDrawによって描かれていたことになる。描画エンジンは、GUIなOS開発の要となる技術である。その出来が、GUIなOS開発の成否を分けるとも言える。 そして、最初期のQuickDrawは、ビル・アトキンソンがたった一人で開発したそうである。 当時(25年以上前)のCPUは、動作クロックが8MHzという性能だった。(現在は2GHz=2000MHzかつ、複数コアが当たり前) そのような性能であっても、違和感なくマウスで操作できるOS環境にするために、斬新な発想や試行錯誤を重ね、相当な努力の末に開発されたのがLisaやMacintoshであった。 Amazon.co.jp: レボリューション・イン・ザ・バレー

    QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。
    mooz
    mooz 2010/03/20
    ビルのアルゴリズム, ブレセンハム.
  • 特徴点検出器を作ってライブラリに追加した - デー

    前々からアニメ顔類似検索のbag of featuresで使っている特徴点の決め方がイラストにあまり合っていない気がしていたけど、実装がすごく面倒くさそうだったのでやらなかった。しかし、最近SURFに特許があることが発覚して、SURFを使っている意味は特にないなーと思ったので、満足のいくものをつくろう思ったのであった。(ただ特許は気にせずにやる) ということで、こんなのができた(クリックで拡大)。 結構速いし、スケールの変化、回転、ある程度のゆがみには大体対応できている。対応点の決定は、点の特徴ベクトルが一番近い点と二番目に近い点を取って、ふたつの特徴ベクトルの距離の差を確信度として、確信度が高いもののみマッチングしたことにして表示している。 SIFTやSURFに比べると点多すぎだろ(なぜ渦巻きに…)と思うかもしれないけど、これは僕なりにイラストの特性とかbag of featuresで使

    特徴点検出器を作ってライブラリに追加した - デー
    mooz
    mooz 2010/03/13
    新しい特徴点検出
  • suffix array

    更新履歴 2004/01/07  O(N) 構築アルゴリズム三種追加(Ko &Alulu, Kim & al., Karkkainen & Sanders) Suffix Arrayは、最近注目を集めているデータ構造です。その理由として、 (1)大規模なデータに対して、高速に検索、情報抽出を行うことができる (2)BWTとしてデータ圧縮に用いることができる。 ことが挙げられます。(1)に関しては自然言語処理において、膨大な量のコーパスから情報(例えば、単語の出現回数など)を調べるときににSuffix Arrayを用いると非常に高速に求めることができます。 膨大な量のコーパスに基づいた自然言語処理が盛んになってきている今、Suffix Arrayが注目を集めています。 また、ゲノム情報を調べるバイオインフォマティクスにおいても、ここの配列と似ている部分(例えばCCAG)を調べるといった場合

  • Top-k文書列挙問題 - DO++

    いろいろとありまして去年読んだ論文で面白かったものランキングとか書けなかったのが残念ですが、もしあげるとしたら次の論文は入れると思います(知ったのは年明けだったけど)。 "Space-Efficient Framework for Top-k String Retrieval Problems", FOCS 2009, Wing Kai Hon, Rahul Shah and Jeffrey Scott Vitter (pdf) 扱っているのは次のような問題です(説明のため来のと言い換えています) n個の葉からなる木が入力として与えられ,各葉には色(1以上d以下の整数とします)が与えられています. この時、木中の任意の節点と正整数kがクエリとして与えられたときに、その節点の子孫の中で出現回数が大きい色を順にk個答えよという問題です。 簡単に思いつくのは,各節点に適当な個数(d)の答えをあ

    Top-k文書列挙問題 - DO++
  • NLP2010 言語処理学会チュートリアル - DO++

    今日から開催されている言語処理学会のチュートリアルで ”超高速テキスト処理のためのアルゴリズムとデータ構造” というタイトルで発表させていただきました。 チュートリアル資料はこちら(pdf)です。(出典などは適宜追加します) 今までいろいろなところで話してきた、オンライン学習、文字列、疎ベクトルデータ構造を最新の話を追加して、さらに乱択化(Hash Kernel, 乱択化SVD)を解説しています。 発表自体は途中でブルースクリーンが出るということもありましたが、なんとか終えられてよかったです。 これに付随していろいろツールを公開する予定だったがまにあわなかった。そのうち公開します

    NLP2010 言語処理学会チュートリアル - DO++
    mooz
    mooz 2010/03/09
    ”超高速テキスト処理のためのアルゴリズムとデータ構造
  • SQLによる数独の解法 #deim2010 by Inquisitor

    2/28から3/2にかけて開催されたDEIM2010で発表してきました。 ワークショップの様子 Togetter – まとめ「DEIM2010 初日」 Togetter – まとめ「DEIM2010 2日目」 Togetter – まとめ「DEIM2010 最終日」 「データベースの授業で使いたい」というコメントを多くの方からいただいたので、そのためのマテリアルを公開します。 プレゼンスライド SELECT文を作成するためのJavaプログラム MySQLを使って数独を解くためのJavaプログラム 作成したSELECT文の例(アンダースコアを削除している。同じものが、プレゼンスライドの最後にも載っている) 論文の最終版は後で公開します。 論文:矢吹太朗, 佐久田博司. SQLによる数独の解法とクエリオプティマイザの有効性. 日データベース学会論文誌. Vol.9, No.2, pp.13–

  • 「ガベージコレクションのアルゴリズムと実装」という本を書きました。

    gcbook, gcai, GCGCLoverのみなさん、お待たせしました。「ガベージコレクションのアルゴリズムと実装」の情報公開です。 書名:ガベージコレクションのアルゴリズムと実装 著者:中村 成洋/相川 光 監修:竹内 郁雄 ページ数:472ページ 体価格:3,200円 発売開始日:2010年3月17日(水) ※地域・書店によって遅れることがあります ISBN:978-4-7980-2562-9 C3055 読み所 書は次の2つのテーマを扱います。 1.GCのアルゴリズム(アルゴリズム編) 2.GCの実装(実装編) アルゴリズム編では、これまでに考案されてきた数多くのGCアルゴリズムの中 から、重要なものを厳選して紹介します。伝統的かつ基的なものから、やや 高度なアルゴリズムを選定しています。GC独特の考え方や各アルゴリズムの特 性などを理解していただくのがアルゴリズム編の最大

    mooz
    mooz 2010/03/04
    買います
  • Quicksilverは如何にして鋭い検索を行っているのか? - ザリガニが見ていた...。

    Quicksilverの検索性能が、感性をくすぐってきた。 「apple」→「AppleScript Editor」 「ase」→「AppleScript Editor」 「prol」→「Property List Editor」 「im」と入力して、「Image Capture」を起動したいが、「iMove」がトップヒットになってしまう...。 そんな状況でも、候補リストから2回連続で「Image Capture」を選択すれば、3回目以降は「Image Capture」がトップヒットになる。 直近のユーザーの好みを学習してくれるのだ。 もちろん、「ima」まで入力すれば「Image Capture」がトップヒットになる。 「ase」「prol」のような、単純な前方一致でも、部分一致でもない検索には恐れ入る。しかも、シンプルだけど学習もしてくれる。使うほどに手に馴染んでくる仕組みは、この辺

    Quicksilverは如何にして鋭い検索を行っているのか? - ザリガニが見ていた...。
    mooz
    mooz 2010/03/01
    Abbreviation Scoring
  • 素数マスターへの道(2) - カメヲラボ

    フェルマーの小定理 フェルマーの小定理という、素数判定には欠かせない定理があります。 3,5,7,11という素数を使って、以下のような計算をしてみます。 2^ 3 = 8, 8 / 3 = 2 余り2 2^ 5 = 32, 32 / 5 = 6 余り2 2^ 7 = 128, 128 / 7 = 18 余り2 2^11 =2048, 2048 /11 = 186 余り2 2を3乗して、それを3で割ると、あまりが2になります。2を5乗して5で割っても、あまりは2になります。7,11,13,17,…と、素数を使ってこの計算をすると、必ず2になるのです。今、2という数字を使いましたが、他の数ではどうでしょうか? 3^ 3 = 27, 27 / 3 = 9 余り0 3^ 5 = 243, 243 / 5 = 48 余り3 3^ 7 = 2187, 2187 / 7 = 312 余り3 3^11 =

    素数マスターへの道(2) - カメヲラボ
    mooz
    mooz 2010/03/01
    素数
  • tf–idf - Wikipedia

    情報検索の分野において、tf–idf (または、 TF*IDF、TFIDF、TF–IDF、Tf–idf)は、term frequency–inverse document frequencyの略であり、コーパスや収集された文書群において、ある単語がいかに重要なのかを反映させることを意図した統計量(数値)である[1]。また、tf-idfは情報検索や、テキストマイニング、ユーザーモデリング(英語版)における重み係数(英語版)にもよく用いられる。ある単語のtf-idfの値は文書内におけるその単語の出現回数に比例して増加し、また、その単語を含むコーパス内の文書数によってその増加が相殺される。この性質は、一般にいくつかの単語はより出現しやすいという事実をうまく調整することに役立っている。今日、tf-idfはもっとも有名な語の重みづけ(term-weighting)手法である。2015年に行われた研究

    mooz
    mooz 2010/02/28
    文章中の特徴的な単語(重要とみなされる単語)を抽出するためのアルゴリズム
  • Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録

    類似画像検索システムを作ろう(2009/10/3) 3日で作る高速特定物体認識システム(2009/10/18) に続くOpenCVプロジェクト第三弾です。今回は、上の二つをふまえてカラーヒストグラムではなく、局所特徴量(SIFTやSURF)を用いた類似画像検索を試してみます。局所特徴量はグレースケール画像から抽出するため、カラーヒストグラムと違って色は見ていません。画像の模様(テクスチャ)で類似性を判定します。 実験環境は、Windows 7、MinGW C++コンパイラ、OpenCV2.0、Python 2.5です。EclipseでMinGWを使う方法はEclipseでOpenCV(2009/10/16)を参照してください。Visual C++にはないディレクトリスキャン関数を一部使っているのでVisual C++を使う場合は、少しだけ修正が必要です。 Bag-of-Visual Wor

    Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録
    mooz
    mooz 2010/02/28
    『Bag-of-Visual Wordsは、テキストの単語⇔画像の局所特徴量と対応させる方法です。』
  • Redirection

    This page has moved. Click here: http://www.ericbrasseur.org/gamma.html

    mooz
    mooz 2010/02/27
    輝度を考慮した画像のスケーリング
  • Taberarelooのタグ補完について - 枕を欹てて聴く

    Taberarelooは基的にid:ConstellationによるTombloo experimental branch on Chromiumだと思ってもらって結構で, 面白いと思ったことを放り込みます. そのためbugがでて急遽修正というreleaseも多いのですが... また一方で tomblooと違うというところは大抵bugであるとみなしてもらって結構です. Twitter / Constellation: @you999 何かbugありましたかー? 基的に ... と公言していたりするのですが(Chromeでは実現不可能とかいう部分以外に関して), Tomblooと意図的に差別化している部分があります. それがタグ補完部分です. 今回logicをもうちょっと変更しいろいろ面白くなったので記事にしました. 補完, 何やってるの? Taberarelooの補完はAbbrevia

    Taberarelooのタグ補完について - 枕を欹てて聴く
    mooz
    mooz 2010/02/26
    Abbreviation Scorer -> 工夫
  • fujimap: 簡潔な連想配列 - DO++

    博論終わったので仕事の合間にfujimapというライブラリを作ってみました。 fujimap project fujimapは作業領域が非常に小さい連想配列で、文字列からなるKeyを利用して、整数値もしくは文字列からなるValueを登録・参照することができるライブラリです。 今巷では大規模なKey Value Stroe (KVS)が流行っていますがFujimapは一台のマシンのメモリ上で動作することを想定して作成されています.Fujimapの特徴は必要な作業領域量が非常に小さいことです.キー自体を明示的に保存しないため、作業領域は値を格納するのに必要なサイズと、許容するfalse positive(後述)にのみ依存します。 例えば、google N-gramのunigramの約1300万キーワードとそれらの頻度の対数を記録する場合、false positiveを気にしないなら、一キーワー

    fujimap: 簡潔な連想配列 - DO++
  • http://japan.internet.com/developer/20100219/26.html

    mooz
    mooz 2010/02/20
    編集距離
  • bayonやCLUTOが爆速な理由 - download_takeshi’s diary

    クラスタリングツールbayonを使っていて、常々「どうしてこんなに高速に処理できんのかなぁ」と疑問に感じていました。repeated bisectionという手法自体がk-means法などと比べると効率がいいのですが、それにしても、それだけでは説明がつかないほど爆速なわけです。 うまく例えられませんが、自前でk-meansのスクリプトを書いて比べてみると、自転車と新幹線くらいちがうという印象です。はじめてCLUTOを触った時、数万件程規模のクラスタリング処理が当に「あっ」という間に終わってしまい、びっくりした記憶があります。 きっと実装面でなにか特殊なことがあるんだろうなと思い、mixiエンジニアブログでbayonの記事を改めて読み漁っていたら、以下の部分が目に止まりました。 このクラスタの評価は、クラスタの各要素とクラスタの中心とのcosine類似度の和としています。この和が大きいほど

    bayonやCLUTOが爆速な理由 - download_takeshi’s diary
  • 経路探索アルゴリズムの「ダイクストラ法」と「A*」をビジュアライズしてみた - てっく煮ブログ

    as詳解 ActionScript 3.0アニメーション ―衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック を読んでいて、経路探索のアルゴリズムで A* が取り上げられていました。A* については、いろいろ検索して調べたりもしたのですが、やっぱりに書いてあると理解しやすいですね。せっかくなので自分流に実装してビジュアライズしてみました。ダイクストラ法まずは A* の特別なケースでもあるダイクストラ法から見ていきます。クリックすると探索のシミュレーションが開始します。スタート地点(S)からゴール(G)への探索が始まります。色がついたところが「最短経路が決定した場所」です。スタート地点から少しずつ探索が完了していきます。半分ぐらい完了しました。まだまだ進みます。最後まで終わりました。最短経路を黒色矢印で表示しています。ダイクストラ法は、スタート地点から近いノード(=マス

    mooz
    mooz 2010/01/26
    ダイクストラと A* の可視化
  • 知れば天国、知らねば地獄――「探索」虎の巻

    いよいよ今回から、具体的なアルゴリズムの紹介に入っていきます。今回は、プログラミングにおける重要な概念である「探索」について考えます。グラフに変換し、探索する、という流れを知るとともに、そのグラフを効率よく探索する方法について紹介します。 今後紹介していくアルゴリズムについて お待たせしました! 「最強最速アルゴリズマー養成講座」という連載タイトルのとおり、今回の連載からいよいよ具体的なアルゴリズムの紹介に入っていきたいと思います。 しかし、それを読んでいただく前に、1つ注意してもらいたいことがあります。連載第3回でもお伝えしたように、「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である、ということです。 筆者の経験上、TopCoderでRedCoder以上を目指すのであれば、回答時間短縮のために、いままでのパターンを利用するのも方法の1つなのですが、連載では

    知れば天国、知らねば地獄――「探索」虎の巻
    mooz
    mooz 2010/01/17
    "「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である"