タグ

algorithmに関するsleepy_yoshiのブックマーク (90)

  • wavelet tree - 明日ではないから

    圧縮検索で使われる技術wavelet treeをテンプレートライブラリとして書いてみました。 →を参考にしてみました。高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」 元となる記事が大変興味深かったのだけど、どうもサンプルコードが複雑すぎるのと、僕の解釈が悪いのか、記事中の説明がコードとつじつまが合わないところがあったので、自分で実装してみたしだい。 記事中ではハフマンコード化の話があるのだけど、あくまでそれは最適な圧縮率を出すための理論にしか過ぎなくて、 頻度の順番で文字をソートしておいて、文字ごとにその文字を1にしたビット列を格納していったほうが素直だろう。(元記事中は該当文字を0としたが1としたほうが操作しやすいと思う) たとえば、文字列T = "abccbbabca"があったときその頻度は'b','c','a'の順番になる。このとき各文字ごとにビット列を作ってい

    wavelet tree - 明日ではないから
  • 高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」

    はじめに 大規模なデータを扱うアプリケーションでは、速度とともに作業領域量も大きな問題となります。作業領域がメインメモリに収まらない場合、スワッピングが発生し、大幅な速度低下につながります。そのため近年、データ構造は高速なだけでなく、作業領域量が小さいことも求められています。今回紹介するのは2003年に提案されたデータ構造、wavelet tree(以下「WT」と表記)です。WTは圧縮索引やSuccinct Data Structureなど、データをコンパクトに表現する際に重要なデータ構造です。WTは文字列T[0...n-1]が与えられた時、次の2つの操作を定数時間でサポートします。 rank(p, c)――T[0...p]中のcの出現回数を返す select(i, c)――(i+1)番目のcの位置を返す WTの作業領域量は、文字列をそのまま保存した時の約2倍程度です。 対象読者 C++

    高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」
  • jpn.ph

    This domain may be for sale!

  • アルゴリズムとデータ構造 - プログラミングスレまとめ in VIP

    計算量 † アルゴリズムがどれだけ効率的かを示す概念が計算量です。通常、単に計算量と述べた場合は、データ数nに対してどれだけ時間がかかるかを示す時間計算量を指しますが、場合によってはどれだけメモリを消費するかを示す空間計算量を問題にするケースもあります。計算量は、通常データ数nが十分大きい場合にnのどういう関数に比例して計算時間/メモリ消費が増えるかという形式で表します。 具体的に、下に述べている線形探索の例で計算量を考えてみましょう。この関数では、ループをサイズn回だけ回していますが、このループ1回辺り時間tだけかかるとしましょう。さらに、関数の呼び出し等により、データ数にかかわらず一定の時間sがかかると考えられます。従ってこの関数に費やす時間はnt+sですね。この時、十分大きいnを考え、かつ定数倍は無視して考えます。例えばntがsの10000倍だと仮定しましょう。この時sの寄与は、体重

  • B+-tree

    □ B-tree ではレコードそのものをノードに入れるので,ページに入れられる レコードの数が少ない. これに対して,通常の索引ではキー値とポインタのみであるので,一ページに 入る量が増やせる. この観点から B-tree を改良したのが B-tree で,B-tree よりも 一般的である. □ 図6.8 (p. 116) に索引部が 次の B-tree と同様で, leaf ノードのエントリ数が 最大 3 のものを示す. B-tree と異なり,データレコード自体は leaf にのみ記録されるので, v キー値の出現の様子を見ると,重複がある.(例: 25 や 16 など.) leaf ノードは 一般にポインタでつながれているので,レコードをキー順に アクセスするのは,B-tree の走査よりも簡単である. □ 格納できるエントリ数の違いを見ておく. レコードサイズが 256 で,ペー

  • 講義資料 配列解析アルゴリズム特論I 情報生命科学基礎/演習 他 -渋谷哲朗

    平成20年度 東京大学大学院 情報理工学系研究科・コンピュータ科学専攻 配列解析アルゴリズム特論I 4/10 4/17 4/24 5/1 5/8 5/15 5/22 5/29 (The problem to be reported - in English) 6/5 6/12 6/19 7/3 7/10 7/17 東京大学 理学部・情報科学科 情報科学特別講義3 (情報科学とバイオインフォマティクス) 6/10 7/15 7/22 東京大学大学院 新領域創成科学研究科・情報生命科学専攻 情報生命科学基礎/演習 5/27 6/17 京都大学大学院 薬学研究科・医薬創成情報科学専攻 情報科学概論 6/3 中央大学大学院 理工学系研究科・物理学専攻 物理学特別講義第二 TBA 創価大学工学部 生命情報工学科 TBA TBA 戻る Copyright (c) 2004- Tetsuo

  • 高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」:CodeZine

    はじめに 大規模なデータを扱うアプリケーションでは、速度とともに作業領域量も大きな問題となります。作業領域がメインメモリに収まらない場合、スワッピングが発生し、大幅な速度低下につながります。そのため近年、データ構造は高速なだけでなく、作業領域量が小さいことも求められています。今回紹介するのは2003年に提案されたデータ構造、wavelet tree(以下「WT」と表記)です。WTは圧縮索引やSuccinct Data Structureなど、データをコンパクトに表現する際に重要なデータ構造です。WTは文字列T[0...n-1]が与えられた時、次の2つの操作を定数時間でサポートします。rank(p, c)――T[0...p]中のcの出現回数を返すselect(i, c)――(i+1)番目のcの位置を返す  WTの作業領域量は、文字列をそのまま保存した時の約2倍程度です。対象読者 C++の利用

  • ConsistentHashing - コンシステント・ハッシュ法

    ConsistentHashing - コンシステント・ハッシュ法 目次 この文書について コンシステント・ハッシュ法 実例 実装 用途 コンシステント・ハッシュ法 この文書について "Tom White's Blog: Consistent Hashing" の日語訳です. http://weblogs.java.net/blog/tomwhite/archive/2007/11/consistent_hash.html 推敲歓迎: 誤訳, タイポ, 訳語の不統一, そのほか... 原文のライセンス: http://creativecommons.org/licenses/by-nc-sa/2.0/ 私は今までに何度かコンシステント・ハッシュ法にとりくんだことがある。 このアイデアをあらわした論文 ( David Karger らによる Consistent Hashing and R

  • 30分プログラムリスト - みずぴー日記

    Perl 30分プログラムをYAMLに - みずぴー日記 逆ポーランド計算機 - みずぴー日記 fortune - みずぴー日記 lcs.pl - みずぴー日記 CGI.pl - みずぴー日記 oop.pl - みずぴー日記 busybox.pl - みずぴー日記 db.pl - みずぴー日記 xmlrpc.pl - みずぴー日記 kaibun.pl - みずぴー日記 対話式Perl - みずぴー日記 flist.pl - みずぴー日記 foldrとfoldl - みずぴー日記 Perlで継続 - みずぴー日記 3n+1問題 - みずぴー日記 Tie::String - みずぴー日記 はてなユーザ確認スクリプト - みずぴー日記 携帯メッセージ - みずぴー日記 howm-to-はてな - みずぴー日記 30分プログラム日記ジェレネータ - みずぴー日記 howm->はてな(その2)

    30分プログラムリスト - みずぴー日記
  • スペル修正プログラムはどう書くか

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

    sleepy_yoshi
    sleepy_yoshi 2007/04/28
    グーグルのスペル修正プログラム by Python