タグ

algorithmに関するultraistのブックマーク (31)

  • MurmurHash3 - smhasher - MurmurHash3 information and brief performance results - Project Hosting on Google Code

    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

    MurmurHash3 - smhasher - MurmurHash3 information and brief performance results - Project Hosting on Google Code
  • dag_vector: ランダムアクセス可能な圧縮配列 - Preferred Networks Research & Development

    こんにちは、この夏はシルキードライで乗り切りたい岡野原です。 今日は最近公開したC++のオープンソースであるdag vectorについて紹介します。 github: dag_vector ライセンスは修正BSDライセンスです。 dag vector (direct accessible gamma code vector) は値を圧縮して格納したまま任意の場所の値を高速に参照可能な配列ライブラリです。しかもデータ末尾への追記が可能です。 dag vectorはstd::vectorのように利用できます。下にいくつか例を見ていきましょう。 dag_vectorの例 #include "dag_vector.hpp" // dag_vectorは0以上の正整数の配列を扱う配列。 dag_vector dv; // 値はいつでも追加可能。追加された値は圧縮して格納される // 正整数xは2lg(

    dag_vector: ランダムアクセス可能な圧縮配列 - Preferred Networks Research & Development
  • GitHub - iwiwi/parallel-radix-sort: An implementation of optimized parallel radix sort

    概要 OpenMP を用いて並列化した Radix Sort です. また,参考文献の論文で提案されている高速化手法である Buffer based scheme を採用しています. キーのみのソートと,キー・値のペアのソートができます. キーとして,以下の型がとれます. 符号付き整数 (char, short, int, long, long long) 符号なし整数 (上のに unsigned がついたもの) 浮動小数点数 (float, double) 使い方 sample.cc や measure.cc を見ると大体分かると思います. コンパイル時に -fopenmp を付けないと並列化されないので注意してください. 性能 measure.cc で 2 億要素の int 配列のソートの時間を測ります. 実行例: % g++ -O3 measure.cc -fopenmp % ./a

    GitHub - iwiwi/parallel-radix-sort: An implementation of optimized parallel radix sort
    ultraist
    ultraist 2011/04/29
    速い
  • Clever Algorithms: Nature-Inspired Programming Recipes

    Need help getting started with Genetic Algorithms, Neural Networks or Swarm Intelligence? Nature-Inspired Algorithms are Fascinating! But implementing them can be frustrating. The algorithm descriptions are incomplete, inconsistent and distributed across academic papers, websites and code. There are so many algorithms to choose from, it can feel overwhelming. Algorithms Handbook You need a handboo

  • wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development

    こんにちは岡野原です。もう年末になりましたが、私の今年はこれからです。 wat-arrayというC++ライブラリを公開しました。 google code:wat-array wat-arrayはフリーソフトウェアであり、修正BSDライセンスに基づいて利用できます. wat-arrayはwavelet木と呼ばれるデータ構造を利用することにより、配列上の様々な処理を効率的に行うことができるC++ライブラリです。 例えば、 – 任意の連続した範囲内にある最大値 /最小値 / k番目に大きい値, またそれらの出現位置、頻度 – 任意の連続した範囲内にある指定した文字cの出現回数、c未満/より大きい文字の出現回数 – 任意の文字のi番目の出現位置 といったものを求めることが全て範囲長、入力長に対して定数時間で行うことができます。 例えば長さ10億、値の範囲が0から1000万であるような配列A中のA[

    wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development
  • 高速な復元抽出の直感的な説明

    先日@niamさんと@tsubosakaさんのつぶやきを見てて,確率{pi}で復元抽出するWalker's alias methodというものを知りました.たまたま,今日,復元抽出する用事があったので,思い出して調べた次第.私も昔同じことをやろうとして,O(log n)でいけるからまぁいいやと思っていたのですが,このアルゴリズムだとO(1)でいけます. 解説はこのあたりのブログを参照. 比較的高速な復元抽出アルゴリズム高速に非復元抽出をするアルゴリズムはないだろうか?(2)さて,私は理解力が足りなくてこのあたりの説明を読んでもなんでこれでいいのかさっぱりわからなかったので,絵に描いて理解しました.確率{pi}で復元抽出するためには,piに比例した面積の図形を壁に貼ってダーツをすればいいのです.{0.1, 0.05, 0.3, 0.1, 0.45}だったとします.するとこんなの. まさか毎回

    高速な復元抽出の直感的な説明
  • Twitter本文と言及URLの圧縮 - kaisehのブログ

    最近、Twitterのデータを収集しています。APIで取得したtweet文や、そこから抽出したURLを片っ端からDBに保存していくと件数が莫大になるので、ディスクスペースを極力節約したいところですが、個別のtweet文や言及URLは短い文字列なので、普通に1件ずつgzip等で圧縮してもほとんど意味がないか、オーバーヘッドが出て逆効果になってしまいます。 そこで、収集済みのサンプルデータを元にハフマン木を作っておき、それを共通利用してtweetを圧縮してみました。 用意したのは、英語ユーザ/日語ユーザ/韓国語ユーザ各1000人のtweetサンプルをベースにしたハフマン符号と、tweet文から抽出したURL文字列をベースにしたハフマン符号の4種類です。 頻度表は次のようになりました。 char (en) freq (en) char (ja) freq (ja) char (ko) f

    Twitter本文と言及URLの圧縮 - kaisehのブログ
  • vNext Build fails with error message ‘Cannot find solution’ because it does not exist. - MSDN Blog

    Microsoft is holding an AI Agents Hackathon, and we want to see what you can build with Python! We'll have 20+ live streams showing you how to build AI agents with Python using popular agent frameworks and Microsoft technologies. Then, you can submit your project for a chance to win prizes, including a Best in Python prize!

    vNext Build fails with error message ‘Cannot find solution’ because it does not exist. - MSDN Blog
  • 404 Not Found | 理化学研究所

    お探しのページが見つかりませんでした。 誠に恐れ入りますが、お客様がアクセスしようとしたページまたはファイルが見つかりませんでした。 お探しのページは、削除または名前が変更された、もしくは一時的に使用できなくなっている可能性がございます。

  • min_heapを用いた上位r個の要素の抽出 - tsubosakaの日記

    MG勉強会の発表があるため4.6ランキング検索の部分を読むついでに、最後のサブセクションの上位r個の要素を取り出す部分について実装してみた。 情報検索において、N個の候補集合から上位r個の要素を取り出すことが多い。 値が配列に格納されているとするとこれを実現するためのコードはもっとも単純に行うと以下のようになる //長さlenの配列arrayの中でトップr個の値をresultに挿入する void sort_method(int * array , int len, int r , vector<int> & result){ sort(array , array + len); copy(array + len - r , array + len , back_inserter(result)); } しかし、Nが大きいとき、MGの例だとN=100万のときにsortの処理にはおおよそ100

    min_heapを用いた上位r個の要素の抽出 - tsubosakaの日記
  • [プログラミング] ビット並列アルゴリズムを使った編集距離 - tsubosakaの日記

    ふと、ビット並列アルゴリズムを使った編集距離を計算するアルゴリズムを書きたくなったので書いてみた。 まず、通常の編集距離であるLevenshtein Distanceを求めるアルゴリズムは以下のように書ける int levenshteinDistance(String A, String B) { int m = A.length(); int n = B.length(); int dp[] = new int[n + 1]; int next[] = new int[n + 1]; for (int i = 0; i <= n; i++) dp[i] = i; for (int i = 1; i <= m; i++) { next[0] = i; for (int j = 1; j <= n; j++) { if (A.charAt(i - 1) == B.charAt(j - 1))

    [プログラミング] ビット並列アルゴリズムを使った編集距離 - tsubosakaの日記
  • Thin plate spline - Wikipedia

    ultraist
    ultraist 2009/01/03
    TPS transformation
  • munkres

    ultraist
    ultraist 2008/12/28
    Hungarian method
  • Hungarian algorithm - Wikipedia

    The Hungarian method is a combinatorial optimization algorithm that solves the assignment problem in polynomial time and which anticipated later primal–dual methods. It was developed and published in 1955 by Harold Kuhn, who gave it the name "Hungarian method" because the algorithm was largely based on the earlier works of two Hungarian mathematicians, Dénes Kőnig and Jenő Egerváry.[1][2] However,

    Hungarian algorithm - Wikipedia
  • 1.2. Hungarian method

  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • M.Hiroi's Home Page / Lightweight Language

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 配列のシャッフル

    イントロダクション よく、ランダムな数字の並びで、それぞれの数字がちょうど1回ずつしか出てこない、という数列が欲しいことがあります。例えば、カードのシャッフル等がこれにあたります。こういう時は配列に数字を入れ、その配列の要素をシャッフルして目的の数列を得るのが定石です。そのシャッフルをどうやるのがいいのか、というのが今回の話題です。 まず思いついた方法 昔私が最初に考えついたのは、ランダムに2つの要素を選んで swap する、という操作を複数回繰り返すという方法でした。コードっぽく書くと、次のような感じになります。 M = count_of_iteration; N = size_of_array; rand(x) = random_value_less_than_x; for(i = 0; i < M; i++){ a = rand(N); b = rand(N); swap(array

  • DO++: 左傾赤黒木

    漢字で書くと仰々しいが、赤黒木 (wikipedia) red-black tree (english wikipedia)という平衡二分木で最も多くつかわれているデータ構造の、改善版が出てたそうだ。 left-leaning red-black tree (pdf) 日語に訳すと左傾赤黒木かな。簡単な漢字を並べている感じがしてしまう 赤黒木の詳細については、wikipediaなどをよんでもらうとして、これは更新時間が定数で更新箇所が局所的(これはマルチスレッドとかでロックする箇所をかなり細かい単位で、できるという強い利点もある)のだが、実装が結構面倒くさい。例えばC++ stl のmapとかの赤黒木の実装のstl_tree.h(google code search)は大変なことになっている(特にRb_tree_rebalance_for_eraseとか) 赤黒木というのは動的データ構造

    DO++: 左傾赤黒木
  • アルゴリズムコンテストの挑み方 (2) - d.y.d.

    21:25 08/10/27 論文 の締め切り終わったら頑張った自分へのご褒美(笑)であれとこれとそれをやる時間をとるぞー! ……みたいなことを思っていたはずなのに、いざ提出し終わると気が抜けて何一つやる気がでない問題。 困った困った。 ナイチル たくさん人がいらしてる今のうちに 「ナイトメア☆チルドレン」新装版 面白いよみんな買おうぜ! などと書いてみる。 自分のマンガの趣味はわりと平凡だと思ってて、 流行ってるマンガは大抵好きだし自分の好きなのはだいたい流行ってるし。 なのになぜだか藤野もやむ作品だけは唯一の例外で、とっても不思議でならない。 100回くらいアニメ化されてて然るべきだと思う。 何回か書いてますがとにかく最終話が好きで、 そこまでのシナリオが一気に集まって一つ一つのセリフが3倍の重みを持つように収斂していく幕引き。 あれは良い。 17:12 08/10/24 アルゴリズム