タグ

algorithmに関するmasa0x80のブックマーク (111)

  • Pythonでアルゴリズム - Konnichiwa, A doumo

    これはなんですか? 奥村晴彦氏の著書「C言語による最新アルゴリズム事典」をPythonでやろうと決意。Rubyに翻訳されていたので、Pythonでもやってみようと。でも実は書籍はもっていなくてCとRubyのソースを見つつ翻訳しています。1日1個ペースで進んでいます。 やっているうちにこのが欲しくなってきました。 個人のPython力を高めるために始めましたので、間違いが含まれているかもしれません。ご指摘等ございましたら連絡[syobosyobo at gmail dot com]ください。 ちょっと方針をかえて、ctopyで訳すことにした。またまた方針をかえて、、、ctopyはあまりつかえない。ちょっといじってやらないと、出力がよくない。コメントとか入ってると、うまく変換してくれないし。 で、そのあとPythonらしい書き方で書いていこう、かと。どうなるかわかりませんが。

  • お手軽パーザー

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

  • 衝突判定編

    ホーム < ゲームつくろー!< 衝突判定編 衝突判定編 ゲームで絶対に必要になるのが「衝突判定」です。ぶつかる物があって、初めて世界が生まれます。ここでは、衝突(Collision)にトコトンこだわってみました。 (当は自分の学習のためでもあります(^-^;)

  • その11 AABBと点の最短距離

    ホーム<ゲームつくろー!<衝突判定編< AABBと点の最短距離 3D衝突編 その11 AABBと点の最短距離 AABB(軸並行境界ボックス:Axis-Aligned Bounding Box)と点の最短距離を求めてみます。これは、後々のもう少し複雑な衝突に対する布石となります。 ① AABB 軸並行境界ボックスとは、ワールド空間のXYZ軸に対して各辺が平行な直方体の境界図形を言います。例えば町並みの建物などはこれで表すと便利かもしれませんし、真上から見る3DのSTGに登場する自機や敵機をこの境界ボックスで管理しても良いでしょう。何だかんだで案外使い道のある境界図形です。AABBの各辺は軸に並行なので、座標を読むのがとても簡単です。 ② まずは線分で考えて見ましょう AABBと点の最短距離を考えるための布石とするため、まずは「線分と点の最短距離」を考えて見ます。 線分をAB、空間内の点をPと

  • マリオのジャンプ実装法とVerlet積分(実践編) - Gemmaの日記

    前回の続き 実際にやってみました。(Canvas要素を使っているのでFirefoxでどうぞ) http://eva-lu-ator.net/~gemma/geocities/jsmario/jsmario.html マリオのようにジャンプで放物線運動をするゲームを作るとき、 たいていは、座標と速度を使って物理計算すると思います。これはEuler法といいます。 Verlet法では、座標と、前回の座標を使って計算します。つまり、速度を記憶しません。 Verlet法では、座標だけ扱えばすむので、壁にめりこんじゃいけないといった条件を簡単に書くことができます。 単に座標を、壁の直前にするだけでいいです。 ネタ元はCowboy Programming >> Blob Physicsです。 今回のコードの肝は以下の部分です。衝突判定がすっきり書けました。 //Verlet法 var y_temp =

  • 情報処理学会、日本将棋連盟に「コンピュータ将棋」で挑戦状をたたきつける

    情報処理学会は4月2日、コンピュータ将棋でトッププロ棋士との公開対局を求める挑戦状を日将棋連盟に送った。日将棋連盟もこれを受諾、清水市代女流王位・女流王将を対戦相手とすることを明らかにした。対戦は今秋に実施予定。 1997年、当時チェスの世界チャンピオンであったガルリ・カスパロフ氏がIBMのスーパーコンピュータ「Deep Blue」と対戦し、Deep Blueの2勝1敗3引き分けとなったことをご記憶の方もおられるだろう。すでにチェスの世界ではコンピュータがプロのトップレベルを打ち破っているが、チェスと比較すると、将棋は取った駒を持ち駒として再使用できるというゲーム特性から指し手の選択肢が多く、コンピュータ将棋はまだプロのトップレベルの実力には達していないと考えられている。 プロのトップレベルにコンピュータ将棋が勝つのは2015年ごろではないかと予測する識者もいるが、今回、情報処理学会は

    情報処理学会、日本将棋連盟に「コンピュータ将棋」で挑戦状をたたきつける
  • 最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ

    動的計画法とメモ化再帰 今回は、非常によく用いられるアルゴリズムである、「動的計画法」「メモ化再帰」について説明します。この2つはセットで覚えて、両方使えるようにしておくと便利です。 なお、メモ化再帰に関しては、第5・6回の連載の知識を踏まえた上で読んでいただけると、理解が深まります。まだお読みになっていない方は、この機会にぜひご覧ください。 中学受験などを経験された方であれば、こういった問題を一度は解いたことがあるのではないでしょうか。小学校の知識までで解こうとすれば、少し時間は掛かるかもしれませんが、それでもこれが解けないという方は少ないだろうと思います。 この問題をプログラムで解こうとすると、さまざまな解法が存在します。解き方によって計算時間や有効範囲が大きく変化しますので、それぞれのパターンについて考えます。 以下の説明では、縦h、横wとして表記し、プログラムの実行時間に関しては、

    最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ
  • TeXの行分割アルゴリズムをJavaScript実装 | エンタープライズ | マイコミジャーナル

    TeX is a typesetting system designed and mostly written by Donald Knuth. Bram Stein氏がTeX line breaking algorithm in JavaScriptにおいて、JavaScriptでKnuth/Plass行分割アルゴリズムを実装した例を紹介している。Knuth/Plass行分割アルゴリズムはTeXで使われている行分割アルゴリズム。これをJavaScriptで実装し、HTML5 Canvas要素経由で表示するというもの。TeX line breaking algorithm in JavaScriptではそれ以外にもCSS text-align: justifyの表示結果や、左寄せ、左寄せをベースに使った中寄せ、可変幅の例が掲載されている。 TeX line breaking algorit

  • きまぐれ日記: キーワード抽出: tf-idf の意味づけ

    単語の重み付けの古典的な方法に tf-idf があります。文書中の各単語の tf-idf 値計算し、値でソートすると、その文書に特徴的な単語リストを得ることができます。 http://nais.to/~yto/clog/2005-10-12-1.html tf-idf は、単なるヒューリスティックスだと考えられていましたが、最近言語モデルに基づく情報検索手法がさかんに研究されるようになり、tf*idf の解釈が明らかになってきました。言語モデルに基づく手法は、ヒューリスティックスばりばりの手法と同性能にもかかわらず、文書のランキングに理論的で合理的な説明を与えることができます。 情報検索は、クエリ q に対し、もっとも適合する文書 d_opt を求めるタスクです。つまり、q が与えられたとき、文書 d が出現する確率 p(d|q) の最大化問題と解釈できます。 d_opt = argmax

  • 一般化ぷよぷよの NP 完全性

  • Bayesian Setsによる関連文書検索システムStupa - mixi engineer blog

    都会よりも田舎が好きなfujisawaです。Bayesian Setsというアルゴリズムを使って、関連する文書を高速・高精度に検索できるシステムを作成しましたので、そのご紹介をさせていただきます。 Bayesian Setsとは Bayesian Setsはいくつかアイテムを入力すると、それを補完するようなアイテムを返してくれるアルゴリズムです。原著論文の先頭に"Inspired by Google Sets"と書かれているように、Google Setsを参考にして作成されています。実際にどのような出力が得られるか、Google Setsに以下の表のクエリを検索して試してみますと、 クエリ 出力 apple, banana chocolate, strawberry, vanilla, cherry, ... apple, macintosh software, windows, mac,

    Bayesian Setsによる関連文書検索システムStupa - mixi engineer blog
  • 第7回 転置索引の構築 | gihyo.jp

    はじめに これまで、転置索引の構造や具体的なデータ構造を見てきました。今回は、検索したいテキスト文書から、どのようにこの構造を構築するかを説明していきます。 ディスクベースの構築方法 第3回では、表を作成しそれを転置させることで転置索引を構築しました。実際にコンピュータに処理をさせる場合も、メモリ上の2次元配列で同様に構築することが可能となります。しかし、通常の転置索引は非常に疎な表となるため、この方法ではメモリを使いすぎてしまいます。また、リンクリストなどのメモリ上でのデータ構造を用いることにより、上記の方法と比較して少ないメモリ量で構築することもできます。 これらの方法はいずれも、対象とする文書集合を変換した転置索引が実メモリに収まる場合にのみ可能となる方法となります。しかし多くの場合、転置索引は実メモリよりも大きくなります。そのような場合はディスクを用いた構築方法が必要となり、効率的

    第7回 転置索引の構築 | gihyo.jp
  • 経路探索アルゴリズムの「ダイクストラ法」と「A*」をビジュアライズしてみた - てっく煮ブログ

    as詳解 ActionScript 3.0アニメーション ―衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック を読んでいて、経路探索のアルゴリズムで A* が取り上げられていました。A* については、いろいろ検索して調べたりもしたのですが、やっぱりに書いてあると理解しやすいですね。せっかくなので自分流に実装してビジュアライズしてみました。ダイクストラ法まずは A* の特別なケースでもあるダイクストラ法から見ていきます。クリックすると探索のシミュレーションが開始します。スタート地点(S)からゴール(G)への探索が始まります。色がついたところが「最短経路が決定した場所」です。スタート地点から少しずつ探索が完了していきます。半分ぐらい完了しました。まだまだ進みます。最後まで終わりました。最短経路を黒色矢印で表示しています。ダイクストラ法は、スタート地点から近いノード(=マス

  • PythonでA*(A-Star)アルゴリズム - Pashango’s Blog

    今回はA*アルゴリズムをPythonでやってみます。 ゲームプログラマの間では、もはや常識となりつつある最短経路問題解決アルゴリズムです。 A*は、古典的手法である「ダイクストラ法」を改良したものです。 スタート地点からノードnを通ってゴールに辿り付くとき、最短距離をf(n)とすると、 f(n) = g(n) + h(n) とすることができます、g(n)は「スタートからノードnまでの最短距離」、h(n)は「ノードnからゴールまでの最短距離」です。 でも、最初から適切なg(n)とh(n)が判ってるなら苦労しませんよね。 だから、テキトーな予測値を使って、最短経路をある程度予測して効率的に経路探索をしてみようという事です。 テキトーな予測値を使った最短経路距離をf*(n)とすると f*(n) = g*(n) + h*(n) となります、f*(n)を求めるためにテキトーなg*(n)とh*(n)を

    PythonでA*(A-Star)アルゴリズム - Pashango’s Blog
  • シュワルツ変換 ‐ 通信用語の基礎知識

    リストを、各要素に一定の演算を施したもので操作したいが、最終的に必要なのが演算の結果ではなく、来の要素である場合に用いる手法。 一定の演算を施した要素と元々の要素を組にしたリストを作成し、演算された要素を用いてリスト全体に対して操作を行ない、最後に組の中から元々の要素だけを取り出すことで必要な結果を得る。 とくに、リストの整列の際、要素の比較に用いる条件が複雑な場合に、あらかじめ各要素を比較するための値を算出しておいて、何度も計算するのを避けるために用いることが多い。 名前は、Just another Perl hacker,であるランダル・シュワルツ(Randal L. Schwartz)に由来する。 記述は簡潔になるが、一時作業用のメモリー消費量が余分に必要になる。

  • Blogopolisから学ぶ計算幾何 記事一覧 | gihyo.jp

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

    Blogopolisから学ぶ計算幾何 記事一覧 | gihyo.jp
  • 第1回 直線の幾何 | gihyo.jp

    計算幾何学とは 小学生や中学生の頃、算数や数学の授業で、台形の面積を求めたり、直線の方程式を解いたりした記憶が誰にでもあることでしょう。計算幾何学とは、コンピュータサイエンスの立場から、こうした「図形」に関するアルゴリズムを研究する学問です。計算幾何学は、今日のコンピュータグラフィックスやCADの発展においてきわめて重要な役割を担っているほか、地理情報システム(GIS)やロボット工学といった数多くの分野に応用されています。 連載では、ブログ可視化サイトの「Blogopolis」で採用されている計算幾何的アプローチを引き合いに出しつつ、Javaプログラムでアルゴリズムを実装しながら、計算幾何学の初歩を学びます。 Blogopolisとボロノイ図 Blogopolisは筆者の開発したWebサイトで、主に日国内で開設された25万件以上のブログを解析し、「⁠仮想都市景観」として視覚化したサービ

    第1回 直線の幾何 | gihyo.jp
  • ビット演算関連 - 簡潔なQ

    フラグとして使ったりするときに必須なやつ。 &で論理積 |で論理和 ^で排他的論理和 ~でビット反転 a|=bでフラグを立てる。 a&=~bでフラグを折る。 a^=bでフラグを反転。 シフト <<で左シフト。0で埋められる。 >>で右シフト。算術シフトか論理シフトかは決まってないらしい。 算術シフト:最上位ビットはシフト前のが継承されるので、負数も2でわった感じになる。 論理シフト:最上位ビットは0になる。 ちなみに手元のLinux(GCC4.3.4,x86)で試したら、signedは算術、unsignedは論理だった。まあさすがにunsignedが論理シフトは仮定していいと思うんだけどどうなんだろう。 ちなみに有名な話だが、シフトの性質上、算術右シフトは端数を負の無限大方向に切り捨てる。除算だと0方向に切り捨てる場合が結構あって、実際C99ではそういう仕様っぽいので、そこを区別する

    ビット演算関連 - 簡潔なQ
  • エッシャーっぽい絵を生成する「エッシャーくん」を作ってみた。

    エッシャーっていう画家は知っていますか?分かんない人のために説明しますと、こんな感じのふしぎーな絵を書いている人です。名前は知らなくても一度は見たことがあるのではないでしょうか。 それでなんですが、適当な画像からなんかエッシャーっぽいふしぎな画像を生成するフィルタ「エッシャーくん(仮称)」をPython Imaging Library(PIL)で作ってみました。これを使えばどんな画像もエッシャーっぽい世界にご招待です。ソースは近々公開します。 追記(09/24) ソースコードをアップロードしました。subversionで管理されてますので、 svn checkout http://svn.coderepos.org/share/lang/python/escher Somewhere でチェックアウトしてください。 たとえば、こんな感じのイラストにエッシャーくんを適用させてみると… こんな

    エッシャーっぽい絵を生成する「エッシャーくん」を作ってみた。
    masa0x80
    masa0x80 2009/10/17
    おもろい
  • アルゴリズムの紹介

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