タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

AlgorithmとProgrammingとALgorithmに関するagwのブックマーク (1,893)

  • Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理

    2015年12月17日、Google ChromeJavaScript エンジン(処理系)である V8 の公式ブログにて、 JavaScript の標準的な乱数生成APIである Math.random() の背後で使われているアルゴリズムの変更がアナウンスされました。 Math.random() 関数は JavaScript を利用する際には比較的よく使われる関数ですので、親しみのある方も多いのではないかと思います。 新たなバグの発見や、従来より優秀なアルゴリズムの発見によってアルゴリズムが変更されること自体はそれほど珍しくはないものの、 技術的には枯れていると思われる Math.random() のような基的な処理の背後のアルゴリズムが変更されたことに驚きを感じる方も少なくないかと思いますが、 それ以上に注目すべきはその変更後のアルゴリズムです。 実際に採用されたアルゴリズムの原

    Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理
  • 最小完全ハッシュ函数 - epii's physics notes

    最小完全ハッシュ函数 ハッシュ函数のうち、可逆で、かつ、生成するハッシュ値の値域が最小である函数のことを、最小完全ハッシュ函数と言います。 その作り方を解説していきたいと思います。

  • アルゴリズム - Qiita Advent Calendar 2015 - Qiita

    Computer Science的なAlgorithmにかんして。アルゴリズムというタグがつくものであれば、特に縛りは無いです。

    アルゴリズム - Qiita Advent Calendar 2015 - Qiita
  • 連載やねうら王miniで遊ぼう!7日目 | やねうら王 公式サイト

    今回は、局面のhash値の計算について説明します。 局面に対応するhash値の取り出し 局面に対して、StateInfo::key()からhash値が得られる。 このhash値は、局面に対応する固有の値である。 しかし通例、hash値は64bitしかないので、異なる局面であっても、たまたま同じhash値になることがある。これをhash衝突と言う。 やねうら王miniにはこのhash値を128bitにしたり256bitにしたり出来る無駄機能があるが、その話は次回にしよう。 さて、このkeyを取り出してみよう。その局面固有の内容を格納しておくのはStateInfoであった。Positionクラスのstate()を呼び出すとStateInfoの参照が得られる。StateInfoのkey()を呼び出すとこのhash値が得られる。 実際にやってみよう。 void user_test(Position

  • ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも

    明日から RubyKaigi なので、ちょっとした小ネタを一つ。 例えば、0 から 9999 までをハッシュに順に入れます。 h = {} 10000.times do |n| h[n] = true end このとき、h[9998] や h[9999] は、h[0] や h[1] より高速です。 どのくらい高速かというと、 1_000_000_000.times { h } # 40.8 sec (ループ自体の速度) 1_000_000_000.times { h[9999] } # 57.2 sec 1_000_000_000.times { h[0] } # 89.1 sech[0] は 89.1 - 40.8 = 48.3 nsec 、h[9999] は 57.2 - 40.8 = 16.4 nsec ということになります。なんと 3 倍も速い。*1 なぜこんなことが起きるのか ハ

    ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも
  • 15种姿势让女人最深-男女洞房最刺激的姿势-性知识大全姿势

  • 文字列検索のいろいろ

    前編 (平衡二分探索木編) はこちら http://www.slideshare.net/iwiwi/2-12188757

    文字列検索のいろいろ
  • 実験計画法と組合せ最適化 - Qiita

    これは、アルゴリズム Advent Calendar 2015の3日目の記事です。 はじめに 実験計画法の簡単な紹介と、その発展として組合せ最適化によるアプローチを紹介します。 背景 センサー情報からある解析をしたいとします。 センサーは、1万円のものと3万円のものがあり、置かないこともあるので、3種類の選択があります。 センサーの設置場所は、20カ所の候補があります。 全センサーの総購入費用は5万円以下に抑えないといけません。 どこにいくらのセンサーを置いたら、効率よく検証できるのかを知りたいものとします。 ケースの例としては、「A地点とB地点に1万円のセンサー、C地点に3万円のセンサーを配置」となります。 用語 下記の用語を使います。 要因:水準を決めたい検討対象。今回は、センサーの配置候補。 水準:要因の取り得る値。今回は、センサーの費用で、0万円、1万円、3万円の3種類。 交互作用

    実験計画法と組合せ最適化 - Qiita
  • A* (1968) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 東京大学大学院 総合文化研究科、福永研究室の浅井です。 続いて、探索の高速化に必須の手法、A* (エースター) を紹介します。 Aは「ヒューリスティック探索」とか「発見的探索」と呼ばれます。この名前が悪くて、おかげで、酷い誤解を受けています。例えばあるスライドでは、Aは「近そうなところから探索」と書かれています。なんか適当に探索するかのような印象ですね。A*は、ダイクストラ法を拡張し、 理論的裏付けを持った下界を用いてグラフを探索するための手法 です。 Dijkstra法 の何がタコか Dijkstra法は、最適解を見つけることができる

    A* (1968) - Qiita
  • PFIセミナー2015/12/3: More Modern GPU

    PFIセミナー2015/12/3: More Modern GPU
  • 映像Codec屋から見たYJKカラー

    色差信号3つのうち1つは、輝度と2つの色差があれば求められるので色差信号は2信号で表現する。 色差の値域は輝度に比べて大きくなるため、色差の値を正規化する表現もある。Yが0.0~1.0の間の値を取るときに色差が-0.5~+0.5の範囲になるように調整するなどである。 輝度・色差信号のメジャーな規格にITU-R BT.601、HDTV用の ITU-R BT.709 勧告がある。JPEGやMPEG形式で用いられるカラー信号である。規格書は次で入手できる。また、最近4K/8K用にITU-R BT.2020が勧告された。 https://www.itu.int/rec/R-REC-BT.601/en https://www.itu.int/rec/R-REC-BT.709/en https://www.itu.int/rec/R-REC-BT.2020/en ITU-R BT.601では、Yと色差

  • /proc/cpuinfo: 全点対間最短路を高速に求める

    フィックスターズは今年も ACM ICPC つくば大会 にスポンサーとして協賛しております。今年はコンテスト後の懇親会でクイズを出題しているのですが、その問題準備の際に作ったはいいものの結局使われなかったコードが大量に出てきてしまったため、それらをまとめて簡単な解説とともに公開いたします。 全点対間最短路問題 全点対間最短路問題はN個の頂点を持つ有向グラフにおける任意の2点間の最短路を求める問題です。密なグラフの全点対間最短路を求めるアルゴリズムとしてワーシャル-フロイド法が広く知られており、以下のような非常にシンプルなコードで求めることができます。 // 入力: A[i][j] = 頂点iと頂点jを結ぶ辺の重み // 出力: A[i][j] = 頂点iから頂点jまでの最短路の重みの総和 for(int k = 0; k < N; ++k) for(int i = 0; i < N; ++

  • はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化

    はてなブックマークの持つデータには多岐にわたるアクセス制御のための属性があり、一貫した権限確認のしくみが必要となる。できる限り効率的にデータを取得するにはクエリ段階でアクセス制御に基づくフィルタリングが必要となるが、たとえばMySQLで取得した場合とElasticsearchで取得した場合など、複数パスでの整合性も求められる。発表では、半環構造を用いることで整合性を担保するしくみと、一貫性を保つためのScalaでの実装上の工夫を紹介する。 WebDB Forum 2015 C-4: 技術報告セッション http://db-event.jpn.org/webdbf2015/

    はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
  • 近似文字列アルゴリズムのgestalt pattern machingについてメモ

    Google 検索でタイポをすると、意図したであろう綴りを教えてくれたり、意図通りの検索結果を返してくれる。 このスペルチェック機能では、入力文字列が来の文字列とどのくらい似ているのかを評価するアルゴリズムが肝で、編集距離のアルゴリズムはよくしられている。 ふとしたことから、Ratcliff/Obershelp pattern recognition(gestalt pattern maching ともいう) という編集距離とは別のアルゴリズムに出くわした。 このアルゴリズムは1980年代から存在するが、より利便性の良いアルゴリズムが発明されていったからなのか、wikipedia に載っていないくて、手元のアルゴリズムにもみあたらない。 まだこのアルゴリズムが輝いていた 1988 年に、 Dr. Dobb’s Journal に発表された次の記事(サンプル実装はアセンブリ言語!)を元に

    近似文字列アルゴリズムのgestalt pattern machingについてメモ
  • 高速な編集距離の計算方法 - Qiita

    今日紹介するコードはここにおいてあります。 https://gist.github.com/aflc/6482587 編集距離(levenshtein距離)の計算方法で一番有名なのが動的計画法を使ったもので、これはWikipediaにも載っているお手軽でよく使われているものです。 しかし、この方法は結構時間がかかるので、他にも高速な手法がいくつか提案されています。 NOXさんのブログエントリを読んでいただくのが一番手っ取り早いのですが、ビットパラレル法というのが上手くハマると10倍以上高速です。 ここで紹介されている論文では64文字以上の比較ができないのですが、今回は Heikki Hyyrö, "Explaining and extending the bit-parallel approximate string matching algorithm of Myers", 2001 と

    高速な編集距離の計算方法 - Qiita
  • 目からウロコ!囚人のジレンマって経済にも繋がる話だったのか! - 嗚呼、学習の日々

    みなさまごきげんよう! 嗚呼蛙でございます! 昨日、iTunesのアフィリエイト設定記事を書いたついでにサイドバーにお気に入り楽曲を貼ってみました。 何の役に立つわけでもないですが、なんとなく満足感があるので、今度追記したいですね。 ということで、今日はそんな話とは全く関係ない、職場の営業さんに聞いた面白経済話をご紹介いたします。 囚人のジレンマと経済の関係 囚人のジレンマと経済の関係 みなさんは、囚人のジレンマって話をご存知でしょうか? 共同である犯罪を行ったA、Bをそれぞれ別室で取り調べをした時、捜査官がそれぞれに対して条件を出して自白を引き出そうとするという話です。 捜査官が出した条件というのが以下の3つになります。 二人とも黙秘したら、二人とも懲役5年。 二人のうち片方だけ自白したら、自白した方は懲役2年、黙秘した方は懲役15年。 二人とも自白したら、二人とも懲役10年。 図にする

    目からウロコ!囚人のジレンマって経済にも繋がる話だったのか! - 嗚呼、学習の日々
  • キャラソートのアルゴリズムについて調べた - 唯物是真 @Scaled_Wurm

    「キャラソート」とは 以下のページのようにキャラ(あるいは人物などの何らかの要素)を2つずつ表示して「どちらか好きか?」という質問に連続で答えていくことで全体のランキングを作るWebサービス(「◯◯キャラソート」、「◯◯ソート」など)が様々な作品について存在している 東方キャラソート どんなアルゴリズムを使っているのかに興味がわいたので調べてみました ソートのアルゴリズム 以下の解説記事を読むとわかるようにマージソートやヒープソートといったソートアルゴリズムを人間にそのままやらせているらしい ただし単純にソートアルゴリズム使うだけではなく、計算量を減らすため引き分けなどの場合にはそのペアのデータを一つにまとめたものとして扱うように工夫している ハロプロ・ソートの解説 咲-saki-キャラソート - 勤々惰々 管理しないsabakan » キャラソートアルゴリズムについて ソートアルゴリズム

    キャラソートのアルゴリズムについて調べた - 唯物是真 @Scaled_Wurm
  • とても長い配列の上位M件だけをクイックソートより高速に取り出す - Qiita

    というわけで、10倍の差がでた。 当然、配列の長さやソートする長さ、また実装の方法によって性能差は変わってくるが 今回の方法は有効であるということは確認できた。 既存の記事(2015/11/09 20:22 追記) コメント欄でUnordered partial sorting にそれらしきことが書いてあると教えていただいた。 そちらでは、「上位k個を取り出す(ソートは不要)」という問題を考えている。 同様に分割統治法を用いてソートしていきながら、上位k個以内の小区間になったらその区間はソートせずに全て選択して良いとしている。 早い話が、QuickSelectによりk+1番目の要素を探してそれより上位の要素をごそっと抜き出している。 分割統治法で大雑把にソートしていきながら、不要なソートを行わないようにする という同様のアプローチである。 C++のSTLの場合(2015/11/09 22:

    とても長い配列の上位M件だけをクイックソートより高速に取り出す - Qiita
  • Interpolation Search - Negative/Positive Thinking

    Interpolation Searchとは 補間探索、内挿探索 二分探索での範囲の中間値を利用する代わりに、範囲の両端の値から探したい値の位置にあたりをつけて、その値を利用して探索していく方法 二分探索では、配列の値に関係なく範囲の中間の値を利用して探索 探索時間はO(log log n) 二分探索では、O(log n) データに依っては、二分探索の方が速くなる場合もあり得る 計算例 配列vが「1,2,3,5,6,10,12」として、 left = 0, v[left] = 1 right = 6, v[right] = 12 である時、 2分探索では、mid = floor( (left + right) / 2 ) = floor( (0+6) / 2 ) = 3のように決めたりするが、 Interpolation Searchでは、値も考慮し、value=6を探したい場合、 mid

    Interpolation Search - Negative/Positive Thinking
  • ソートアルゴリズム高速化への道 - kivantium活動日記

    先日、アルゴリズムの授業でソートのアルゴリズムをいくつか習いました。ソートアルゴリズムの名前と原理くらいは聞いたことがありましたが、実装したことはなかったのでいい機会だと思い実装してみることにしてみました。ただ実装するだけでは面白くないので高速化の限界に挑戦してみたいと思います。 計測用プログラム 今回の計測では、ランダム値が入った配列のソートを100回行い、平均時間を各アルゴリズムに競わせるというシンプルなルールにしました。プログラムは以下の通りです。 C++11で入ったメルセンヌ・ツイスタなどの機能を使っているので、ビルド時には-std=c++11を指定する必要があります。 実験に使用したパソコンのCPUはCore i3-3227U@1.90GHz、コンパイラはgcc version 4.8.4で最適化オプションには-O3を指定しました。 #include <iostream> #in

    ソートアルゴリズム高速化への道 - kivantium活動日記