タグ

Algorithmに関するrokujyouhitomaのブックマーク (49)

  • ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 今回はソートについて記します。 0. はじめに データ構造とアルゴリズムを学ぶと一番最初に「線形探索」や「ソート」が出て来ます。これらのテーマは応用情報技術者試験などでも頻出のテーマであり、アルゴリズムの Hello World とも呼ぶべきものです。 特にソートは、 計算量の改善 ($O(n^2)$ から $O(n\log{n})$ へ) 分割統治法 ヒープ、バケットなどのデータ構造 乱択アルゴリズムの思想 といった様々なアルゴリズム技法を学ぶことができるため、大学の授業でも、アルゴリズム関連の入門書籍でも、何種類ものソートアルゴリズムが詳細に解説される傾向にあります。記事でも、様々なソートアルゴリズムを一通り解説してみました。 しかしながら様々な種類のソートを勉強するのもよいが、「ソートの使い方」や

    ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita
  • Fowler–Noll–Vo hash function - Wikipedia

    Fowler–Noll–Vo (or FNV) is a non-cryptographic hash function created by Glenn Fowler, Landon Curt Noll, and Kiem-Phong Vo. The basis of the FNV hash algorithm was taken from an idea sent as reviewer comments to the IEEE POSIX P1003.2 committee by Glenn Fowler and Phong Vo in 1991. In a subsequent ballot round, Landon Curt Noll improved on their algorithm. In an email message to Noll, they named it

  • 機械学習アルゴリズムの絵本

    機械学習のアルゴリズムの中には�名前のついていない「素朴な方法」がある。 複数の方法を組み合わせて使っている場合に�素朴な方法を無視して混乱が生まれる。 そこで素朴な方法にライトを当てて、�各種アルゴリズムを図解することで�「あー、こういう組み合わせで動いてんだ」�とわかってもらう。 Read less

    機械学習アルゴリズムの絵本
  • AVL木 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "AVL木" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2015年10月) AVL木の例 AVL木(えーぶいえるき、AVL tree、Adelson-Velskii and Landis' tree)とは、コンピュータサイエンスにおいて、「どのノードの左右部分木の高さの差も1以下」という条件を満たす二分探索木のことである。 平衡二分探索木の1つで、木に対する操作によって条件を満たさないノードが発生しても、回転と呼ばれる操作を行うだけで木をAVL木に再構成でき、平衡を維持できる。 AVL木は最初に考案された平衡二分探索木であり、その名

    AVL木 - Wikipedia
  • Simple bijective function (base(n) encode/decode) in Python

  • http://dqmsl.co/archives/1001584183.html

    rokujyouhitoma
    rokujyouhitoma 2014/04/12
    今度実装する
  • ゲームAI連続セミナー「ゲームAIを読み解く」全講演資料(2009年11月改訂版)

    「y_miyakeのゲームAI千夜一夜」(IGDA日)続編です。各記事は個人的な意見で、IGDA 日、所属する団体とは関連ないです。ゲームAI関連資料はこちらです。 http://blogai.igda.jp/article/66585525.html IGDA日では2006年12月から2007年12月にかけて、 長久さんと三宅とスタッフのメンバーで「ゲームAI連続セミナー」を実施しました。 参加して頂いた方を中心に「ゲームAIメイリングリスト」が形成され、 現在まで1000号を越える投稿が為されています。 資料は一度全公開しているのですが、旧サイトのクラッシュに伴い、 ダウンロード出来なくなっていました。 ゲームAI連続セミナーの資料の一部と、他の三宅の講演資料を ブログにアップして補完して、全資料をダウンロードできるようにしました。 ゲームAIの学習、研究、調査、応用実装にご活用

    ゲームAI連続セミナー「ゲームAIを読み解く」全講演資料(2009年11月改訂版)
  • モバイルゲームの歴史を年代別にご紹介します。モバイルゲームの成長と今後について詳しく解説していきます。

    モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲーム歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS

  • すごく簡単なアルゴリズムがphpで書けなくてつらい - Qiita

    ある条件でソートされているIDのリストを与えられて、なんとなく近い範囲でマッチングさせたいという要件があった。配列からの任意の要素の取り出しは O(n) だけど、末尾や末尾から固定した範囲の要素に限って言えば O(1) なので、後ろの方からマッチングさせながら要素を取り出していけば O(n) でマッチングできるはず。 なんにも難しいことは無い話で、 Python で書けばこうなる。 list.pop() が末尾からのインデックス (-1 が最後の要素を表す) を許すのが地味に便利だ。 # coding: utf-8 def match(seq, r=100): from random import randint # 奇数個の時に先頭周辺の要素がボッチになるのが嫌なら、先に後ろの方の # 要素を取り除いて偶数にしておくこと. while len(seq) >= 2: # 引数を省略すると末

    すごく簡単なアルゴリズムがphpで書けなくてつらい - Qiita
  • Code Project

  • A* search algorithm - Wikipedia

    A* (pronounced "A-star") is a graph traversal and pathfinding algorithm that is used in many fields of computer science due to its completeness, optimality, and optimal efficiency.[1] Given a weighted graph, a source node and a goal node, the algorithm finds the shortest path (with respect to the given weights) from source to goal. One major practical drawback is its space complexity where d is th

    A* search algorithm - Wikipedia
  • A* - Wikipedia

    A*探索アルゴリズム A*(A-star、エースター)探索アルゴリズム(エースターたんさくアルゴリズム)は、グラフ探索アルゴリズムの一つ。 最良優先探索を拡張したZ*に、さらにf値として「現時点までの距離」g と「ゴールまでの推定値」h の和を採用したもの[1]。h はヒューリスティック関数と呼ばれる。 A* アルゴリズムは、「グラフ上でスタートからゴールまでの道を見つける」というグラフ探索問題において、ヒューリスティック関数 h(n) という探索の道標となる関数を用いて探索を行うアルゴリズムである。h は各頂点 n からゴールまでの距離のある妥当な推定値を返す関数で、解くグラフ探索問題の種類に応じてさまざまな h を設計することが出来る。例えば、カーナビなどで用いられる単純な二次元の地図での探索では、h としてユークリッド距離 を使うことができ、この値は道に沿った実際の距離のおおまかな予

    A* - Wikipedia
  • A*

    A* 文章:syun 日付:2005/9/10 目次 1.はじめに 2.地形に情報を持たせる 3.流れ 1.はじめに ここではA*アルゴリズムによる経路探索を解説します。 A*を使うと何が嬉しいのかというと、 上のように、開始点と終了点の間に障害物が存在する場合でも、 最も効率の良い経路が探索できるからです。 これに対して、例えばブレゼンハムの線分描画アルゴリズムでは、 障害物があった場合に、障害物に引っかかって動かなくなってしまいます。 逆に欠点としてA*アルゴリズムは、比較的効率の良い探索を行いますが、 やや重い処理となってしまうことです。 なので障害物がない場合には、 ブレゼンハムの線分描画アルゴリズムを用いた方が、 処理は速くなります。 2.入力と出力 A*は地形に以下の情報を持たせます。 ステータス(None→Open→Closed) 移動コスト ヒューリスティック(推定)コスト

  • ブレゼンハムのアルゴリズム - Wikipedia

    ブレゼンハムのアルゴリズム(Bresenham's line algorithm)は、与えられた始点と終点の間に連続した点を置き、近似的な直線を引くためのアルゴリズム。ブレゼンハムの線分描画アルゴリズム、ブレゼンハムアルゴリズムとも。コンピュータのディスプレイに直線を描画するのによく使われ、整数の加減算とビットシフトのみで実装できるので多くのコンピュータで使用可能である。コンピュータグラフィックスの分野の最初期のアルゴリズムの1つである。これを若干拡張すると、円を描くことができる。 アンチエイリアスをサポートした直線描画アルゴリズム(例えば、Xiaolin Wu's line algorithm)もあるが、ブレゼンハムのアルゴリズムの高速性と単純さは今も重要である。プロッターやビデオカードのGPUといったハードウェアで使用されている。ソフトウェアでは多くのグラフィックスライブラリ(英語版)

    ブレゼンハムのアルゴリズム - Wikipedia
  • Quick-sort with Hungarian (Küküllőmenti legényes) folk dance

    Created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania. Directed by Kátai Zoltán and Tóth László. In cooperation with "Maros Művészegyüttes", Tirgu Mures (Marosvásárhely), Romania. Choreographer: Füzesi Albert. Video: Lőrinc Lajos, Körmöcki Zoltán. Supported by "Szülőföld Alap", MITIS (NGO) and evoline company. Click the link below to watch this visualization included in the

    Quick-sort with Hungarian (Küküllőmenti legényes) folk dance
  • 類似度と距離 - CatTail Wiki*

    2つのデータが似ている度合いを,類似度の大きさや距離の近さといった数値にしてあらわすことで,クラスタ分析や,k-近傍法,多次元尺度構成法(MDS)をはじめとするいろいろな分析を行うことが可能となる. ここでは,よく知られている類似度や距離について述べる. 類似度という概念は,2つの集合の要素がまさにどれだけ似ているかを数量化したものであり,距離とは,要素同士の離れ具合,従って非類似度とちかい概念と考えてもよい. 参考までに数学における距離の概念の定義を示すと, 距離空間の定義 Sを1つの空でない集合とし,dをSで定義された2変数の実数値関数 d(SxS) → R が,以下の4条件(距離の公理) D1 : (非負性) 任意のx,y∈Sに対して d(x,y)≧0. D2 : (非退化性) x,y∈Sに対し d(x,y)=0  ⇔ x=y. D3 : (対称性) 任意のx,y∈Sに対して d(x

    類似度と距離 - CatTail Wiki*
  • 村上・泉田研究室 遺伝的アルゴリズム

    遺伝的アルゴリズムとは、生物の進化の過程を真似て作られたアルゴリズムで、確率的探索(サンプル店を評価しながら探索する方法)、学習、最適化の一手法です。 この遺伝的アルゴリズムの最大の特徴としては、解空間構造が不明であり、決定的な優れた解法が発見されておらず、また、全探索が不可能と考えられるほど広大な解空間を持つ問題に有効であることが挙げられます。 その遺伝的アルゴリズムの基を構成している重要な処理プロセスは、以下の3つになります。 ●選択 (selection) ●交叉 (crossover) ●突然変異 (mutation) そして、これらを繰り返し行うことで、人工的な進化を行い、最適解を発見していくのです。 このページでは、遺伝的アルゴリズムが一体どのようなものなのか、そして実際どのように使うのかについて、ご紹介していきます。

  • アルゴリズム - Wikipedia

    アルゴリズム(英: algorithm[注 1])とは、解が定まっている「計算可能」問題に対して、その解を正しく求める手続きをさす[注 2]。算法[1][2]、計算手順[3][4]、処理手順[5]とも和訳される。「ヒューリスティック」に対置する概念である[6]。現代的な定義では、ある関数が計算可能ならそれはアルゴリズム的に解ける[7]:393。つまりその関数の値を計算するアルゴリズムが存在する(不完全性定理についてのクルト・ゲーデルの講義に基づく定義)[7]:393。 実用上は、アルゴリズムの実行に要する記憶領域の大きさや完了までに要する時間(空間計算量と時間計算量)が小さいこと、特に問題の規模を大きくした際に必要な記憶領域や計算量が急激に大きくならないことが重要となる。 アルゴリズムの実行は形態によらない。たとえばアルゴリズムはコンピュータ上にコンピュータプログラムとして実装して実行でき

    アルゴリズム - Wikipedia
  • ダイクストラ法 - Wikipedia

    ダイクストラ法の動作のアニメーション ダイクストラ法(だいくすとらほう、英: Dijkstra's algorithm)はグラフ理論における辺の重みが非負数の場合の単一始点最短経路問題を解くための最良優先探索によるアルゴリズムである。 ダイクストラ法は、1959年エドガー・ダイクストラによって考案された。応用範囲は広くOSPFなどのインターネットルーティングプロトコルや、カーナビの経路探索や鉄道の経路案内においても利用されている。 ほかのアルゴリズムとして、 最短経路長の推定値を事前に知っているときは、ダイクストラ法の改良版であるA*アルゴリズムを用いて、より効率的に最短経路を求めることができる。 辺の重みが全て同一の非負数の場合は幅優先探索がより速く、線形時間で最短路を計算可能である。 無向グラフで辺の重みが正整数の場合は、Thorupのアルゴリズムによって線形時間での計算が可能であるが

    ダイクストラ法 - Wikipedia
  • Why is my implementation of the Sieve of Atkin overlooking numbers close to the specified limit?