タグ

アルゴリズムに関するdominion525のブックマーク (39)

  • スーパーマリオのジャンプのアルゴリズム - Qiita

    先日、気持ちのいいジャンプを目指してというQiitaの記事を見かけました。記事中では、マリオのジャンプについても触れられています。マリオというと、マリオブラザースやスーパーマリオブラザース等々、色々あるのですが、これはおそらくスーパーマリオブラザースの事だと思われます。ジャンプアクションゲームといったらスーマリですね。 そのマリオのジャンプの仕組みは「マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて~」と書かれていて、別サイトのブログへのリンクが張られています。 マリオのジャンプ実装法とVerlet積分 ただ、この記述については不正確であるという別のブログもあったりします。 マリオの完コピvol.28 ジャンプの解析と修正 ホントのところはどうなんでしょうか?世界で最も有名なゲームジャンプがどのように処理されているのか気になったので調べてみることにしました。 原典にあたる

    スーパーマリオのジャンプのアルゴリズム - Qiita
  • Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog

    はてなアプリケーションエンジニアの id:takuya-a です。 この記事では、Microsoft の検索エンジン Bing で採用された BitFunnel アルゴリズムを紹介します。 昨年のエンジニアアドベントカレンダーでは、文字列検索のアルゴリズム全般について紹介しました(文字列アルゴリズムの学びかた - Hatena Developer Blog)。今年はそのなかでも、インデックス(索引)を使った全文検索アルゴリズムについてのお話になります。 この記事の前半は全文検索の入門にもなっていますので、検索技術になじみがない方にも楽しんでいただけるのではないでしょうか。 逆に、「そんなのもう知ってるよ!」という方は、題である「BitFunnel アルゴリズムの詳細」から目を通していただければと思います。 この記事は、はてなエンジニア Advent Calendar 2017の21日目の

    Bing検索の裏側―BitFunnelのアルゴリズム - Hatena Developer Blog
  • 差分検出アルゴリズム三種盛り - Object.create(null)

    こんばんは. 気がつけばもうずいぶんと涼しくなってきました. 勢い余って凍ってしまったりせぬよう, くれぐれも普段の言動にはお気をつけください. はじめに さて, 我々人類にはどうしても二つの文字列 (あるいは行ごとに区切られたテキスト) 間の差分を求めなければいけない瞬間が発生します. 先人たちはそういった時のために diff のようなツールを開発し, それを利用することで文明はめざましい発展を遂げてきました. しかしながら, 使用するアルゴリズムを比較検討したい場合, 「差分」の定義を変えるなどして既存のアルゴリズムに変更を加えたい場合, diff のない異世界に飛ばされて自分で実装しなければいけない時などにおいては, 差分検出アルゴリズムについての理解が必要不可欠です. というわけで, この記事では文字列間の差分検出とは何かということと, 差分を求める三種類のアルゴリズムの紹介・解説

    差分検出アルゴリズム三種盛り - Object.create(null)
    dominion525
    dominion525 2017/10/10
    “けっきょく南極大冒険なんで急に差分検出アルゴリズムを調べていたかというと,”
  • Google、新しい圧縮アルゴリズム「Brotli」公開

    Googleは9月22日(米国時間)、「Google Open Source Blog: Introducing Brotli: a new compression algorithm for the internet」において、新しい圧縮アルゴリズムおよびその実装系「Brotli」を発表した。実装系はApache License Vresion 2.0の下、オープンソース・ソフトウェアとして公開されている。 Googleは2年前にZopfliと呼ばれる圧縮アルゴリズムを公開している。ZopfliはDeflateと互換性を持っていたが、今回発表されたBrotliはまったく新しいデータフォーマットを採用しており、Zopfliと比較して20%から26%ほど圧縮率の引き上げに成功している。また、BrotliはzlibのDeflate実装と同程度の速度を実現しているほか、Canterbury co

  • サルでも分かるwaifu2xのアルゴリズム

    ログイン

    サルでも分かるwaifu2xのアルゴリズム
  • 文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)

    言語処理学会第20回年次大会(2014/3)のチュートリアル講義資料です。 - 要旨 - 文法圧縮とは,入力テキストをよりコンパクトな文脈自由文法(CFG)に変換する圧縮法の総称である. 文法圧縮の強みは圧縮テキストを展開すること無く,検索等のテキスト処理を効率よく行える点にある. 驚くべきことにその処理速度は,元テキスト上での同じ処理を理論的に,時には実際にも凌駕する. また近年,ウェブアーカイブやログ,ゲノム配列等の大規模実データを高効率に圧縮できることで注目を集めている. しかしながら,文法圧縮についての初学者向けの解説資料はまだまだ少ない. そこでチュートリアルでは,文法圧縮の歴史的背景から最新動向までを幅広く紹介する. 具体的には文法変換アルゴリズム,圧縮テキスト上での文字列パターン検索,文法圧縮に基づく省メモリデータ構造等の解説を行う.Read less

    文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
    dominion525
    dominion525 2014/03/19
    圧縮パターン照合とかできるのかー。
  • 自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる - あんちべ!

    概要 この記事は自然言語処理という分野の最新手法word2vec を利用して誰でも遊べるようにするための手順を説明するものです。 word2vecを利用すると意味の計算が実現できます。 例えば"king"から"man"を引いて"woman"を足すと"queen"が出てきたり、 "東京"から"日"を引いて"フランス"を足すと"パリ"が出てくるという面白い手法です。 自然言語処理とは人間が日常的に用いる自然言語をコンピュータに処理させ、 翻訳や要約、文字入力支援や質問応答システムを作るなどに活用されている分野です。 自然言語処理と言うと耳慣れない言葉かもしれませんが、 実は検索や推薦などで私たちが日常的に利用しているなじみ深い技術でもあります。 自然言語処理の適用範囲や要素技術は幅広いのですが、 その中でもword2vecの特色は、 冒頭でも挙げたように「意味の計算」が出来ることです。 これ

    自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる - あんちべ!
  • 「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei

    「高速文字列解析の世界」という大変すばらしいが発売された。わりと敷居が高いではあるので読む前に知っておくとよさそうなことを書いておく。 「高速文字列解析」とは 書でいう高速文字列解析というのは主に2つのことを指している。ひとつはデータを圧縮して小さくしてディスクよりメモリ、メモリよりキャッシュというようにより高速な記憶装置で扱いましょう、という話。もうひとつはデータ構造を工夫することで複雑な操作もそこそこ高速に扱えますよ、という話。つまり「圧縮」の話と「効率的なデータ構造」の話があると考えておくと良い。 キーワードは3つ オビにも書いてあるけれど、書が主に扱うのは「BWT」「簡潔データ構造」「ウェーブレット木」の3つ。具体的には「BWT」が「圧縮」に関わっていて「ウェーブレット木」が「効率的なデータ構造」に関わっている。「簡潔データ構造」は基的な道具として書の色々なところで出て

    「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei
  • あの!お姉さんの努力を軽く凌駕・・湊離散構造処理系プロジェクトが道順の数え上げで世界記録を更新しました | キニナル!未来Lab.:JSTの研究支援事業「ERATO」が生むキニナル未来を紹介

    << 日科学未来館メディアラボ展示「フカシギの数え方」の動画がネットで話題になっているようです。【湊離散構造処理系プロジェクト】 | main | 【プレスリリース】戦略的創造研究推進事業(ERATO型研究)における 平成24年度 新規研究領域および研究総括の決定について >> 日科学未来メディアラボ展示で使用されている動画「『フカシギの数え方』おねえさんといっしょ!みんなで数えてみよう!」が各種ネットメディアで取り上げられるなど、盛り上がりを見せている湊離散構造処理系プロジェクトが、問題の動画でも話題になった「道順の数え上げ」において、同プロジェクト・岩下研究員らが開発したプログラムにより、21×21の計算に成功し、世界記録を更新しました。 それもそのはず、「『フカシギの数え方』おねえさんといっしょ!みんなで数えてみよう!」でお姉さんが機械の体を手に入れてまで計算した10×10の道順

  • 30分でわかる高性能な圧縮符号vertical code - EchizenBlog-Zwei

    検索エンジンの転置インデックスなどデータ列を小さいデータサイズで持たせたい、という状況がある。こういう場合圧縮符号を使うのが一般的でunary符号やgamma符号、delta符号など様々な種類がある。 圧縮符号の中でイチオシなのがvertical code(vcode)。これは岡野原(@hillbig)氏によって提案された圧縮符号で単純な仕組みでdelta符号並の性能を誇っている。 記事ではvcodeのポイントを絞って30分でわかるように解説してみる。 vcodeは棚にを並べる作業を連想すると理解しやすい。棚は予め高さが決まっているので全てのが入るような棚を用意する。つまり というようなものを想像する。 この棚は8冊のが並んでいるが左から5冊目のが他よりも背が高い。このため5冊目のに合わせて背の高い棚が必要になる。だが他のは5冊目のほどに背が高くないので、5冊目が

    30分でわかる高性能な圧縮符号vertical code - EchizenBlog-Zwei
  • ARToolKitの物体認識 その② 指認識 - Pipe Render

    最近はARToolKitのプログラムも少しできてきたので、 次は手とかをそのまま認識させたいと思っていました。 そしたらちょうどmasafumiさんという方のブログで手認識を使ったARという記事を見つけました。 この方法は認識精度が高そうなので、twoViewでの物体認識にも使えそうです。 この手認識ARの研究は、手を認識することによってマーカーの代わりにしようというものです。 ソースも公開されているので、すぐにこのプログラムを使った動画がアップされています。 見ての通り、指認識の精度は非常に高いです。 というわけで今回は、この指認識のアルゴリズムだけをいただき、 この情報を元にtweVIewから指の3次元座標を計算してみました。 これで綿棒や色の付いた目印を使う必要がなくなります。 --- < 指認識の概要 > --- 指認識では、おおまかに以下のような処理を行っています。 1.手の色に

  • 機械の代わりに人間が学習入門

    [Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...Shuyo Nakatani

    機械の代わりに人間が学習入門
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • Low-Layer Hacks: P2Pアルゴリズム毎のメリット/デメリット

    2009-10-10 P2Pアルゴリズム毎のメリット/デメリット Winny裁判で金子氏に無罪判決が下り、P2Pを実装したアプリケーションは今後増えてくると予想される。そこで、技術者向けにP2P構造化オーバーレイネットワークのアルゴリズム毎におけるメリット/デメリットを簡潔にまとめ、実装にあたり必要となるであろう参考資料を示した。 ・Chord DHT(分散ハッシュテーブル)の一種であるこのアルゴリズムはConsistent Hashingをベースとしており、名前の通り、分散されたコンピュータ間にハッシュテーブルを構築する。このアルゴリズムは多くのシステムに採用されているのでとても信頼性が高く、実装も容易である。 ただ、愚直な実装では耐障害性が低くなるので注意が必要だ。UnbreakableなChordを提案した論文もあるようなので、そういう文献も参考にすると良いかもしれない。 参

  • 転置インデックスを実装しよう - mixi engineer blog

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

    転置インデックスを実装しよう - mixi engineer blog
  • QR Code Reader:ActionScriptでQRコードを読み取る | デベロッパーセンター

    上野賢一氏 ロゴスウェア株式会社 この記事は、Spark projectが主催する勉強会での講演内容を、講演者とSpark projectの協力のもと、Adobe Developer Connection用に再構成したものです。Spark projectの勉強会は、毎月開催されています。詳しくは、「Spark project 勉強会」のページまで。 QRコードは今や至るところにあり、携帯電話には必ずと言っていいほどQRコードを読み取る機能がついています。QRコードは、皆さんにとって身近な存在でしょう。 ※QRコードは株式会社デンソーウェーブの登録商標です Web上でも、携帯サイトへアクセスしやすいように、携帯サイトのURLなどの情報を埋め込んだQRコードをWebページに貼り付けているサイトをよく見かけます。こうしたQRコードを作成するには、QRコード作成用のエンコーダを使います。

    dominion525
    dominion525 2009/06/30
    QRコードでコード処理の原理について
  • Spaghetti Source - アトキンのふるい

    ソースコード void sieve_of_atkin() { int n; for (int z = 1; z <= 5; z += 4) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 4*x*x+y*y) <= N; ++x) isprime[n] = !isprime[n]; for (int x = y+1; x <= sqrtN && (n = 3*x*x-y*y) <= N; x += 2) isprime[n] = !isprime[n]; } } for (int z = 2; z <= 4; z += 2) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 3*x*x+y*

    dominion525
    dominion525 2009/06/16
    >エラトステネスのふるいよりも計算量の意味でも実用的な意味でも高速に動作する.
  • アルゴリズムの天才 - @IT自分戦略研究所

    連載を初めて読む人へ:先行き不透明な時代をITエンジニアとして生き抜くためには、何が必要なのでしょうか。それを学ぶ1つの手段として、わたしたちはIT業界で活躍してきた人々の偉業を知ることが有効だと考えます。連載では、IT業界を切り開いた117人の先駆者たちの姿を紹介します。普段は触れる機会の少ないIT業界歴史を知り、より誇りを持って仕事に取り組む一助としていただければ幸いです。(編集部) 連載は、2002年 ソフトバンク パブリッシング(現ソフトバンク クリエイティブ)刊行の書籍『IT業界の冒険者たち』を、著者である脇英世氏の許可を得て転載しており、内容は当時のものです。 ドナルド・クヌース(Donald Knuth)―― 元スタンフォード大学教授、TeX開発者 日では、Knuthという彼の名字をクヌースと表記するが、外国でも彼の名前を何と呼ぶかが常に問題になるらしい。インターネ

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

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

    軽量データクラスタリングツールbayon - mixi engineer blog
  • Java SE 6 Update 14のEarly Access公開、G1ガーベージコレクタが利用可能に | エンタープライズ | マイコミジャーナル

    Java SE 6開発チームは11日(米国時間)、Java SE 6の将来のリリースとなるJava SE 6 Update 14のEarly Access版を公開した。主な変更点は以下の2つ。 Windows JREにおけるサービスタグのサポート Java HotSpot 14へのアップデート 特筆すべきは後者で、HotSpot 14では新しいガーベージコレクタ「Garbage-Firstガーベージコレクタ(以下、G1 GC)」が利用可能となる。G1-GCはJava SE 7で正式採用される予定となっているオープンソースのGCだ。 現在のHotSpotでは「世代別GC」と呼ばれる手法が採用されている。これはヒープ領域をYoung領域とOld領域(Tenured領域)に(物理的に)分け、新しいオブジェクトはYoung領域へ、長く使用されているオブジェクトはOld領域に配置し、それぞれ別に管理