タグ

algorithmに関するclouderのブックマーク (21)

  • diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp

    UNIXの基的なコマンドの1つであるdiff。 これに実装されているアルゴリズムは実に興味深い世界が広がっています。 稿では、筆者が開発した独自ライブラリ「dtl」をもとに「diffのしくみ」を解説します。 はじめに diffは2つのファイルやディレクトリの差分を取るのに使用するプログラムです。 ソフトウェア開発を行っている方であれば、SubversionやGitなどのバージョン管理システムを通して利用していることが多いかと思います。稿ではそのdiffの動作原理について解説します。 差分の計算の際に重要な3つの要素 差分を計算するというのは次の3つを計算することに帰結します。 編集距離 2つの要素列の違いを数値化したもの LCS(Longest Common Subsequence) 2つの要素列の最長共通部分列 SES(Shortest Edit Script) ある要素列を別の要

    diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp
  • Top Down Operator Precedence - ロバの耳

    beautiful codeの 9章 下向き演算子順位解析を写経してみたら,いろいろ端折ったのに500行以上になった.思ったより長い. 最初の所はこんな感じ: $original_symbol = Prototype.new $original_symbol.error = lambda() {|x| raise x } $original_symbol.nud = lambda() { self.error "undefined." } $original_symbol.led = lambda() { self.error "missing operator." } $symbol_table = {} def symbol( id, bp=0) s = $symbol_table[id] if s s.lbp = bp if bp >= s.lbp else s = $origina

    Top Down Operator Precedence - ロバの耳
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
  • 人力検索はてな - 二枚の画像が似ているかどうかを高速に判定するアルゴリズムを探しています。

    二枚の画像が似ているかどうかを高速に判定するアルゴリズムを探しています。 通常は画素ごとに差分をとって平均二乗誤差やSN比を計算するのが一般的だと思いますが、これだと2乗計算を画素数分行うため計算量が多くなってしまい、比較する画像が複数ある場合だと計算時間が多大に増えてしまうことが問題になります。そこで画像比較の計算時間を削減できるアルゴリズムを探しています。 例えば、文字列処理では正規表現を用いることで高速に文字列探索が行えると聞いたのですが、画像処理の場合にはこのような強力な手法はあるのでしょうか? 一つ画像にモザイクをかけて比較する画素数を減らして計算時間を削減する手法を行ったのですが、これだと計算時間は削減されるものの比較精度が落ちることが問題でした。あまり精度を落とすことはできません。 私は現在大学生でして、ある自作のソフトウェアを作成している所なのですが、上記の問題のため先に進

  • Shogi Apps

  • Shogi – Play Japanese chess online, Shogi rules, printable shogi boards and pieces, and all kinds of Japanese chess resources.

    ShogiPlay Japanese chess online, Shogi rules, printable shogi boards and pieces, and all kinds of Japanese chess resources. Shogi (将棋) is the Japanese version of an ancient Indian game that became Chess in Europe and xiangqi in China. In fact, Shogi is frequently referred to as Japanese chess in the English speaking world. Shogi is played on a 9×9 board, unlike the 8×8 board of Western chess. Shog

  • 将棋 - HSP開発wiki

  • 「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」:最強最速アルゴリズマー養成講座(1/3 ページ) 典型的なアルゴリズムをたくさん知っている人間が最強か――? いいえ、典型的なアルゴリズムを知らなくても、違ったアプローチで答えに迫る方法はいくらでも存在します。短い実行時間で正確な答えを導き出せるかを考える習慣をつけましょう。 アルゴリズマー養成講座と銘打ってスタートした連載。もしかすると読者の方の興味は、はやりのアルゴリズムや汎用的なアルゴリズムを知ることにあるのかもしれません。しかし、今回は、いわゆる「典型的なアルゴリズム」を用いずに進めていきたいと思います。 なぜ典型的なアルゴリズムを用いないのか。それは、典型的なアルゴリズムばかりを先に覚え、それだけでTopCoderなどを戦っていこうとした場合、それに少しでもそぐわない問題が出た場合に、まったく太刀打ちできなくなってしまう

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」
  • てげてげ日和 : 人工無能"よみうさ"エアージャケット

    日記、日々の生活と写真読兎(よみうさ)という人工無能、会話型ロボが好きで、 最近はTwitterでよく会話しています。 ※読兎 http://www.yomiusa.jp/ ※よみうさTwitter http://twitter.com/yomiusa よみうさの公式HPで、iPhoneのエアージャケットがあったので購入。 よみうさエアージャケットパッケージ。 よみうさエアージャケットをiPhone・・・

  • 増井 / 類語をみつける方法

    というか[[[同じカテゴリの単語を複数見つける]]]方法 [[[同位語]]]検索というらしい [[http://IQAuth.com/ 画像なぞなぞ認証]]で偽答を作るのを自動化したい たとえば「大阪」が正解のとき「神戸」とか「京都」とかの偽答を自動生成したい 「的場」から「菊地」を生成するとか [[http://hondana.org/%E5%A2%97%E4%BA%95/4812439914 http://gyazo.com/6c0f4f744676c2a71fc1577ace0557c7.png]] [[[「や」を使う方法]]] "大阪や" でググると「大阪や埼玉」「大阪や鳥取」などが出る [[http://gyazo.com/cc94658d04bc123b1b807db482862488.png]] 京大田中研の研究 by 大島氏 [[http://ci.nii.ac.jp/na

  • ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室

    ゲームの作り方とアルゴリズムをジャンル別にまとめてみました。ゲーム制作や、プログラミングの勉強用にご活用ください。言語別ゲームプログラミング制作講座一覧もあわせてお読みください。 リンク切れがおきていたものは、URLを表示しておくので、Internet Archiveなどでキャッシュを表示させてみてください。 RPG ゲームの乱数解析 乱数を利用した敵出現アルゴリズムの解説 各種ゲームプログラム解析 FF、ドラクエ、ロマサガのプログラムの解析。乱数の計算など ダメージ計算あれこれ(http://ysfactory.nobody.jp/ys/prg/calculation_public.html) ダメージの計算式 エンカウントについて考えてみる エンカウント(マップでの敵との遭遇)の処理方法いろいろ RPGの作り方 - ゲームヘル2000 RPGのアルゴリズム ドルアーガの塔 乱数の工夫の

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
  • 第11回 Kansai.pm / スペルミス修正プログラムを作ろう - naoyaのはてなダイアリー

    昨日は第11回 Kansai.pm でした。 今回は無理を言って自分がホストを担当させていただきましたが、面白い発表が多く開催した自分も非常に満足でした。 PFI の吉田さんによる Cell Challenge での計算機に合わせたアルゴリズムのチューニング手法の発表 (発表資料) は圧巻でした。伊奈さんの文抽出の話 (発表資料)、はこべさんのコルーチンの話 (発表資料)、いずれも難解になりがちなところを凄く分かりやすく解説されていて、さすがだなと思いました。各々ショートトークも、いずれも良かったです。 スペルミス修正プログラムを作ろう 自分も 20 分ほど時間をいただいて、スペルミス修正プログラムの作り方について発表しました。 スペルミス修正プログラムを作ろうView more presentations from Naoya Ito. スペルミス修正プログラムについてはずばり スペル

    第11回 Kansai.pm / スペルミス修正プログラムを作ろう - naoyaのはてなダイアリー
  • Ngram(N-gram)とは何か & 形態素解析との比較[ガラケー版]

    2006/02/03 「検索エンジン&SEO > 検索エンジンの仕組み > Ngram(N-gram)とは何か & 形態素解析との比較」 [この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]拍手:25個 1. 書こうと思ったきっかけ 2. Ngram(N-gram)とは 3. 向きと不向き 4. Ngramの実装 5. NGramの例(bigram=2文字切り出し時) 6. Ngramの有名な欠点 7. 形態素解析とは 8. 形態素解析の欠点 9. 形態素解析結果の実際例 10. まとめ: とはいえ鋏と包丁は使い様 11. コードのサンプル 12. ちなみにこのサイトの検索エンジンは... 13. ということで、検索エンジンを作ってリリースしてみた 1. 書こうと思ったきっかけ ライブドアのブログ検索がNgramを採用したと記事にな

  • 軽量データクラスタリングツールbayon - mixi engineer blog

    逆転検事を先日クリアして、久しぶりに逆転裁判1〜3をやり直そうか迷い中のfujisawaです。シンプルなデータクラスタリングツールを作成しましたので、そのご紹介をさせていただきます。 クラスタリングとは クラスタリングとは、対象のデータ集合中で似ているもの同士をまとめて、いくつかのグループにデータ集合を分割することです。データマイニングや統計分析などでよく利用され、データ集合の傾向を調べたいときなどに役に立ちます。 例えば下図の例ですと、当初はデータがゴチャゴチャと混ざっていてよく分からなかったのですが、クラスタリングすることで、実際は3つのグループのデータのみから構成されていることが分かります。 様々なクラスタリング手法がこれまでに提案されていますが、有名なところではK-means法などが挙げられます。ここでは詳細については触れませんが、クラスタリングについてより詳しく知りたい方は以下の

    軽量データクラスタリングツールbayon - mixi engineer blog
  • 3行でできる超お手軽全文検索 - mixi engineer blog

    梅雨。部屋干しした洗濯物による異臭騒ぎに苦しむmikioです。今回は、Tokyo Cabinetのテーブルデータベースで超お手軽に全文検索をする方法について説明します。 使い方 テーブルデータベースについてまずおさらいしておきましょう。PerlRubyのハッシュのようにコラム名とその値を関連づけた構造を、主キーを識別子として保存するデータベースです。例えばRubyからデータを保存するに以下のように行います。データベースであることをほとんど意識させないというのが素敵ポイントです。APIはCでもPerlでもRubyでもほとんど同じなので、言語にかかわらず同じようにレコードを操作できます。 require 'tokyocabinet' include TokyoCabinet # データベースを開く tdb = TDB::new tdb.open("casket", TDB::OWRITER

    3行でできる超お手軽全文検索 - mixi engineer blog
  • 転置インデックスを実装しよう - mixi engineer blog

    相対性理論のボーカルが頭から離れないmikioです。熱いわっふるの声に応えて今回はTokyo Cabinetのテーブルデータベースにおける検索機能の実装について語ってみたいと思います。とても長いのですが、最後まで読んだあかつきには、自分でも全文検索エンジンを作れると思っていただければ嬉しいです。 デモ モチベーションをあげていただくために、100行のソースコードで検索UIのデモを作ってみました。Java 6の日語文書を対象としているので、「stringbuffer」とか「コンパイル」とか「倍精度浮動小数」とかそれっぽい用語で検索してみてください。 インデックスがちゃんとできていれば、たった100行で某検索エンジン風味の検索機能をあなたのデータを対象にして動かすことができます。ソースコードはこちら(テンプレートはこちら)です。 でも、今回はUIの話ではないのです。ものすごく地味に、全文検索

    転置インデックスを実装しよう - mixi engineer blog
  • MessagePack: It's like JSON. but fast and small.

    It's like JSON. but fast and small. MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. Next: MessagePack is supported by over 50 programming languages and environm

  • ウノウラボ Unoh Labs: Software Design 6月号に「diffの動作原理を知る」の記事を執筆しました

    最近、「何故、君はマウスを2つ同時に使っているんだい?」と聞かれることが多くなったbokkoです。VX Revolution RXは右手用ですが、左手で使うならMicrosoftのArcがオススメです。近頃はフットマウスを買うかどうか真剣に悩んでいます。 Software Designには去年にも「ソースを読み,パッチを作成してみよう~GNU GLOBAL,diff,patchの使い方~」という記事を執筆する機会を頂いたので、誌に執筆するのはこれが二度目になります。 今回の内容は以前当ブログに書いた「diff with C++」の記事をもっと濃くした感じになっていて、編集距離やLCS、SESの解説に始まり、Subversionのdiffエンジンや拙作のdtlで使われているO(NP)という差分アルゴリズムについて解説しています。 O(NP)や、それによく似たO(ND)をはじめとするエディッ

  • 最強ランクの将棋ソフト「Bonanza」、ソースコードを公開 | スラド

    CNET/Venture Viewの記事より。“最強ランク”の1つに数えられるコンピュータ将棋プログラム「Bonanza(ボナンザ)」(開発者=保木邦仁氏)のソースコードが公開されている。ここには思考ルーチンのコードも含まれており、将棋ソフト開発者の間では「ソースを再利用すべきか」「Bonanzaクローンが蔓延するのではないか」といった声があがっているという。 Bonanzaは2006年の「第16回世界コンピュータ将棋選手権」において初出場で優勝するなど、個人が開発するソフトでありながら“最強ランク”の1つに数えられる将棋ソフト(2008年の第18回大会では第3位)。従来はバイナリのみの配布だったが、1月29日公開のv4.0.3よりソースコードも含め配布されるようになったようだ。 (追記:2009/02/22 12:02)公式サイトからのダウンロードはかなり重いので、入手したい場合は窓の杜

  • Latent Semantic Indexing - naoyaのはてなダイアリー

    情報検索におけるベクトル空間モデルでは、文書をベクトルとみなして線形空間でそれを扱います。この文書ベクトルは、文書に含まれる単語の出現頻度などを成分に取ります。結果、以下のような単語文書行列 (term document matrix) が得られます。 d1 d2 d3 d4 Apple 3 0 0 0 Linux 0 1 0 1 MacOSX 2 0 0 0 Perl 0 1 0 0 Ruby 0 1 0 3 この単語文書行列に対して内積による類似度などの計算を行って、情報要求に適合する文書を探すのがベクトル空間モデルによる検索モデルです。 見ての通り、単語文書行列の次元数は索引語の総数です。文書が増えれば増えるほど次元は増加する傾向にあります。例えば索引語が100万語あって検索対象の文書が 1,000万件あると、100万次元 * 1,000万という大きさの行列を扱うことになりますが、単

    Latent Semantic Indexing - naoyaのはてなダイアリー
    clouder
    clouder 2009/02/23
    むずい…