タグ

datastructureに関するoinumeのブックマーク (26)

  • 空間インデックス(R-tree)入門 - たにしきんぐダム

    R-treeとは空間データを効率良く検索するためのインデックス構造。R-tree について調べたのまとめておく。 目次 目次 参考資料 ナイーブな例 R-tree の概要 各ノードの要素数 参照処理 点検索 範囲検索 データの挿入・削除 挿入処理 ノードの分割 Exhaustive Algorithm Quadratic-Cost Algorithm Linear-Cost Algorithm 削除 木の再構築のアルゴリズム 更新処理 まとめ 参考資料 Guttman, Antonin. R-trees: a dynamic index structure for spatial searching. Vol. 14. No. 2. ACM, 1984. MySQL 5.7 Reference Manual - Creating Spatial Indexes PostGIS 2.3.3d

    空間インデックス(R-tree)入門 - たにしきんぐダム
  • B-Tree インデックス - オラクル・Oracleをマスターするための基本と仕組み

    B-Tree インデックス (B-Tree Index) オラクルのインデックス、すなわち、デフォルト時のインデックスは B-Tree インデックス(※1) になる。 B-Tree インデックスとはバランスド・ツリーインデックスの略である(1969 年頃に既に考案されている)。プログラミングを始めたときにソートアルゴリズムやデータ構造で勉強したであろうと思う二分木 (Binary-Tree) の進化版みたいなものである。 一部のブランチが異常に成長しないように平衡を保つように再編成(バランス)する仕組みによって、常にインデックスによる検索性能を高い状態に保つことができる(※2)。 RDBMS によっては色々な種類のインデックスが存在しているが、現在においても B-Tree インデックスが多くのケースで優れたパフォーマンスを出していることには変わりないようである。 (※1) B-Tree に

  • 4-bit PQの解説

    はじめに 4-bit Product Quantization (4-bit PQ)は、2021年現在最も高速な近似最近傍探索アルゴリズムの1つです。 この度、Fixstars社と共同で、faissライブラリにおける4-bit PQのARM上での高速実装を達成し、faiss家にマージされました。 記事では、4-bit PQについて解説します。 関連issue。マージされたPR。faiss 1.7.1以降で使えます。 Fixstars社の今泉さんによる、ARM実装の技術詳細。ARMに関する詳細はこちらをご覧ください。記事では4-bit PQアルゴリズムそのものについて解説します。 4-bit PQは、PQという手法を近似し、SIMDレジスタによる恩恵を最大限に受けられるようにした方式です。以下では簡単のためVector Quantization (VQ)を対象とした、4-bit VQに

  • ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium

    的なデータ構造であるヒープについて、概要、計算量と実装、そして最もシンプルな応用であるヒープソートを紹介します。MITが講義や資料を公開しているMIT OpenCourseWareのアルゴリズムとデータ構造の講義 が非常にわかりやすかったので、その内容に沿ってまとめました。この記事ではHeaps and Heap Sortの内容を以下の順序で解説します。 ヒープの概要ヒープの表現ヒープの構築ヒープの計算量ヒープの実装ヒープソート1. ヒープの概要ヒープ (heap) は優先度付きキュー (priority queue) の実装の1つです。優先度付きキューは集合 (set) を扱うデータ型で、集合に含まれる要素が何らかの優先度 (priority) 順に取り出されるという特徴を持っています。学会のポスター発表を回るときや、旅行先での観光地巡りでは、優先度に基づいて要素を取り出すことが重要

    ヒープについてわかりやすく解説してみた – Yasufumi Taniguchi – Medium
  • Data Structure - HashMap

  • 日本の中心はどの県だ?グラフ理論(ネットワーク)の基本的な諸概念 - アジマティクス

    Q:これは何の構造を表しているでしょう? グラフ理論 上の構造のように、頂点(ノードともいいます)の集まりと、2つの頂点をつなぐ辺(エッジともいいます)の集まりでできたもののことを「グラフ」あるいは「ネットワーク」と呼び*1、このような構造を研究する分野こそが「グラフ理論(Graph theory)」です。今回はそんなグラフを使うと、身近なものの新たな側面が見えてくる話。 (余談ですが「グラフ」という用語は、数学だと関数のグラフとか円グラフみたいなやつもあって検索精度が悪いです。グラフ理論に関してわからないことがあった場合に「グラフ ○○」や「グラフ理論 ○○」とググるよりも、「ネットワーク ○○」とググったほうが得たい情報にリーチしやすいというライフハックが知られています) さて、冒頭のグラフです。グラフ理論の知識なんかひとつもなくても、このグラフから読み取れることはいくつもあります。例

    日本の中心はどの県だ?グラフ理論(ネットワーク)の基本的な諸概念 - アジマティクス
  • DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】 - Qiita

    0. はじめに --- グラフ探索の動機 現代ではコンピュータはとても身近なものになりました。コンピュータの用途としては シミュレーションなどの大規模計算を行う 人工知能をつくる アプリを開発する などなど多様なものが考えられますが、「探索」もまた、コンピュータを用いるモチベーションとして、最も基的かつ重要なものの一つだと思います。探索とは、与えられた対象の中から、目的に合うものを見つけ出したり、最良のものを見つけ出したり、条件を満たすものを列挙したりする営みです。 世の中における様々な問題は、探索によって、考えられる場合を調べ尽くすことによって原理的には解決できるものが多いです。例えば、現在地から目的地まで最速でたどり着く方法を求める問題は、原理的には、現在地から目的地へ到達する経路をすべて列挙することで解決できます1。将棋やオセロの必勝法を求める問題は、原理的には、考えられる局面と

    DFS (深さ優先探索) 超入門! 〜 グラフ・アルゴリズムの世界への入口 〜【前編】 - Qiita
  • Microsoft PowerPoint - ad09-09.ppt

    アルゴリズムと データ構造 6.2.1節:最小木 2.5節:集合族の併合 塩浦昭義 情報科学研究科 准教授 shioura@dais.is.tohoku.ac.jp 今日の講義の概要  グラフのデータ構造  最小木問題  最小木を求める2つのアルゴリズム  クラスカルのアルゴリズム  アルゴリズムの計算時間の解析  集合族の併合のためのデータ構造  無向グラフ G=(V, E)  頂点集合 V  頂点の対を表す枝の集合 E  e=(u,v) 頂点 u, v は枝 e の端点 無向グラフと有向グラフ 2 3 0 1 4 a c f e d b 2 3 0 1 4 a c f e d b  有向グラフ G=(V, E)  頂点集合 V  頂点の順序対を表す枝の集合 E  e=(u,v)頂点uは枝eの始点 頂点vは枝eの終点  グラフ G=(V, E) を表現す

  • アルゴリズムとデータ構造

    アルゴリズムとデータ構造 第11回 グラフの探索 アルゴリズムとデータ構造#11 1 今日の内容 2 ◼ グラフ ◼ なんでグラフ? ◼ グラフの数学的な定義 ◼ ネットワーク(重み付きグラフ)の定義 ◼ グラフデータの取り扱い方 ◼ 隣接行列による表現 ◼ 隣接リストによる表現 ◼ グラフの探索の仕方 ◼ 幅優先探索 ◼ 深さ優先探索 アルゴリズムとデータ構造#11 ケーニヒスベルクの橋 ◼ ケーニヒスベルクという街には プレーゲル川が流れ、 7つの橋が架かっていた ◼ Q: 7つすべての橋を、それぞれちょうど 1 回ずつ渡って歩く コースって、ある ? オイラー (Euler) 18世紀の数学者。天文学者や物理学者などでもある。 解析学、整数論、トポロジー、グラフ理論などに大きな足跡を残した。 A: ない。 その理由は … 図は、http://Wikipedia.org より ケーニヒ

  • GitHub - shomali11/go-interview: Collection of Technical Interview Questions solved with Go

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - shomali11/go-interview: Collection of Technical Interview Questions solved with Go
  • Goで実装するBtree[挿入・探索編] - Qiita

    実装内容はgoogle/btreeを大いに参考にしています。 今回実装する内容としては、 1. B-treeの体 2. 探索 3. 挿入 の順番で実装していきます。 B-treeの体 B-treeには大きく分けて、比較可能なアイテムと、アイテムが所属するノードに分けられます。ノードは、その子にあたるノード群をもちます。 また、B-treeの起点になるノードを特別なノードとしてルートノードとします。それらを実装していきます。 package tree // Item - ノードに属するアイテム type Item struct { Value int Object interface{} } // Items - アイテムのリスト type Items []*Item func (i *Item) Less(item *Item) bool { return i.Value < item

    Goで実装するBtree[挿入・探索編] - Qiita
  • なぜBTreeがIndexに使われているのか - maru source

    ※この内容は個人的な考察なので、間違っている箇所もあると思います。そういう部分を見つけた際はぜひ教えて下さい。 RDBMSの検索を早くするためにIndexって使いますよね。例えばこんなテーブル CREATE TABLE user ( id INT UNSIGNED NOT NULL, name VARCHAR(255) NOT NULL, UNIQUE INDEX (id) ); idカラムにIndexを張っています。これはidでの検索を高速にするためです。ここでidカラムにIndexが貼っていない場合と比べると検索時間が大幅に変わってきてしまいます(特にレコードが多くなった時) ではなぜIndexを貼ると検索が早くなるんでしょう?? Indexとはその名の通り索引を意味します。特定のカラムの索引を作成しておくことで検索を高速化します。 (の最後によみがな順で単語が並べられたりしています

    なぜBTreeがIndexに使われているのか - maru source
  • 第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree | gihyo.jp

    SQLアタマアカデミー 第7回性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree はじめに データベースを扱う仕事をしていると、パフォーマンスの問題に悩まされることは日常茶飯事です。とくに最近は、データベースに格納されるデータ量が飛躍的に増え、サーバのCPUやメモリといったハード面の増強だけでは追いつかないことも多くあります。 そのようなケースに対応するため、DBMSは性能改善のための手段を多く用意しています。その中で最もコストパフォーマンスの良い方法が、インデックス(索引)です。アプリケーションにもハード構成にも影響を与えずに実行でき、うまくいかなければすぐに削除できるという手軽さが大きな魅力で、効果はしばしば絶大です。 インデックスにはいろいろな種類があり、またDBMSによってもサポートする種類に差がありますが、稿では最も重要な2つを取り上げます。それ

    第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree | gihyo.jp
  • Depth First Search or DFS for a Graph - GeeksforGeeks

    oinume
    oinume 2019/05/27
    Depth First Search
  • グラフ探索アルゴリズム とその応用

    グラフ探索アルゴリズム とその応用 2011 / 05 / 04 保坂和宏 内容 • グラフの扱い方 • 深さ優先探索 (DFS) – 橋,関節点 • 幅優先探索 (BFS) – Dijkstra 法, 0-1-BFS • 辞書順幅優先探索 (LexBFS) – cograph グラフ • グラフ理論からの出題 – Islands (IOI 2008) – Regions (IOI 2009) – Saveit (IOI 2010) – Regions (JOI 2010 春合宿) – Finals (JOI 2010 春合宿) – Joitter (JOI 2011 選考会) – Shiritori (JOI 2011 選考会) – Report (JOI 2011 選考会) – Orienteering (JOI 2011 選考会) グラフ • グラフとは? – 「点が線で繋がった構造

  • NetworkXメモ(有向グラフ) - Qiita

    概要 最近研究でNetworkXを使い出したので自分用のメモとしてよく使いそうなモジュールを書いていきます. Pythonを使い出して間もないので,スマートに書けてないと思います.あと言葉使いが間違ってる部分があるかもしれない(メソッドとかパッケージとか). NetworkXパッケージの導入はpipでできます.pip install networkxでOKです. Reference : http://networkx.readthedocs.io/en/stable/ NetworkXパッケージのインポート まずNetworkXパッケージをインポートします.NetworkXのドキュメントではnxとして短縮名をつけています.

    NetworkXメモ(有向グラフ) - Qiita
  • Algorithms with Python / 集合, グラフ, 経路の探索

    簡単な例を示しましょう。a = Set([1, 2, 3, 4, 5]), b = Set([4, 5, 6, 7]), c = Set([6, 7]) とします。 a.issubset(b) => False c.issubset(b) => True a.union(b) => Set([1, 2, 3, 4, 5, 6, 7]) a.union(c) => Set([1, 2, 3, 4, 5, 6, 7]) a.intersection(b) => Set([4, 5]) a.intersection(c) => Set([]) a.difference(b) => Set([1, 2, 3]) a.difference(c) => Set([1, 2, 3, 4, 5]) ●プログラムの作成 それではプログラムを作りましょう。最初にクラスを定義します。 リスト : クラスの定義

  • RDBMSで使われるB木を学ぼう (1/3)- @IT

    第5回 RDBMSで使われるB木を学ぼう はやしつとむ アナハイムテクノロジー株式会社 2009/6/22 オブジェクト指向によって、アルゴリズムは隠ぺいされていることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるだろうか(編集部) 第3回「AVL木で木構造を学ぼう」、第4回「もっとAVL木で木構造を学ぼう」と2回連続でAVL木について解説しました。 今回はAの後だからBというわけではありませんが、B木(B-Tree)を取り上げます。 B木の変種であるB+木やB*木は、OracleやPostgreSQL、Firebirdなどのリレーショナルデータベースでインデックスとして利用されている、メジャーな木構造です。 筆者はDelphi 2009でサンプルプログラムを作成していますが、Delphiをお持ちでない方は下記のURLからTurboDelphiをダウンロードして

    oinume
    oinume 2019/02/18
    説明はわかりやすいが実装がDelphi...
  • B-tree set

  • Introduction of B-Tree - GeeksforGeeks

    CoursesDSA to DevelopmentFor Working ProfessionalsData Structure & Algorithm Classes (Live)System Design (Live)JAVA Backend Development(Live)DevOps(Live)Data Structures & Algorithms in PythonFor StudentsInterview Preparation CourseGATE CS & IT 2024Data Science (Live)Data Structure & Algorithm-Self Paced(C++/JAVA)Master Competitive Programming(Live)Full Stack Development with React & Node JS(Live)F

    Introduction of B-Tree - GeeksforGeeks