タグ

algorithmに関するhotokuのブックマーク (6)

  • The Two Egg Problem

    There痴 an interesting mind-teaser/puzzle that floats around the internet in waves. Sometimes it痴 described as a Google interview question; sometimes it痴 described as a Microsoft interview question. No matter of the origin, it痴 a fun little critical thinking puzzle and in this blog posting I知 going to look into it and take it a little further … You are given two eggs, and access to a 100-storey bui

  • std::next_permutation Implementation Explanation

  • Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ

    Competitive Programming Advent Calendar 2014 7日目です。 今回は古典的なデータ構造をRubyで実装してみます。 まず通常の木、二分木からはじめ、その次に二分探索木、そして二分探索木に少し機能を加え高性能にした平衡二分探索木を扱います。 冒険の地図 木 二分木 二分探索木 平衡二分探索木 ランダム挿入二分探索木 Treap 基 木(Tree) 以下の図は木の例です。一番上にある頂点(丸)を根と呼びます。各頂点に直接ぶら下がっている頂点たちをまとめて子と呼びます。子を持たない頂点を葉と呼びます。 頂点同士は辺(棒)で結ばれています。木には、辺によってループができないという特徴があります。 木の性質 木には素晴らしい性質があります。各頂点の子を根と考える(上の部分は無視する)と、それぞれの子も木になっているという点です。それらの木のことを部分木と呼

    Rubyで実装して楽しむ古典データ構造再入門(平衡木編) - hama_duのブログ
  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • Finding the top K items in a list efficiently

    I know how to make and sell software online, and I can share my tips with you. Email | Twitter | LinkedIn | Comics | All articles Algorithms will always matter. Sure, processor speeds are still increasing. But the problems that we want to solve using those processors are increasing in size faster. People who are dealing with social network graphs, or analyzing twitter posts, or searching images, o

  • フロイドの循環検出法 - Wikipedia

    フロイドの循環検出法(英: Floyd's cycle-finding algorithm)とは、任意の数列に出現する循環を検出するアルゴリズムである。任意の数列とは、例えば擬似乱数列などであるが、単方向連結リストとみなせる構造のようなもののループ検出にも適用できる。ロバート・フロイドが1967年に発明した[1]。「速く動く」と「遅く動く」という2種類のインデックス(ポインタ)を使うことから、ウサギとカメのアルゴリズムといった愛称もある。 グラフの最短経路問題を解くワーシャル–フロイド法とは(同じ発案者に由来するので同じ名前がある、という点以外は)無関係である。 アルゴリズム[編集] 単方向連結リストのループ検出なども典型的なのであるが、形式的(フォーマル)な説明には数列のほうが向いているのでここでは擬似乱数列生成器の例で説明する。ポラード・ロー素因数分解法などで擬似乱数列生成器の分析が重

    フロイドの循環検出法 - Wikipedia
  • 1