タグ

algorithmとsourceに関するurza358のブックマーク (6)

  • Spaghetti Source - 領域探索 (kd 木)

    説明 点の集合が与えられる.領域が与えられたとき,その領域に含まれる点をすべて報告せよ.という問題を領域探索問題という.これは点位置決定問題の双対問題である.幾何学的な問題だけでなく「年齢 20~30 歳,年収 500~1000 万の人をすべて探せ」などのデータベース問い合わせもこの問題に帰着する. この問題を解くために使える構造が kd 木である.これは一次元における二分探索木の拡張であって,探索木の各段階で x における比較,y における比較を切り替えるものである.点が一様に散らばっている場合,二分探索木と同様に平均計算量 O(log n) となる. 以下では問い合わせ領域は直交領域,すなわち x 軸と y 軸に平行な辺をもつ長方形に限っている.しかしどんな形状の領域でも,bounding box をとるなどしてそれが半平面のどちらに位置するかを高速に判定できれば問い合わせ可能である.

  • ALGORITHM NOTE グラフ 最短経路

    All Pairs Shortest Path (APSP) problem (全対最短経路問題) は、グラフ G(V, E) に対して、G に含まれるノードの全てのペアの最短経路(距離)を求める問題です。G に負の重みのあるエッジがなければ、この問題は各ノードを起点として Dijkstra's Algorithm を |V| 回行うことによって解くことができます。この方法のオーダーは O(|V|3) または O(|V|(|E| + |V|)log|V|) となります。 Floyd's algorithm は APSP 問題を O(|V|3) で解くことができます。しかも Floyd's algorithm は、G に負の閉路がない限り、G に負の重みを持つエッジが存在しても正しく動作します。負の閉路とは、その閉路を成すエッジの重みの合計が負となっている閉路です(負の閉路をもつとき G に

  • 経路探索アルゴリズムの「ダイクストラ法」と「A*」をビジュアライズしてみた - てっく煮ブログ

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

  • 類似画像検索システムを作ろう - 人工知能に関する断創録

    C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。 指定した画像と類似した画像を検索するシステムは類似画像検索システムと言います。GoogleYahoo!のイメージ検索は、クエリにキーワードを入れてキーワードに関連した画像を検索しますが、類似画像検索ではクエリに画像を与えるのが特徴的です。この分野は、Content-Based Image Retrieval (CBIR)と呼ばれており、最新のサーベイ論文(Datta,2008)を読むと1990年代前半とけっこう昔から研究されてます。 最新の手法では、色、形状、テクスチャ、特徴点などさまざまな特徴量を用いて類似度を判定するそうですが、今回は、もっとも簡単な「色」を用いた類似画像検索を実験してみます

    類似画像検索システムを作ろう - 人工知能に関する断創録
  • 探索アルゴリズム:フリーセル解決プログラムにおける手順探索

    フリーセル解決手順のプログラムによる探索実行結果 フリーセル百万種類のゲーム全てに対してサンプルプログラムを実行したところ、おそらく勝てないと言われている 11982、146692、186216、455889、495505、512118、517776、781948 以外のゲームでは勝つことができました。 百万種類のゲームの中で 57148、563096 の二つはコンピュータにとって勝つのが難しい性質を持っています。非常に長い堂々巡りの手順が現れ、およそ四百万局面ぐらいの同一局面判定ができなければ勝てません。また最初の一枚をホームセルへ置くまでの手数が長いので、先読みを長くしなければ勝ち手順を見つけることができないのです。この二つのゲームに勝つために、最大手数を 8,192 (freecell.h : MAX_SEARCH_DEPTH)、同一局面判定上限を 4,194,304 局面 (mov

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 1