algorithmに関するflakwingのブックマーク (192)

  • 素朴なBigtable、できること できないこと

    素朴なBigtable、できること できないこと:分散Key-Valueストアの命「Bigtable」(2)(1/2 ページ) RDBとは別の、クラウド時代のデータベースとして注目を浴びている「分散Key-Valueストア」。その命ともいえる、Googleの数々のサービスの基盤技術「Bigtable」について徹底解説 あまりにもRDBとは異質な「Bigtable」 前回の「もう1つの、DBのかたち、分散Key-Valueストアとは」では、連載第1回目として、クラウドコンピューティングにおける新しい潮流である「リレーショナルデータベース(RDB)から分散Key-Valueストア(分散KVS)への移行」が、どのようなパラダイムシフトをもたらすのかを解説しました。今回からは、グーグルが運用する代表的な分散KVS「Bigtable」の内部構造を紹介し、クラウドの質をより深く掘り下げます。 前

    素朴なBigtable、できること できないこと
  • Yaneu Labs --- コンピュータ将棋プログラムをLISPで書く

    *[hatefu:labs.yaneu.com/20090905/] コンピュータ将棋プログラムをLISPで書く 「コンピュータ将棋プログラムをLISPで書く」と言うとコンピュータ将棋開発関係者にすら完全にネタかと思われているのが実状ではあるが、私はこれを機にその誤解を解いておきたい。 ここでは、私がC#で書いたLISPエンジンのソースを公開し、これが実際にコンピュータ将棋プログラムの開発において非常に有効であることを示す。 * YaneLisp version 1.10 今回の記事はあまりに長文なので最後まで読む前に眠くなる人のために、まず始めに私が実装したLISPのバイナリとソースを配布しておく。ライセンスはNYSLとする。 勢いに任せて実装したので、かなり雑な作りだが、必要ならばC#側で関数を追加するなりすればいいと思う。このLISPの製作に要した時間は丸2日ぐらい。 # YaneL

  • オーダーを極める思考法

    プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使

    オーダーを極める思考法
  • Chromeがバイナリ差分で新アルゴリズム実装 - @IT

    2009/07/17 グーグルChromeチームは7月16日、Chromeの自動アップデートで使われるバイナリアップデートに新たなアルゴリズムを実装したことを明らかにした。実際の例として、実行形式のフルアップデートで10MBの容量が必要だったものが、従来の差分方式で704KB、今回発表した新方式では78KBにまで縮小したという。 Chromeには自動アップデートの仕組みが組み込まれており、脆弱性の報告などがあると、これに対応するパッチを当てたバージョンをChromeユーザーにプッシュすることができる。これにより攻撃者が脆弱性を利用する時間が短くなるため、安全性が高まる。 セキュリティパッチなどは、ソースコードレベルで数行の変更であることも多いため、新バージョンの実行バイナリを丸ごとユーザーに送りつける代わりに、差分だけ送ることで転送量を抑えることができる。これまでChromeチームではb

  • B木から要素を削除する方法を学ぼう(1/3)- @IT

    第6回 B木から要素を削除する方法を学ぼう はやしつとむ アナハイムテクノロジー株式会社 2009/7/16 オブジェクト指向によって、アルゴリズムは隠ぺいされていることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるだろうか(編集部) 第5回「RDBMSで使われるB木を学ぼう」では、木構造の中でもメジャーなバランス木の一種であるB木(B-Tree)について解説しました。 前回はB木への要素の追加について説明しましたので、今回はB木からの要素の削除を取り上げたいと思います。 論に入る前に、前回のおさらいとなりますが、B木がどのようなものであるかを確認しておきましょう。 B木はAVL木と同様なバランス木の一種です。B木は、節点に複数のキーを格納できます(これをバケットと呼びます)。そして、新しく追加されるキーは、それぞれのキーに対する大小によって子の節点へと振り分

  • 1/1000の圧縮率を目指す次世代動画像圧縮技術の行方 - A Successful Failure

    現在最高の圧縮効率を誇るAVC/H.264は1GbpsのフルHDTVを10Mbps以下に圧縮できる。1/100以上の圧縮率ということになるが、次世代beyond HDTVの8k4kの空間解像度、60〜300fpsの時間解像度、マルチスペクトルの色表現、10〜16bit/pelの画素値深度、複数視点を考えると情報量は16〜200Gbpsとなるため、ビットレートを100Mbpsまで許容したとしても、圧縮率をさらに10倍は引き上げる必要がある(1/1000以上)。 上記の要求に対し、短期的には従来のAVC/H.264で用いられている動き補償予測とDCTを組み合わせたMC+DCTの枠組みを維持し、改良を積み重ねて圧縮率向上を図るアプローチが取られるが、長期的には従来の枠組みに囚われない新たなブレークスルーが必要となる。エントリでは、情報処理6月号の解説*1より、画像圧縮技術のブレークスルーの萌芽

    1/1000の圧縮率を目指す次世代動画像圧縮技術の行方 - A Successful Failure
  • CNET Japan

    人気記事 1 サムスン最新折りたたみスマホを入手も、すぐ「コンクリ地面」に落としてしまった話 2025年07月19日 2 アップル「AirPods Pro 2」が1万円引き 7月14日まで 2025年07月13日 3 「AI美少女」で話題のGrok新機能はアップルの規約違反?米メディアが指摘 2025年07月17日 4 ChatGPTエージェント登場--「物のAGIを感じる瞬間」とアルトマン氏 危険性も説明 2025年07月18日 5 NTTドコモ「dポイント」が10周年、還元キャンペーン開催へ--その詳細は 2025年07月15日 6 「真正拳銃」が玩具として流通、警察庁が回収呼びかけ 違法性のポイントは 2025年07月18日 7 ミノキシジル入りのグミ、米企業が開発--りんご味で続けやすさを訴求 2025年07月17日 8 今あなたがPC画面に表示している内容すべてをAIが理解--

    CNET Japan
  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録

    一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、

    一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録
  • 転置インデックスを実装しよう - mixi engineer blog

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

    転置インデックスを実装しよう - mixi engineer blog
  • Web上の膨大な画像に基づく自動画像補完技術の威力 - A Successful Failure

    画像内に映り込んだ所望のオブジェクトを排除し、違和感の無い画像を生成するシーン補完技術に関しては近年複数の研究成果が発表されている。しかし中でも2007年のSIGGRAPHにて米カーネギメロン大のJames HaysとAlexei A. Efrosが発表した手法*1はブレークスルーとなりうる画期的なものだ。 論より証拠、早速適用例を見てみよう。エントリで利用する画像はPresentationからの引用である。元画像の中から邪魔なオブジェクト等の隠蔽すべき領域を指定すると、その領域が補完された画像が自動的に生成される。 アルゴリズム 効果は抜群だがアイデア自体は単純なものだ。Web上には莫大な数量の画像がアップされており、今や対象となる画像の類似画像を一瞬にして大量に検索することができる。そこで、検索された類似画像で隠蔽領域を完全に置き換えてしまうことで違和感の無い補完画像を生成するのだ。

    Web上の膨大な画像に基づく自動画像補完技術の威力 - A Successful Failure
  • 適切なクラスタ数を推定するX-means法 - kaisehのブログ

    K-means法によるクラスタリングでは、あらかじめクラスタ数Kを固定する必要があります。HatenarMapsでもK-means法を使っているのですが、クラスタ数は(特に根拠もなく)200個に決め打ちになっていました。 これに対して、X-means法というK-means法の拡張が提案されていることを知りました。X-means法を使うと、データに応じて最適なクラスタ数を推定できます。 K-means and X-means implementations http://www-2.cs.cmu.edu/~dpelleg/download/xmeans.pdf X-means法の考え方は、K=2で再帰的にK-means法を実行していくというもので、クラスタの分割前と分割後でBIC(ベイズ情報量規準)を比較し、値が改善しなくなるまで分割を続けます。 調べたところ、Javaのデータマイニングツー

    適切なクラスタ数を推定するX-means法 - kaisehのブログ
  • マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。

    そもそも、マルコフ連鎖とは何なのか?全く聞いたこともなかった。そして、文章を要約するのはとっても高度なことだと思っていて、自分のレベルではその方法を、今まで思い付きもしなかった。 しかし、以下のようなシンプルなRubyコードでそれが出来てしまうと知った時、目から鱗である...。一体、何がどうなっているのだ?コードを追いながら、マルコフ連鎖を利用するという発想の素晴らしさを知った! 作業環境 MacBook OSX 10.5.7 ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] mecab utf8環境でインストール済み マルコフ連鎖に出逢う rssを流し読みしていると、以下の日記に目が止まった。(素晴らしい情報に感謝です!) MeCabを使ってマルコフ連鎖 一体何が出来るコードなのか、日記を読んだだけではピンと来なかっ

    マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。
  • ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室

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

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
    flakwing
    flakwing 2009/06/26
    入れ子集合モデル
  • 軽量データクラスタリングツールbayon - mixi engineer blog

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

    軽量データクラスタリングツールbayon - mixi engineer blog
  • wonderfl build flash online | 面白法人カヤック

    wonderflは、サイト上でFlashをつくることのできるサービス。 通常Flashをつくるためには、Flash IDEやFlex、FlashDevelop等といったツールを使って、コードを書き、コンパイルする必要がありますが、wonderflでは、サイトにあるフォームにActionscript3のコードを書けば、サーバサイドでコンパイルを行えます。 つまり、ブラウザさえあれば、Flashをつくれます。コンパイル結果はサイト上に表示され、作成されたFlash(swf)はページ上に自動的に表示されるので、完成したFlashをリアルタイムに見ながらコードを書くことができます。 ※APIとして、はてな OpenIDを使用してネットにさえつながれば、誰もがFlashクリエイターになれます。世界中のFlashクリエイターがユーザーになるwonderflは、 文字通り、世界のFlash図鑑となってい

    wonderfl build flash online | 面白法人カヤック
  • もっとAVL木で木構造を学ぼう (1/2)- @IT

    第4回 もっとAVL木で木構造を学ぼう はやしつとむ アナハイムテクノロジー株式会社 2009/5/25 オブジェクト指向によって、アルゴリズムは隠ぺいされていることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるだろうか(編集部) 第3回「AVL木で木構造を学ぼう」では、AVL木に節点を追加する際に、バランスを回復する動作までを解説しました。 今回は、AVL木の実装をさらに進めて、節点を削除する際の動作を取り上げます。 筆者はDelphi 2009でサンプルプログラムを作成していますが、Delphiをお持ちでない方は下記のURLからTurboDelphiをダウンロードして、インストールしてみてください。

  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
  • 最終回 配列/コレクションを利用した抽象化―その5 Step4:配列/コレクション化して抽象化する | gihyo.jp

    良いコ-ドへの道―普通のプログラマのためのステップアップガイド 最終回 配列/コレクションを利用した抽象化―その5 Step4⁠⁠:配列/コレクション化して抽象化する Step4:配列/コレクション化して抽象化する 抽象化完了! まずメインの処理の中で、共通的な部分と違う部分に着目してみました。違う部分は「画像ディレクトリのパス」だったので、パスの一覧を配列として持って(リスト6①⁠)⁠、ループでパスを切り替えながらImageFilesの生成を行うようにしたっす(③⁠)⁠。 データと処理を分けた感じですね。取得したデータはFilesListというList型の変数に保持しています(②⁠)⁠。 リスト6 Step4Action @Path("/") public class Step4Action extends Action { public static final String[] PA

    最終回 配列/コレクションを利用した抽象化―その5 Step4:配列/コレクション化して抽象化する | gihyo.jp
  • ベジェ曲線がわかった! - ザリガニが見ていた...。

    今までいろいろな説明を見てみたけど、頭では直感的に理解できていなかった。 制御点を動かした時、曲線がどのように変化するのか、イメージできなかった...。 そもそも、制御点と曲線の関係性が全く分かっていない...。 でも、てっく煮ブログさんid:nitoyonを一目見て、今までのモヤモヤが一瞬でクリアになってしまった!特に1と3の解説で使われている図やフラッシュを実際に操作してみると、難しい話は抜きにして、制御点を操作した時の曲線の心が分かってしまった気になる。 ベジエ曲線の仕組み (1) - 昔話 ベジエ曲線の仕組み (2) - 2次ベジエ曲線を詳しく ベジエ曲線の仕組み (3) - 3次ベジエ曲線 ベジエ曲線の仕組み (4) - ActionScript 3.0 でベジエ曲線を描く おおっー、感動!こんなにシンプルな方法で作図できるとは!(√2や円周率πを単純な数列から計算できることを知

    ベジェ曲線がわかった! - ザリガニが見ていた...。