タグ

algorithmとdata structureに関するshiumachiのブックマーク (10)

  • Data Structure Visualization

    Currently, we have visualizations for the following data structures and algorithms: Basics Stack: Array Implementation Stack: Linked List Implementation Queues: Array Implementation Queues: Linked List Implementation Lists: Array Implementation (available in java version) Lists: Linked List Implementation (available in java version) Recursion Factorial Reversing a String N-Queens Problem Indexing

  • Python dictionary implementation – Laurent Luce's Blog

    This post describes how dictionaries are implemented in the Python language. Dictionaries are indexed by keys and they can be seen as associative arrays. Let’s add 3 key/value pairs to a dictionary: >>> d = {'a': 1, 'b': 2} >>> d['c'] = 3 >>> d {'a': 1, 'b': 2, 'c': 3} The values can be accessed this way: >>> d['a'] 1 >>> d['b'] 2 >>> d['c'] 3 >>> d['d'] Traceback (most recent call last): File "<s

    shiumachi
    shiumachi 2011/02/10
    Pythonにおける辞書の実装について書かれている。PythonというよりC言語の話
  • Data Structures Cheat Sheet | PDF | Applied Mathematics | Algorithms And Data Structures

  • 両端キュー - Wikipedia

    両端キュー(りょうたんキュー、英: double-ended queue)またはデック(英: deque)は、計算機科学における抽象データ型の1つで、先頭または末尾で要素を追加・削除できるキューである[1]。head-tail linked list とも。 deque を dequeue と書く場合もある。ただし、dequeue はキューから要素を取り出す操作(デキュー)も表すため、技術的な文書では避けるのが一般的である。 それでも、一部のライブラリや、アルフレッド・エイホ、ジョン・ホップクロフト、ジェフリー・ウルマンの書いた教科書 Data Structures and Algorithms でも dequeue という用語を使っている。 また、DEQ や DQ という記法もある。 両端キューはキューやFIFOとは異なる。キューやFIFOでは一方の端からのみ要素を追加し、もう一方の端か

    shiumachi
    shiumachi 2010/12/21
    "deque を dequeue と書く場合もあるが、dequeue はキューから要素を取り出す操作(デキュー)も表すため、技術的な文書では避けるのが一般的である"
  • MurmurHash - Wikipedia

    MurmurHash is a non-cryptographic hash function suitable for general hash-based lookup.[1][2][3] It was created by Austin Appleby in 2008[4] and, as of 8 January 2016,[5] is hosted on GitHub along with its test suite named SMHasher. It also exists in a number of variants,[6] all of which have been released into the public domain. The name comes from two basic operations, multiply (MU) and rotate (

    shiumachi
    shiumachi 2010/06/07
    "a non-cryptographic hash function suitable for general hash-based lookup"hadoopのハッシュのデフォルト値
  • ゲーム木 - Wikipedia

    ゲーム木(ゲームき、英: game tree)は、組合せゲーム理論において、ゲームの盤面を有向グラフのノードで、手をエッジで表したものである。完全ゲーム木とは、ゲームの最初から指せる全ての手を含んだゲーム木である。なお、組合せゲーム理論ではない通常のゲーム理論の「ゲームの木」については展開型ゲームを参照。 三目並べの最初の2手のゲーム木 右図は、三目並べのゲーム木の最初の2レベル(あるいは2手)までを示したものである。ここでは、盤面を回転させたり反転させて同じになるものは等価としているため、最初の1手は3種類(中心、角、角と角の間)しかない。2手目は、1手目が中心の場合は2種類、そうでない場合は5種類ある。 完全ゲーム木の葉ノードの数をゲーム木複雑性(game-tree complexity)と呼び、そのゲームが最終的にどれだけの異なる盤面で終わるかを示している。三目並べのゲーム木複雑性は

    ゲーム木 - Wikipedia
    shiumachi
    shiumachi 2010/05/13
    "ゲームの盤面を有向グラフのノードで表し、手をエッジで表したもの"
  • Topcoder

    Topcoder is a crowdsourcing marketplace that connects businesses with hard-to-find expertise. The Topcoder Community includes more than one million of the world’s top designers, developers, data scientists, and algorithmists. Global enterprises and startups alike use Topcoder to accelerate innovation, solve challenging problems, and tap into specialized skills on demand.

    Topcoder
    shiumachi
    shiumachi 2010/05/10
    基本的なデータ構造についての説明と、そのデータ構造を使って解けるTopCoderの過去問の紹介がある
  • kd木 - Wikipedia

    3次元のkd木。根セル(白)をまず2つの部分セルに分割(赤)し、それぞれをさらに2つに分割(緑)している。最後に4つのセルそれぞれを2つに分割(青)している。それ以上の分割はされていないので、最終的にできた8つのセルを葉セルと呼ぶ。黄色の球は木の頂点を表している。 kd木(英: kd-tree, k-dimensional tree)は、k次元のユークリッド空間にある点を分類する空間分割データ構造である。kd木は、多次元探索鍵を使った探索(例えば、範囲探索や最近傍探索)などの用途に使われるデータ構造である。kd木はBSP木の特殊ケースである。 kd木は、座標軸の1つに垂直な平面だけを使って分割を行う。BSP木では分割平面の角度は任意である。さらに一般的には、kd木の根ノードから葉ノードまでの各ノードには1つの点が格納される[1]。この点もBSP木とは異なり、BSP木では葉ノードのみが点(ま

    kd木 - Wikipedia
    shiumachi
    shiumachi 2010/01/05
    "k次元のユークリッド空間にある点を分類する空間分割データ構造である。kd木は、多次元探索鍵を使った探索(例えば、範囲探索や最近傍探索)などの用途に使われるデータ構造である。kd木はBSP木の特殊ケースである"
  • バイナリ空間分割 - Wikipedia

    バイナリ空間分割(バイナリくうかんぶんかつ、英: binary space partitioning、BSP)は、(N次元)空間の((N-1)次元)超平面での分割を再帰的に繰返し、何らかの目的に適したデータ構造を構築する手法である。3次元コンピュータグラフィックスへの応用では、シーンをBSP木(BSP tree)と呼ばれる木構造による表現に変換する。 元々は、画家のアルゴリズムのために、シーンを前処理しておくことで効率を向上させる手段として提案されたものである。つまり、あらかじめシーン中に存在する全てのポリゴンについて、ある1枚のポリゴンを「根」として、残りのポリゴンについて、そのポリゴンより表側にあるか、裏側にあるかという分類を再帰的に適用して、2分木に構成してしまえば(両側にまたがっている場合には分割してしまう)、描画する時には、画家のアルゴリズムであれば、各ポリゴンについてカメラ(視

    バイナリ空間分割 - Wikipedia
    shiumachi
    shiumachi 2010/01/05
    "空間を超平面で凸集合に再帰的に分割していく手法である。その分割により、シーンをBSP木(BSP tree)と飛ばれる木構造で表現できるようになる"
  • ブルームフィルタ - Wikipedia

    この項目では、確率的データ構造について説明しています。画像にぼかし効果を付加する画像フィルタについては「川瀬のブルームフィルター」をご覧ください。 ブルームフィルタ(英語: Bloom filter)は、1970年に Burton H. Bloom が考案した空間効率の良い確率的データ構造であり、あるデータが集合の要素である(集合に含まれている)かどうかの判定に使われる。ただし判定は正確ではなくて、含まれていないのに含まれていると誤って判定すること偽陽性(false positive)の可能性がある。しかし含まれているものを含まれていないと誤判定すること偽陰性(false negative)はない。なお集合に要素を追加することはできるが、集合から要素を削除することはできない(ただし、拡張をした counting filter であれば削除もできる)。集合に要素を追加していくにつれて偽陽性の

    ブルームフィルタ - Wikipedia
    shiumachi
    shiumachi 2008/08/25
    "空間効率の良い確率的データ構造であり、要素が集合のメンバーであるかどうかのテストに使われる。偽陽性による誤検出はあるが、偽陰性はない。追加はできるが、削除はできない"
  • 1