タグ

algorithmとprogrammingに関するjjzakのブックマーク (291)

  • Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー

    ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ|          あ…ありのまま 今日 起こった事を話すぜ! |i i|    }! }} //| |l、{   j} /,,ィ//|       『BWT について調べていたら Suffix Array のライブラリができていた』 i|:!ヾ、_ノ/ u {:}//ヘ |リ u' }  ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった… ,゙  / )ヽ iLレ  u' | | ヾlトハ〉 |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'

    Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

    jjzak
    jjzak 2008/11/21
    [][][implementation][source][graph]
  • Erlang実験室:状態遷移を書くのはこんなに簡単 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    あまり強調されないようですが、Erlangでは、その構文と実行メカニズムとがあいまって、状態遷移のプログラミングがとても容易です。 例題として、正規表現 /aa?b*c/ とマッチする文字列を認識するオートマトンを作ってみましょう。まず、状態遷移図を描き*1、それから遷移表を書きます。図と表のなかで、EOSは End Of String のマーカー、◎は終状態です 遷移表: 0から3までの各状態について、入力ごとの遷移先は次の通り。×はエラーです。 状態 文字a 文字b 文字c EOS その他 0 1 × × × × 1 2 2 3 × × 2 × 2 3 × × 3 × × × ◎ × この表を見ながら、Erlangコードを書きます。以下のような感じ。 accept(N) -> % 引数Nが状態 case N of 0 -> receive $a -> accept(1); _ -> e

    Erlang実験室:状態遷移を書くのはこんなに簡単 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • CS 294-5, Spring 2006 : Great Algorithms

    CS 294-5, Spring 2006 Great Algorithms Instructor: Richard Karp (karp AT cs, M 1:30-2:30, 621 Soda Hall, 642-5799) Lectures MW 10:30-12:00, 310 Soda Announcements Course Overview Lecture notes Assignments Announcements announcements go here.. Course Overview From time to time a new algorithm comes along that causes a sensation in theoretical computer science or in an area of application b

  • Zinnia: 機械学習ベースのポータブルな手書き文字認識エンジン

    Zinnia: 機械学習ベースのポータブルなオンライン手書き文字認識エンジン [日語][英語] Zinniaは機械学習アルゴリズム SVM を用いたポータブルで汎用的な オンライン手書き文字認識エンジンです。Zinniaは組み込みの容易さと汎用性を高めるために、 文字のレンダリング機能は持っていません。Zinniaは文字のストローク情報を座標の連続として受け取り、 確からしい順にスコア付きでN文字の認識結果を返すだけに機能を限定しています。 また、認識エンジンは完全に機械学習ベースであるために、文字のみならずユーザの任意のマウス・ペンストロークに対して任意の文字列をマッピングするような認識エンジンを小コスト作成することができます。 主な特徴 機械学習アルゴリズムSVMによる高い認識精度 ポータブルでコンパクトな設計 -- POSIX/Windows (C++ STLのみに依存) リエント

  • 講義資料 配列解析アルゴリズム特論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

  • アルゴリズムコンテストの挑み方 - d.y.d.

    17:29 08/09/30 クロスワード 暇つぶしに "Clueless Crossword" という冊子を買ってみて意外とハマっています。 クロスワードパズルなんだけど、単語のヒントの代わりに、 各マスに1~26の数字が振ってあって同じ数字のマスには同じA~Zが入るように埋めるというもの。 「母音っぽくて二連続して語尾にも出てくるのは多分 E だろう、もしかしたら O の可能性はなくもないけど」 みたいに埋めていく。 ちょっと違うけど フラッシュであった。 20:15 08/09/28 だいちのよろい そろそろ日に戻る前に観光するぞ月間、ということにして、ウルル(エアーズロック)に行ってきました。 もっとワイルドな感じかと思ったら、完全にリゾートのリゾートによるリゾートのための地帯になってました。 まあそんなもんか。 日は強風のため登るの禁止とのことだったので、周りから見るだけ。

  • Support Vector Machines (SVM) in Ruby - igvita.com

    By Ilya Grigorik on January 07, 2008 Your Family Guy fan-site is riding a wave of viral referrals, the community has grown tenfold in last month alone! First, you've deployed an SVD recommendation system, then you've optimized the site content and layout with the help of decision trees, but of course, that wasn't enough, and you've also added a Bayes classifier to help you filter and rank the cont

  • 無作為研究所

    ようこそ、無作為研究所へ! 無作為研究所は、コンピュータソフトウェア・ハードウェア・電子工作などの分野で、 思いつくまま、イロイロな研究を行っているところです。 大した情報はありませんが、ごゆっくりご覧ください。 画像処理関連 回転・縮小・欠落OKのパターンマッチング(2007-05-09) いまさら正規化相関サーチ(2011-09-18 書きかけ) 簡単なオートフォーカス(2008-01-16) 詳細サーチ サブピクセル推定(2011-09-18) 画像処理関連のトピックを全て見る アルゴリズム 簡単な木構造でのキー検索(2007-05-01 書きかけ) ハッシュ木、アスキー木検索(2010-11-13) atoi()関数の高速化(2011-10-01) ハードウェア フォトトランジスタを使ってみる(2007-05-20) ネット時代のパーツ選択(2007-06-01) 良いトランジスタ

    jjzak
    jjzak 2008/10/06
    画像の特徴点を抽出する,最初のブートを作る
  • 領域の塗りつぶしアルゴリズム-数学アルゴリズム演習ノート-

    単なる長方形ではなく、複雑な形をした領域の「塗りつぶし」を行うアルゴリズムを考えてみます。ここで考える領域とは、「指定された点と繋がっている同じ色の場所の集合」であり、その領域内に指定された色を置いて行くアルゴリズムを検討してみましょう。 最も単純に考えれば、指定された点を出発点に「周囲に出発点と同じ色のドットがあれば色を付ける」処理を繰り返せばよい事になります。つまり、自分の周囲を見て色を付ける処理を再帰的に行うアルゴリズムです。 最初はそもそもJava で再帰が上手く働くか不安だったのですが、小さい領域ではうまく動くようです。最も、大きくなるとどうなるか不安は残りますが。 まあ、大きな領域で実行する時には改めて最適化するとして、今回はとりあえず32*32の配列を対象に「塗りつぶし」処理をやってみましょう。これくらいならどんな処理系でも大丈夫.....だと思います。 まず、配列の各要素を

  • レーベンシュタイン距離 - Wikipedia

    レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へんしゅうきょり、英: edit distance)とも呼ばれる。具体的には、1文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される[1]。名称は、1965年にこれを考案したロシアの学者ウラジーミル・レーベンシュタイン (露: Влади́мир Левенште́йн) にちなむ。 レーベンシュタイン距離は、同じ文字数の単語に対する置換編集に使われているハミング距離の一般化であると見なすことが可能である。レーベンシュタイン距離の更なる一般化として、例えば一回の操作で二文字を変換する等の方法が考えられる。 実際的な距離の求め方を例示すれば、「kitten」を「s

  • レーベンシュタイン距離を求める - 主にアルゴリズムの実験日誌

    【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【文】 レーベンシュタイン距離を使って個体の適合度を求めます。 gaucheの配列に関する資料 http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_71.html レーベンシュタイン距離に関する資料 http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E8%B7%9D%E9%9B%A2 http://www-06.ibm.com/jp/developerworks/java/041217/j_j-jazzy.html#figure1 ; 以下の2つのリストのレーベンシュ

    レーベンシュタイン距離を求める - 主にアルゴリズムの実験日誌
  • 連載:はじめMath! Javaでコンピュータ数学|gihyo.jp … 技術評論社

    運営元のロゴ Copyright © 2007-2025 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    連載:はじめMath! Javaでコンピュータ数学|gihyo.jp … 技術評論社
    jjzak
    jjzak 2008/09/13
    論理の数学の基本、カルノー図の作り方など
  • Welcome - BoehmGCHackers

    なにか問題を見つけられた方はnari(authornari at gmail.com)までご報告ください。 Boehm GC Hackers † 初めての方は一読ください。 BoehmGCHackersの概要 ↑

  • 伝説のお茶の間 No007-09(1) 円の描画(1) MichenerとBresenham

    最初に言っておきますが デジタル円はアスペクト比の関係上、真円には近づきません。どうあがいても。 ピクセル自体が縦長なので円もちょっと縦長です。 アスペクト比の修正は各アプリケーションで行うほうがいいので、 今回はR * R ピクセルの正方形と考えてアルゴリズムを組みます。 ご了承ください。 デジタル円の描画のアルゴリズムは2、3種類があります。 ブレゼンハム(Bresenham)、ミッチェナー(Michener)が一般的です。 OpenFMIというサイトの中のページで "Comparing Circle Drawing Algorithms"という C のソース http://openfmi.net/snippet/detail.php?type=snippet&id=8 が紹介されています。 同一コード内にブレゼンハム、ミッチェナー等の関数も用意されており、ソースとしては完璧です。 ち

  • ダイクストラ法(最短経路問題)

    ダイクストラ法 (Dijkstra's Algorithm) は最短経路問題を効率的に解くグラフ理論におけるアルゴリズムです。 スタートノードからゴールノードまでの最短距離とその経路を求めることができます。 アルゴリズム 以下のグラフを例にダイクストラのアルゴリズムを解説します。 円がノード,線がエッジで,sがスタートノード,gがゴールノードを表しています。 エッジの近くに書かれている数字はそのエッジを通るのに必要なコスト(たいてい距離または時間)です。 ここではエッジに向きが存在しない(=どちらからでも通れる)無向グラフだとして扱っていますが, ダイクストラ法の場合はそれほど無向グラフと有向グラフを区別して考える必要はありません。 ダイクストラ法はDP(動的計画法)的なアルゴリズムです。 つまり,「手近で明らかなことから順次確定していき,その確定した情報をもとにさらに遠くまで確定していく

  • GoogleのMapReduceアルゴリズムをJavaで理解する

    GoogleMapReduceアルゴリズムをJavaで理解する:いま再注目の分散処理技術(前編)(1/2 ページ) 最近注目を浴びている分散処理技術MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部) いま注目の大規模分散処理アルゴリズム 最近、大規模分散処理が注目を浴びています。特に、「MapReduce」というアルゴリズムについて目にすることが多くなりました。Googleの膨大なサーバ処理で使われているということで、ここ数年の分散処理技術の中では特に注目を浴びているようです(参考「見えるグーグル、見えないグーグル」)。MapReduceアルゴリズムを使う利点とは、いったい何なのでしょうか。なぜ、いま注目を浴びているのでしょうか。 その詳細は「MapReduce : Simplified Data Proc

    GoogleのMapReduceアルゴリズムをJavaで理解する
  • DO++ : 最長一致文字列の話

    たまには自分の研究紹介 D. Okanohara, K. Sadakane. "An Online Algorithm for Finding the Longest Previous Factors". In the 16th European Symposium on Algorithms. Sep 2008. to appear. [pdf(draft)] この研究では文字列を順々に読んでいったとき、各位置で過去に一番長くマッチした部分文字列を報告する問題を扱ってます。圧縮のLZ77法を知っているなら、マッチする部分を見つける部分を解いてます。で、圧縮以外にもいろいろなパターンマッチング問題とか、インデクシングとか、データマイニングとかいろいろなことにこの情報が利用できるということが知られてるみたいです。 で、大抵はハッシュやtrieを組んで履歴を探すんですが、今回対象にするのはテキ

    DO++ : 最長一致文字列の話
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • Portable Coroutine Library Home Page

    Portable Coroutine Library (PCL) The Portable Coroutine Library (PCL) implements the low level functionality for coroutines. For a definition of the term coroutine see The Art of Computer Programming by Donald E. Knuth. Coroutines are a very simple cooperative multitasking environment where the switch from one task to another is done explicitly by a function call. Coroutines are a lot faster than