タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

AlgorithmとALgorithmとProgrammingに関するagwのブックマーク (1,893)

  • その8 4分木空間分割を最適化する!

    ホーム<ゲームつくろー!<衝突判定編 2D衝突編 その8 4分木空間分割を最適化する!(理屈編) ゲーム空間に置いたオブジェクトを総当りで衝突判定する事ははっきりと非効率だと言えます。ちょっと計算してみましょう。60FPSのゲームの1フリップ約16.6ミリ秒の内衝突判定に10%の時間余裕(1.66ミリ秒)を与えられたとします。もし1000回の衝突判定に1ミリ秒かかるなら(1000回/msec)、判定回数は1660回以下に抑えないと間に合いません。総当りだとこれは58オブジェクトくらいで限界です。判定時間が200回/msecならオブジェクトはたった18個で限界。これはどう考えても節約が無いとゲームになりません。 オブジェクトの全ての位置が決まった時、自分とぶつかる可能性があるのは自分の周りのオブジェクトだけです。遠い所にある物は判定する必要すらありません。そこで「空間をある程度制限してその中

  • [ActionScript 3.0] 四分木│miscellaneous

    四分木とは 領域を必要に応じて再帰的に4分割していきながら領域を分割する方法 下のデモでは赤い円を障害物と見立て、四分木を構築しています。 赤い円はマウスで移動できます。移動するごとに四分木は再構築されます。 赤い円がない部分は粗く、赤い円の境界の部分は細かく分割されているのがわかるかと思います。 次のデモでは勝手に動く円の位置を元に四分木を構築しています。

    agw
    agw 2009/08/14
    Flashによる四分木のデモ。
  • unbland.org blog » Blog Archive » 四分木で 2D の衝突判定を最適化

    今回は四分木 (Quad Tree) について。 オブジェクト同士の衝突判定を行う際、みなさんはどうしていますか? 一番最初に思い付く方法は衝突対象のオブジェクトを配列にでも入れて、総当たりで Sprite#hitTestObject() なんかで判定してしまおうという方法だと思います。この方法でも、対象のオブジェクト数が少なければ特に問題にはなりません。しかし対象のオブジェクト数が多かった場合、総当たりで計算を行うという方法では計算量が膨大になってしまい、とても現実的とは言えません。 Sprite#hitTestObject() などの衝突判定を行う前に、どうにか衝突の可能性があるオブジェクトを限定出来ないか? そんな時には四分木を使えば計算量が減らせます。 概念的には miscellaneous さんの「四分木」エントリーが参考になります。 四分木を構築する方法で一般的(?)なものは

    agw
    agw 2009/08/14
    四分木の紹介エントリ。Flashによるデモが分かりやすい。
  • 最強最速アルゴリズマー養成講座:あなたの論理的思考とコーディング力は3倍高められる (1/2) - ITmedia エンタープライズ

    全世界で20万人を超える凄腕のコーダーが集うプログラミングコンテスト「TopCoder」。稿では、アルゴリズム部門のSRMで取り上げられる問題を考えながら、論理的思考力およびコーディングのテクニックを養っていきます。 はじめに はじめまして。高橋直大です。連載「最強最速アルゴリズマー養成講座」では、全世界で20万人を超える凄腕のコーダーが集うプログラミングコンテスト「TopCoder」について、そこで出題される数学・アルゴリズムのパズルを考えることで、コーディングのテクニックおよび論理的思考力を磨くことを目的に開始するものです。ここで扱う技法は主にアルゴリズムのそれですが、その根底にはロジカルな思考術が存在します。そうした能力を養いたい方にとって少しでも役に立てれば幸いです。 なお、稿は必要に応じてコーディング例も紹介しますが、TopCoderで出題される問題の中から比較的やさしい問

    最強最速アルゴリズマー養成講座:あなたの論理的思考とコーディング力は3倍高められる (1/2) - ITmedia エンタープライズ
  • http://lucille.sourceforge.net/blog/images/shpoly.pdf

  • Lua/組み込み - assari

  • DirectXの話 第88回 「球面調和関数」

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • atso-net.jp

  • Summed-area table - Wikipedia

    Using a summed-area table (2.) of a 6×6 matrix (1.) to sum up a subrectangle of its values; each coloured spot highlights the sum inside the rectangle of that colour. A summed-area table is a data structure and algorithm for quickly and efficiently generating the sum of values in a rectangular subset of a grid. In the image processing domain, it is also known as an integral image. It was introduce

    Summed-area table - Wikipedia
  • Binary search tree - Wikipedia

    Fig. 1: A binary search tree of size 9 and depth 3, with 8 at the root. In computer science, a binary search tree (BST), also called an ordered or sorted binary tree, is a rooted binary tree data structure with the key of each internal node being greater than all the keys in the respective node's left subtree and less than the ones in its right subtree. The time complexity of operations on the bin

    Binary search tree - Wikipedia
  • PythonのGCについて

    PythonのGarbageCollection 原文 Neil Schemenauer (翻訳:中村 成洋) ポータブルなGarbageCollection 概要 循環参照はリスト,タプル,インスタンス,クラス,辞書,関数に伴って見つかります. インスタンスの __del__ メソッドは正常に取り扱われます. 新しいタイプをGCの対象に追加するのは簡単です. このGCが有効なPythonは,通常のPythonとバイナリ互換です. 世代別GCが動いています(今は三世代).このオーバヘッドをpybenchで測ったら,大体4%くらい占めていました. 実質的に,すべての拡張モジュールは,不変に(私は,標準的な配布において 新しいものとcPickleを修正しなければなりませんでした)ならなければなりま せん.gcと呼ばれている新しいモジュールは,コレクターを調整して,デバッ ギングオプションをセッ

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

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

    転置インデックスを実装しよう - mixi engineer blog
  • Google Chromeアップデート高速化の秘密、bsdiffと逆アセンブラ | エンタープライズ | マイコミジャーナル

    Google Chrome Blog - The latest news from the Google Chrome team GoogleChromium Blog: Smaller is Faster (and Safer Too)およびSoftware Updates: Courgette ?(Chromium Developer Documentation)において、Google Chromeのアップデート機能を改善し、従来よりもさらに小さいサイズでのパッチ配信が可能になったと伝えている。この新しい手順はCourgetteと呼ばれている。 Googleはブラウザのセキュリティを向上させる目的でChromeに自動更新機能を実装している。ほかのブラウザと異なり、基的にユーザはこの機能を無効にできない仕組み。この機能を通じて安定版ではセキュリティアップデートが定期的に実行され、開発

  • 微分方程式を解こう! | _level0 - KAYAC Front Engineer Blog

    どうも。こんにちは。梅雨明けも宣言されたそうで、いよいよ暑くなりますね。今回は単振動方程式方程式を用いた最適化のお話です。 高校物理でも登場するバネの方程式、単振動方程式 を簡単な四則計算に分解する方法を紹介します。 まず色々な数学的背景を押しやって、イメージだけ説明すると、物体の位置x、速度v、加速度aの関係は となるので、asの式で考えると、 v += a; x += v; という風になります。ここで単振動の微分方程式から、 a = -K * x; であるから、あわせると、 v -= K * x; x += v; という風になります。下がサンプルで、初期値(_v, _y)やKなんかを変えて挙動が変わることが分かります。 ここでのポイントはvに対して最初の式で破壊的な操作を行っていることです。 v_temp = v; v -= K * x; x += v_temp; 等とすると、ずれてし

    微分方程式を解こう! | _level0 - KAYAC Front Engineer Blog
  • 一番右端の立っているビット位置を求める「ものすごい」コードのていねいな説明 - 2009-07-06 - 当面C#と.NETな記録

    id:siokoshou:20090704 のはてブのコメント見てるとわからないってコメントが結構あるので、もう一度がんばって説明してみます。まあわかったところで得はないかもしれませんw public static int GetNumberOfTrailingZeros( long x ) { if ( x == 0 ) return 64; ulong y = ( ulong ) ( x & -x ); int i = ( int ) ( ( y * 0x03F566ED27179461UL ) >> 58 ); return table[ i ]; } static int[] table; table = new int[ 64 ]; ulong hash = 0x03F566ED27179461UL; for ( int i = 0; i < 64; i++ ) { table[

    一番右端の立っているビット位置を求める「ものすごい」コードのていねいな説明 - 2009-07-06 - 当面C#と.NETな記録
  • C - でも一番右端の立っているビット位置を求めてみた : 404 Blog Not Found

    2009年07月07日03:30 カテゴリMathLightweight Languages C - でも一番右端の立っているビット位置を求めてみた 素晴らしい。 2009-07-04 - 当面C#と.NETな記録 問題の説明はここまでにして、コードの紹介です。Hacker's delight のコードより4〜5倍速く、そして、イミフ加減が半端じゃない!これ一つで 64bit 値以下のすべての値に対応できます。 でも、実際にどれくらい威力があるか試してみたかったのでCに移植してみた。意外な結果が出ております。 0x03F566ED27179461ULL まずは黒魔術。より黒魔術っぽくしてみました。 typedef unsigned long long U64; #define HASH 0x03F566ED27179461ULL static int ntzhash[64]; void i

    C - でも一番右端の立っているビット位置を求めてみた : 404 Blog Not Found
  • 禁断探索法をpythonで

    ヒューリスティクスは割と好きだ。スパッととけないものをなんとか現実と折り合いを付けながらよりよい解を見つけるみたいな、なんとも煮え切らない美しさのなさがたまらん。インフォマティクスも似たような香りはする。 特に、「シミュレーションできない学問は学問として未成熟である」という言葉に従うのであれば、創薬研究は(学際領域)と言われている割には未成熟な学問の組み合わせのために発見的な手法の割合が増えすぎるし、精度の高い予測法の誕生もまだまだ先であろう。というわけで、発見的な探索手法は当分有用だし、学際領域故に融合部分での応用が期待されるため、アルゴリズムとしてきちんと押さえておくと色々役に立つ。 メタヒューリスティクスの数理の4章はpythonのコードが載っているので、勉強になる。 第4章 応用 4.1 グラフ分割問題 4.2 最大安定集合問題 4.3 グラフ彩色問題 4.4 巡回セールスマン問題

    禁断探索法をpythonで
  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面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な記録
  • ゲーム職人.com - OctTree

    Step 4... 以降 これ以降は、先ほどまでの繰り返しです。 つまり、三角形を格納するより小さい AABB があれば、そこに三角形を挿入していきます。必要に応じて AABB を 8 分割していきその中に三角形を挿入したりもします。こうしてバランスの取れた木の構築を目指していきます。皆さんご存知のとおり、木のバランスがよければよいほど、検索効率は向上することになります。 Step3までの説明では、一つのノードに 0 または 1 つの三角形が格納されていますが、実際は、何個格納してもかまいません。 実装 概要はつかんでいただけたと思うので、実装上のポイントを解説。 あんまり深くしない 一般的に木構造は、できる限り深くしないように構築していくのが良いとされています。そこで、 三角形が 2 個以上格納されない限り、AABB を分割しない ことが重要です。よくやるミスとして、 分割可能な限

  • コンピュータ将棋協会blog » どうぶつしょうぎ読み切り?

    当ブログでもお知らせしたコンピュータ将棋協会5月例会にて話題になり、コメント欄でも多くの結果が公表されたどうぶつしょうぎ。現在の結論は、後手(そらチーム?)の勝ちらしい、とのことです。 当ブログの5月例会の記事のコメント欄の内容をおさらいすると、当協会5月例会の時点ですでにGPS将棋の田中さんとうさぴょんの池さんによって解析が進められており、千日手らしい、との結論が出されていました。その後バグが発見されたことで千日手の結論が撤回され、後手勝ちに変わりました。田中先生はコンピュータの後退解析(retrograde analysis)により78手で後手勝ちの結論。 鈴木将棋の鈴木さんもコンピュータのdf-pn(depth-first proof-number search)による探索で後手勝ちと結論づけました。 後退解析とは、ゲームが終わった局面、すなわちライオンが詰んだ、もしくは相手の一段目