タグ

algorithmに関するj0hnのブックマーク (142)

  • Data Compression Programs

     Data Compression Programs by Matt Mahoney As of July 23, 2009, this page is no longer maintained. The newest version can be found at http://mattmahoney.net/dc/ All software on this page is open source licensed under GPL and believed to be unencumbered by patents. All downloads include Windows executables and C++ source code for Windows or Linux/UNIX. The source code comments explain how the prog

  • Amazon.co.jp: 渋滞学 (新潮選書): 本: 西成 活裕

    Amazon.co.jp: 渋滞学 (新潮選書): 本: 西成 活裕
  • 更新履歴兼雑記 sed ってなんなの?

    あーなんか言語紹介といえばこんなのがあったのでした。sed ってなんなのかという、とてもよくある疑問に対して私なりの回答です。まず実用を考えると、 sed 's/hoge/hage/'このためだけに存在している言語です。メリットは perl -pe 's/hoge/hage/' より 4byte 短くてすむことだけです。これ以外の機能はスクリプト言語で十分なように思います。たまに勘違いしてる人がいる気がしますが、 y コマンドはカウンタを作るために存在しています。小文字を大文字に変換する、などと考えるとどのような時に使うのか皆目検討もつかず、ドツボにはまることうけあいです。気をつけましょう。ちょうど OOP を犬とかで教えるような話に似てるかもしれません。 で、 sed in depth 。 sed とはなにか? 誰がなんと言おうと、 sed は VM です。以下に VM の仕様を示しま

    更新履歴兼雑記 sed ってなんなの?
  • http://www.ai-gakkai.or.jp/jsai/minsky/

  • suffix array

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

  • ネットワークの数学---目次

    ネットワーク技術を読んでいると,見慣れない計算式や用語につまずくことがあります。ここでは,ネットワークに関係する代表的な計算式について,その必要性と具体的な計算方法,適用例を解説しています。 第1回 基数変換 ---なぜ10進数だけではダメなんだろう? 第2回 呼量と呼損率 ---電話がつながらないのには理由がある 第3回 待ち行列 ---同じ込み具合でも待ち時間が半分以下になる不思議 第4回 M/M/1 ---ケンドールが示した基の形 第5回 MTBF,MTTR,稼働率 ---信頼度にまつわる三つの基用語を押さえる 第6回 稼働率の合成 ---機器が増えると稼働率は向上する?

    ネットワークの数学---目次
  • 数理科学的バグ撲滅方法論のすすめ---目次 | 日経 xTECH(クロステック)

    筆者 住井 英二郎 「プログラミング言語理論」という研究分野がある。この分野の研究者たちは,「ML」「Haskell」「Scheme」あるいは「λ計算」「π計算」(円周率計算のことではない)など,多くのプログラマにとっては聞いたこともない言語やモデルについて,日夜研究している。ただ,そのような言語は「難しい」「役に立たない」などと思われがちだ。 この連載では,こうしたプログラミング言語やソフトウエア科学の様々な研究を,できるだけ普通のプログラマやエンジニアにもわかりやすく(どちらかといえば理論よりも実用に重点をおいて)紹介していく。 更新は毎月第2水曜日(1月のみ第3水曜日)

    数理科学的バグ撲滅方法論のすすめ---目次 | 日経 xTECH(クロステック)
  • PRoxy Diary(2006-09-16) - Bayesian Sets

    _ [コンピュータ] Bayesian Sets何はともあれ一番目立つところにリンクをば。 ここのところちょっと時間が取れたので、以前から気になっていたBayesian Setsを実装してみました。Bayesian Setsは、ある単語を入力すると、それと関係が深い単語を推測して返してくれるというものです。Google Setsというサービスを聞いたことがある方もおられるかもしれませんが、やりたいことはあれと同じです。理論的な話に興味がある場合はここを参照するか、元論文に当たってください。 論文で「高速」と紹介されているだけあって、Wikipediaから17万文書を使って学習させたにも関わらず結構な速度で動いてくれています。辞書に登録されている単語数も44万と豊富。これだけのものを現実的な時間で捌いているというだけでも、かなり驚きです。無理やりアドホックに処理を端折って計算量を減らしている

  • 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. はじめに 計算機科学者は抽象統計熱力学についての知識を持っている

  • FN0212002 - 配列をランダムに並替えるメソッドを定義する[上級テクニック] - Flash : テクニカルノート

    Platform: All Version: 5.0 and Above このノートでは、Arrayオブジェクトにエレメントをランダムに並替えるメソッドを定義する上級者向けのサンプルを、ご紹介します。 1. Arrayオブジェクトにメソッドを定義する 'new'演算子を使ってインスタンスを生成するオブジェクト(クラス)には、'prototype'プロパティがあります。この'prototype'プロパティに'function'を設定すると、そのオブジェクト(クラス)にメソッドを追加して定義することができます。 Arrayもそうした定義のできるオブジェクトのひとつです。ArrayオブジェクトにメソッドnewMethodを定義するには、つぎのようなスクリプトを記述します。 Array.prototype.newMethod = xNewMethod; function xNewMethod ()

  • 最速インターフェース研究会 :: 実践JavaScriptで配列をシャッフルする方法リファクタリング

    JavaScriptで配列をシャッフルする話を見て、そういえばArray#shuffleは以前書いた記憶があるなーと思って調べてみたらコピペだった。 http://www.fumiononaka.com/TechNotes/Flash/FN0212002.html Fisher-Yatesというアルゴリズムだそうです。 Array.prototype.shuffle = function() { var i = this.length; while(i){ var j = Math.floor(Math.random()*i); var t = this[--i]; this[i] = this[j]; this[j] = t; } return this; } a = [1,2,3,4,5]; a.shuffle() // 3,1,5,2,4 a // 3,1,5,2,4 ごく普通に実装

  • JavaScriptで配列をシャッフル

    配列をシャッフル、つまりランダムに要素の位置を入れ替えるというのを、sortメソッドを使ってやってみたのだけど、明らかにダメダメなものになってしまった。その後、あーでもないこーでもないと考えたのだけど、算数が得意すぎて頭が痛くなった。ということを某所でぼやいたらはてのくんがコードを見つけてくれた。どうやらFisher-Yatesという有名なアルゴリズムでやると良いらしい。 最初に書いたコードは、 var a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); a.sort( function (a, b) { return Math.ceil(Math.random() * 3) - 2; } ); というもの。sortメソッドは、パラメータに与えられた関数が負の値・0・正の値を返すことによって要素の順序を決定するので、その関数がランダムに値を返せばランダ

    JavaScriptで配列をシャッフル
  • Amazon.co.jp: 計算困難問題に対するアルゴリズム理論: J.ホロムコヴィッチ (著), 和田幸一 (翻訳), 増澤利光 (翻訳), 元木光雄 (翻訳): 本

    Amazon.co.jp: 計算困難問題に対するアルゴリズム理論: J.ホロムコヴィッチ (著), 和田幸一 (翻訳), 増澤利光 (翻訳), 元木光雄 (翻訳): 本
  • Technoblog: MapReduce for Ruby: Ridiculously Easy Distributed Programming

    Ruby on Rails, Io, Lisp, JavaScript, Dynamic Languages, Prototype-based programming and more... Technoblog reader special: $10 off web hosting by FatCow! Wednesday, August 16, 2006 I am very happy to announce that Google's MapReduce is now available for Ruby (via gem install starfish). MapReduce is the technique used by Google to do monstrous distributed programming over 30 terabyte files. I have

  • 羊堂本舗 脳ざらし紀行 (2006-08-17)

    _ 日語と n-gram でも Zipf の法則は成り立つか Zipf の法則というのは以下のようなものです。英語で書かれた長編小説を用意します(小説でなくてもいいんだけど)。そして、文中に出てくる英単語を頻度順に並べます。すると、第2位の単語の頻度は第1位の単語の頻度の半分になります。第10位の単語の頻度は第1位の単語の頻度の1/10です。第100位の単語の頻度は第1位の単語の頻度の1/100です。そんな感じの法則です。リンク先にもあるように対数グラフにプロットするときれいな直線になります。 さて、Zipf の法則は日語に対して当てはまるでしょうか。とはいっても、日語は英語みたいに単語毎に区切ることが簡単ではないので、ここでは n-gram を使います。2文字毎に文を区切って、その2文字を単語だと思って頻度を数えます。ひらがなと漢字だけを対象にしました。日語のデータとしてはこの

    j0hn
    j0hn 2006/08/21
    的を得ているがいかにも無粋な突っ込みにがっかり
  • The Trouble With Rounding Floats - Slashdot

  • LavaRnd - Cryptographically Secure

    j0hn
    j0hn 2006/08/18
    CCDのノイズを利用した乱数生成装置
  • 手ぶれ補正に画期的な新アルゴリズム登場

    これまでの手ぶれ補正に対するアプローチと言えば、レンズや受光部分をぶれないように細かく動かすか、あるいはISO感度を上げるとか、それぐらいしかなかったわけです。ソフトウェア上で処理しようとすると単純なアンシャープマスク程度しかなく、単純に輪郭がはっきりするのみで実用的ではなかった。 ところが今回のマサチューセッツ工科大学とトロント大学の研究成果はすごいです。上記写真を見れば分かるように、左端がもとの手ぶれ写真、真ん中が単純なシャープ、そして右端が今回の新型手ぶれ補正アルゴリズムです。 詳細は以下の通り。 Photo-deblurring Research Debuts at Siggraph Conference - Emerging Technology ソフトウェアベースなので携帯電話などに応用が可能。携帯電話のカメラ特有の軽いボケた感じが改善される可能性大です。 ただし、スローシャッ

    手ぶれ補正に画期的な新アルゴリズム登場
  • 万能数値表現法 URR

    ━─────────────────────────────────── アセンブラ講座(番外編) 《万能数値表現法 URR》 鎌田 誠 ──────────────────────────────────── IEEE 754 で規格化されている浮動小数点数の表現方法は符号と指数部と仮数 部に整然と分けられていてわかりやすく、実装も容易なのですが、指数部と仮数 部を区切る位置を固定してしまったために、大きな数を扱いたい技術者には指数 部の範囲が狭すぎ、精度を要求する技術者には仮数部のビット数が少なすぎると いう問題点があります。 しかし、かつて日人によって IEEE 754 よりも算術的に優れている浮動小数 点数の表現方法が考案されていたことを知る人はほとんどいないでしょう。その 数値表現法は考案された当時の技術では実装が困難だったために規格化されなか ったようですが、非常に興味深い数

  • 中里一日記: キャッシュと更新

    キャッシュと更新 昨日の続き。 前にも書いたとおり、削除は哲学的な問題だ。更新も、削除ほどではないが、かなり哲学的だ。 研究レベルでは、「削除も更新もしない」というポリシーが大流行中らしい。すべて追記オンリーで済ませる。当然、HDDの記憶容量は消費する一方で、使い方によってはあっという間にゴミで埋まってしまうが、それは無視するのが研究レベルというものらしい。過去の状態がそのまま取り出せるので便利だが、ゴミで埋まるような使い方があることを考えると、MVCC的な方法のほうが汎用性がある。 私としては、もうひとつ疑問がある。 変化するデータを追記オンリーのストレージ上で表現しようとすると、なんらかの形で、アドレスの予約が必要になる。アドレスを予約できなければ、データが追記されたとき、そのデータのアドレスを知る方法がない。アドレスが予約されているということは、そのアドレスについて「まだデータが書き