タグ

algorithmに関するnilabのブックマーク (111)

  • Face Recognition Homepage - Algorithms

    Image-Based Face Recognition Algorithms PCA|ICA|LDA|EP|EBGM|Kernel Methods|Trace Transform AAM|3-D Morphable Model|3-D Face Recognition Bayesian Framework|SVM|HMM|Boosting & Ensemble Algorithms Comparisons PCA Derived from Karhunen-Loeve's transformation. Given an s-dimensional vector representation of each face in a training set of images, Principal Component Analysis (PCA) tends to find a t-dime

    nilab
    nilab 2007/05/04
    Face Recognition Homepage - Algorithms
  • スペル修正プログラムはどう書くか

    Peter Norvig / 青木靖 訳 先週、2人の友人(ディーンとビル)がそれぞれ別個にGoogleが極めて早く正確にスペル修正できるのには驚くばかりだと私に言った。たとえば speling のような語でGoogleを検索すると、0.1秒くらいで答えが返ってきて、もしかして: spelling じゃないかと言ってくる(YahooMicrosoftのものにも同様の機能がある)。ディーンとビルが高い実績を持ったエンジニアであり数学者であることを思えば、スペル修正のような統計的言語処理についてもっと知っていて良さそうなものなのにと私は驚いた。しかし彼らは知らなかった。よく考えてみれば、 別に彼らが知っているべき理由はないのだった。 間違っていたのは彼らの知識ではなく、私の仮定の方だ。 このことについてちゃんとした説明を書いておけば、彼らばかりでなく多くの人に有益かもしれない。Google

    nilab
    nilab 2007/05/02
    スペル修正プログラムはどう書くか : "How to Write a Spelling Corrector" by Peter Norvig
  • きまぐれ日記: 動的配列への追加コストはなぜ O(1)?

    動的配列への追加コストは O(1) ってのは覚えていればそれだけの話ですが,どうしてかと言われると意外と難しいものです. というのも, このO(1)ってのは動的配列の実装方法に強く依存しているからです.実装を知っていないと答えられません. 一般論として,1つ要素を追加するとき,配列に空きがなかったら新しく配列を作り直して全要素をコピーする必要があります.コピーのコストは O(n) だから,追加コストも O(n) になるという議論が混乱の元になっています. こういうときは,要素追加を n 回繰り返したときの計算量を n で割った平均をとるという解析方法が使われるそうです.一般に, ある operation C の計算量を C を n 回行ったときの計算量 O(n) を n で割った値 O(n)/n で評価する手法をならし解析 (amortized analysis)と言うそうです. さて,s

    nilab
    nilab 2007/04/02
    きまぐれ日記: 動的配列への追加コストはなぜ O(1)?
  • JavaScript でソートアルゴリズムを可視化 - bkブログ

    JavaScript でソートアルゴリズムを可視化 JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による ソートアルゴリズムを可視化する Java アプレットです。 アルゴリズム 要素数 動作確認は Firefox 2, IE 7, Opera 9 で行いました。要素数は最大で200まで選べますが、かなり重くなるので遅いマシンで実行すると危険です。 English version is also available. ソースコード: sort-animation.js 解説 X軸が配列の添え字、Y軸が配列の要素の値を示しています。最初に要素がランダムに並んでいる配列 (値に重複なし) を作って、それを各種のソートアルゴリズムでソートする様子をアニメーションで表示します。 ただし、要素のあらゆる変更に対して毎回表示を更新し

    nilab
    nilab 2007/03/02
    いやなブログ - JavaScript でソートアルゴリズムを可視化
  • [を] Dynamic Programming による類似文字列マッチの実装例

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

    nilab
    nilab 2007/01/23
    _ [を] Dynamic Programming による類似文字列マッチの実装例
  • - サルでもわかる待ち行列

    (株)永和システムマネジメント   平鍋健児 作成日:初版 1999, 3/16 第2版 2002, 11/6 第3版 2004, 9/14 第4版 2008, 5/1 情報処理技術社試験の中で良く出て来る「待ち行列」理論を,直感的に覚えやすく解説してみました. 何度もトライしたけど待ち行列が理解できない人向けです. 正確な定義や論理展開は重視せず,いかに効率的にこの理論を覚えることができるかに焦点を絞ってみました.

    nilab
    nilab 2006/12/20
    ObjectClub - サルでもわかる待ち行列
  • Graphics2Dの実装(6) - Mysaifu JVM - Windows Mobile用Java仮想マシン - 作成記

    Graphics2D.draw(Shape s)メソッドGraphics2Dには、「任意の図形を描画する」以下のメソッドがある。http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/api/java/awt/Graphics2D.html#draw(java.awt.Shape) public abstract void draw(Shape s) 現在の Graphics2D コンテキストの設定を使うことにより、Shape の輪郭をストロークで描画します。 現在のMysaifu JVMはこのメソッドを実装していないので、作ってみることにした。Shapeを描画する方法クラスShapeを描画する手順は以下のようになる。1. Shapeの以下のメソッドを用いて、PathIteratorを取り出す。http://sdc.sun.co.jp/ja

    nilab
    nilab 2006/12/12
    Mysaifu JVM作成記 - Graphics2Dの実装(6) : Graphics2D.draw(Shape s)を実装する:PathIterator:2次パラメトリック曲線:3次パラメトリック曲線
  • http://www.isc.meiji.ac.jp/~eleken/soft/research/maze2/maze2.html

    nilab
    nilab 2006/12/09
    明治大学エレクトロニクス研究部 - 迷路作成アルゴリズムと迷路解析アルゴリズム2 : 迷路穴掘り法:木構造で迷路解き
  • http://www.isc.meiji.ac.jp/~eleken/soft/research/maze/maze.html

    nilab
    nilab 2006/12/09
    明治大学エレクトロニクス研究部 - 迷路作成アルゴリズムと迷路解析アルゴリズム : 迷路作成アルゴリズム:棒倒し法:迷路解析のプログラム:右壁法アルゴリズム
  • きまぐれ日記: はてなキーワードを高速に付与

    nilab
    nilab 2006/11/15
    きまぐれ日記: はてなキーワードを高速に付与 : Darts (Double-Array TRIE) : 1600倍の高速化
  • Moved

    nilab
    nilab 2006/11/10
    Graphics Gems Repository :
  • [を] Count Sketch アルゴリズムというのがおもしろそう

    Count Sketch アルゴリズムというのがおもしろそう 2006-10-28-3 [Algorithm] これおもしろそう。 大量のデータから出現頻度の高いものを効率よく取り出す方法らしい。 - "Count Sketch" - Radium Software Development http://www.radiumsoftware.com/0610.html#061020 元の論文はここから読める。あとで読んでみる。 - Finding Frequent Items in Data Streams - Charikar, Chen, Farach-Colton (ResearchIndex) http://citeseer.ist.psu.edu/charikar02finding.html

    nilab
    nilab 2006/10/30
    _ [を] Count Sketch アルゴリズムというのがおもしろそう : 大量のデータから出現頻度の高いものを効率よく取り出す方法
  • どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup

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

    どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup
    nilab
    nilab 2006/10/27
    どうなっているの?あのソフトの仕組み:ITpro - 検索エンジンから経路探索まで : 自動掃除機の動き : 経路検索グラフ理論
  • ACM Sigplan Notices 29, 4 (Apr 1994), 5863.

    原文: Thermodynamics and Garbage Collection. ACM Sigplan Notices 29, 4 (Apr 1994), 58–63. Henry G. Baker Nimble Computer Corporation 16231 Meadow Ridge Way, Encino, CA 91436 (818) 986–1436 (818) 986–1360 (FAX) Copyright (c) 1993 by Nimble Computer Corporation 日語訳: 酒井 政裕 私たちは統計力学の原理とそのストレージ管理の問題への適用について議論します。 また、私たちは 情報, 状態, 可逆, 保守的 といった用語の不正確な用法による問題について指摘します。 A. はじめに 計算機科学者は抽象統計熱力学についての知識を持っている

    nilab
    nilab 2006/09/08
    熱力学とガベージコレクション : 原題: Thermodynamics and Garbage Collection. ACM Sigplan Notices 29, 4 (Apr 1994), 58–63.
  • 手ブレ写真を鮮明にする新アルゴリズム - Engadget Japanese

    My iPhone 11 is perfectly fine, but the new buttons on the iPhone 16 are compelling

    手ブレ写真を鮮明にする新アルゴリズム - Engadget Japanese
    nilab
    nilab 2006/08/08
    手ブレ写真を鮮明にする新アルゴリズム - Engadget Japanese : ブラインド逆畳み込み法
  • An Algorithm for Compressing Space and Time | 3 1, 2006

    An Algorithm for Compressing Space and Time By Tomas G. Rokicki, April 01, 2006 Making a slow program fast can lead to both joy and frustration. But sometimes a new approach yields amazing improvements. Making a slow program fast can lead to both joy and frustration. Frequently, the best you can do is a low-level trick to double or maybe quadruple the speed of a program; for instance, many readers

    nilab
    nilab 2006/07/22
    Dr. Dobbs | An Algorithm for Compressing Space and Time | March 1, 2006
  • これだけは知っておきたいアルゴリズム〜ハッシュ関数・公開鍵暗号・デジタル署名編 ― @IT

    これだけは知っておきたいアルゴリズム ~ハッシュ関数・公開鍵暗号・デジタル署名編:デファクトスタンダード暗号技術の大移行(4)(1/3 ページ) 前回の共通鍵暗号の紹介に引き続き、安全性・処理性能ともに優れていると国際的に認められ、米国政府標準暗号、欧州のNESSIEや日のCRYPTREC(Cryptography Research & Evaluation Committees)での推奨暗号、ISO/IEC国際標準暗号、インターネット標準暗号などで共通して選定されているハッシュ関数・公開鍵暗号・デジタル署名について紹介する。 共通鍵暗号ではアルゴリズムそのものを代替わりさせることによって、より安全でより高速なものへと移行することが可能である。これに対して、ハッシュ関数、公開鍵暗号、デジタル署名ともに、アルゴリズムそのものを代替わりさせるというよりも、基的にはほぼ同じ構成のままハッシュ

    これだけは知っておきたいアルゴリズム〜ハッシュ関数・公開鍵暗号・デジタル署名編 ― @IT
    nilab
    nilab 2006/07/11
    これだけは知っておきたいアルゴリズム~ハッシュ関数・公開鍵暗号・デジタル署名編 - @IT
  • diff_heckel.js αテスト中 - Tociyuki::Diary

    ブラウザで差分処理をさせてみようと Heckel アルゴリズムで書いた Javascript のコードをαテストしています。 (2011年2月2日) バージョン 0.03へ。クラスにして、テストを追加しました。diff3 も追加。 (7月9日) バージョン 0.02へ。長いプロパティ名を使うのは気持ちが悪いので、行のハッシュ値を計算するように変更しました。 (7月9日) バージョン 0.01へ。出力表示を diff コマンドに近づけ、行番号だけでなく変更行の内容も表示するようにしました。 ⇒ https://tociyuki.sakura.ne.jp/archive/diff_test.html ⇒ https://tociyuki.sakura.ne.jp/archive/diff_heckel.js (ソースコード) 長い文字列を javascript のオブジェクトのプロパティにでき

    diff_heckel.js αテスト中 - Tociyuki::Diary
    nilab
    nilab 2006/07/10
    Tociyuki::Diary - diff_heckel.js αテスト中:ブラウザで差分処理をさせてみようと Heckel アルゴリズムで書いた Javascript のコード
  • 数学・アルゴリズム研究室

    当コーナーでは、ゲーム制作や一般アプリケーション開発といったプログラミングの「土台」となる各種アルゴリズムや初級レベル数学の基的概念を確かめるプログラムを作って試してみます。コードの中で何をしたいのか、具体的な「手順」や数学的な背景を考え、それをプログラミング言語の変数やデータ構造、制御構造などで実現していきましょう。 ただ、私自身が数学に関しては素人なので、たいしたことはできません。内容も無保証ですので、ご注意ください。 コーナーでは、Javaアプレットを使用しているページがあります。Javaアプレットが埋め込まれているページでは、プラグインがないとプログラムが実行されません。 数式処理への第一歩>足し算(1999/10/ 6) 連結リスト(1999/10/ 6) 参照(ポインタ)の繋ぎあわせでデータを保持。 16進文字列と数値の変換(2000/ 6/20) 文字列の検索(1999/

    nilab
    nilab 2006/07/06
    数学・アルゴリズム研究室 : ゲーム制作や一般アプリケーション開発などのプログラミングの「土台」となる各種アルゴリズム
  • [を] 二分探索でオーバーフロー

    二分探索でオーバーフロー 2006-06-09-2 [Programming][Algorithm] 二分探索(バイナリサーチ)の int mid =(low + high) / 2; の計算でオーバーフローになる可能性。 404 Blog Not Found:(a+a)/2 == -a /* 半世紀もののバグ */ http://blog.livedoor.jp/dankogai/archives/50522708.html 確かにこれだけの大きさの配列をbsearchしたりsortしたりという状況は あまりなさそうですが、比較的身近な例ではsuffix arrayとかがこの ケースにぶち当たりそうです。 とっくにぶち当たっていますよ。 suffix array のライブラリ SUFARY では対処済みです(前世紀)。 実装していた当時、GBサイズを扱う時にこれに悩

    nilab
    nilab 2006/06/12
    [を] 二分探索でオーバーフロー