タグ

アルゴリズムに関するpaselaのブックマーク (27)

  • Raft

    ↓↓↓↓訂正あります。↓↓↓↓ 2018/07/02に株式会社エフコード社内で行われた勉強会のスライドです。 訂正版(随時更新中): https://docs.google.com/presentation/d/15HOMfAbtdWwO48njcB8IdkN3kVAMu3wsmZo0O3S-f_4/edit?usp=sharing 専門家による資料・専門家向けの資料ではありません。自分自身で学習し、論文・文献等を読解してまとめた内容となります。間違い等あるかもしれませんが、あれば是非コメント頂ければと思います。 【訂正事項】 スライド16: 誤:たった一つのプロセスが故障しただけでも有限時間で合意できない 正:たった一つのプロセスが故障しうるだけでも有限時間で合意できない スライド20: 誤: 重要: あるschedule σ1, σ2 がdisjoint (nodeが被ってない) なら

    Raft
  • Raft:Understandable Distributed Consensus

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

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

    Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理
  • プレイヤーが自然に感じる乱数の作り方 - A Successful Failure

    2015年11月10日 プレイヤーが自然に感じる乱数の作り方 Tweet ゲームでは擬似乱数がよく使われるが、ある種のゲーム数学的に精度の高い擬似乱数(たとえばMT)を用いているにも関わらず、コンピュータが有利になるように乱数を操作していると批判に晒されている。 実際、数学的に正しい乱数と、プレイヤーが自然と感じる乱数には、ある種の差が存在する。北陸科学技術大学院大学の池田研究室では、プレイヤーに自然に感じる乱数の生成に関する研究を行っている。 プレイヤーが不自然に感じる理由 数学的に正しい乱数に対してプレイヤーが不自然に感じる理由としては認知バイアスが考えられる。特に事象に関連する認知バイアスとして、次が挙げられている[1]。 確証バイアス: 人は自分のもつ仮説に一致する情報を求め、反証となる証拠を避ける傾向がある。ひとたび、サイコロが操作されていると感じると、それ以降、その仮説に都

    プレイヤーが自然に感じる乱数の作り方 - A Successful Failure
  • RubyとPythonにおけるガベージコレクションの視覚化 | POSTD

    稿は、ブダペストで開かれたイベント「 RuPy 」で、Pat Shaughnessyが披露したプレゼンの内容をまとめたものです。 プレゼンの映像はここ から視聴できます。 稿は当初、 同氏の個人ブログ に投稿されましたが、同氏の了承を得て、Codeshipに再掲載します。 このイベントは「RubyPython」に関するカンファレンスなので、RubyPythonでは、ガベージコレクション(以下「GC」)の動作がどう違うのかを比較すると面白いだろうと私は思いました。 ただしその題に入る前に、そもそもなぜ、GCを取り上げるのかについてお話しします。正直言って、すごく魅力的な、わくわくするテーマではないですよね? 皆さんの中でGCと聞いて、心がときめいた方はいらっしゃいますか? [実はこのカンファレンス出席者の中で、ここで手を挙げた人は数名いました!] Rubyコミュニティで最近、Rub

    RubyとPythonにおけるガベージコレクションの視覚化 | POSTD
  • 最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」

    カーナビやスマートフォンのマップアプリなど、目的地への最短ルートを一瞬で割り出してくれるサービスのお世話になっている人も多いと思いますが、その仕組みがどうなっているのかを知っている人はほとんどいないはず。その処理には、ルート探索専用のアルゴリズムが用いられているのですが、そんなアルゴリズムの動作する様子や、種類の違いによる結果の変化をわかりやすく見せてくれるサイトが「PathFinding.js」です。 PathFinding.js http://qiao.github.io/PathFinding.js/visual/ このサイトでは、スタート地点からゴール地点までの最短ルートを発見するさまざまなアルゴリズムを、自分で設定を変えながらインタラクティブに体験できるようになっています。2点の間に障害物を配置することも可能で、以下のムービーでは画面左下の緑色の地点から右上にある赤い地点までのル

    最短経路を見つけるアルゴリズムをビジュアルで見る「PathFinding.js」
  • RSA鍵の生成時に確率的素数判定法を使って問題ないのか - hnwの日記

    前回記事「RSA公開鍵から素数の積を取り出す方法」でも紹介しましたが、RSA鍵の生成には巨大な2つの素数p,qが必要です。近年一般的に使われている2048bit RSA鍵の場合、p,qの大きさは1024bit、10進で約308桁の数になります。 このRSAのアルゴリズム中ではpとqを法としたフェルマーの小定理(正確にはその拡張であるオイラーの定理)を利用しています。つまり、pとqが合成数だとRSA暗号の大前提が狂ってしまいますので、pとqには確実に素数を選ぶ必要があります。 ところで、OpenSSLのRSA鍵生成の実装では、pとqの素数判定にMiller-Rabin素数判定法が用いられています。Miller-Rabin素数判定法は片側誤りの確率的アルゴリズムで、「たぶん素数」「確実に合成数」の判定ができるようなものです。pとqの素数性が重要なのに、その判定に確率的アルゴリズムを使っても問題

    RSA鍵の生成時に確率的素数判定法を使って問題ないのか - hnwの日記
  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

  • Quick-sort with Hungarian (Küküllőmenti legényes) folk dance

    Created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania. Directed by Kátai Zoltán and Tóth László. In cooperation with "Maros Művészegyüttes", Tirgu Mures (Marosvásárhely), Romania. Choreographer: Füzesi Albert. Video: Lőrinc Lajos, Körmöcki Zoltán. Supported by "Szülőföld Alap", MITIS (NGO) and evoline company. Click the link below to watch this visualization included in the

    Quick-sort with Hungarian (Küküllőmenti legényes) folk dance
  • http://swatmac.info/?p=942

    See related links to what you are looking for.

  • algorithm - ソート済み配列をソートしなおすべからず : 404 Blog Not Found

    2012年01月08日20:30 カテゴリアルゴリズム百選Math algorithm - ソート済み配列をソートしなおすべからず 珠玉のプログラミング Jon Bentley / 小林健一郎訳 ぐぬぅ。男子ゆえ女子をこじらせようがないとはいえ、風邪が普通にこじれている。 というわけでアルゴリズムのことなどつらつら考えていた。 高速な安定ソートアルゴリズム “TimSort” の解説 : Preferred Research Timsort - Wikipedia, the free encyclopedia 要はソートすべき配列中にすでに存在する秩序を活用するのがtimsortなのだと。 だけどすでにソート済みの配列を活用するなら、こういう方法もありではというわけでentry。 If it ain't broke, don't fix it. ソート済みの配列に要素を加えるなら、要素を加

    algorithm - ソート済み配列をソートしなおすべからず : 404 Blog Not Found
  • perl - @_をコピーするコスト : 404 Blog Not Found

    2011年07月17日22:00 カテゴリLightweight LanguagesTips perl - @_をコピーするコスト Perl Best Practices Damian Conway [邦訳:Perlベストプラクティス] これ、やけに差がないと思いきや… Perlで重複した要素をユニークにする - ichirin2501の日記 ふと、どのコードが速いのか気になったのでベンチマークを取ってみました。 id:ichirin2501のコードのどこに問題があるかは、以下のベンチマークを走らせてみればわかります。 #!/usr/bin/env perl use 5.012; use Benchmark qw/:all/; sub uniq_copy { my @array = @_; my %hash; @hash{@array} = (); return keys %hash; }

    perl - @_をコピーするコスト : 404 Blog Not Found
  • Perlで重複した要素をユニークにする - ichirin2501's diary

    重複した要素をユニークにする代表的な方法としていくつかある。 ふと、どのコードが速いのか気になったのでベンチマークを取ってみました。 今回調べたコードは以下の6種類 # use Array::Uniq; sub unique_au{ my @array = @_; return uniq sort @array; } # foreach sub unique_each{ my @array = @_; my %hash; $hash{$_} = 1 foreach(@array); return keys %hash; } # grep sub unique_grep{ my @array = @_; my %hash; return grep{!$hash{$_}++} @array; } # use List::MoreUtils; sub unique_lmu{ my @array

    Perlで重複した要素をユニークにする - ichirin2501's diary
  • John Resig - Javascript Diff Algorithm

    Using an idea grabbed from a mailing list post, I implemented the diff algorithm discussed in the following paper (free registration required): P. Heckel, A technique for isolating differences between files Comm. ACM, 21, (4), 264–268 (1978). The implementation, itself, has two functions, one of which is recommended for use: diffString( String oldFile, String newFile ) This method takes two string

  • クイックソート in C++ - p_stade;

    おまけのサンプル (全体のコード) 5個並べるのもしばらく待たなければならないほど遅い []typedef[] []any_range[][]<[][]int[][]&, [][]boost[][]::[][]forward_traversal_tag[][]>[] []range[][];[] []range[] []quick_sort[][]([][]range[] []rng[][])[] []{[] []if[][] (![][]rng[][])[] []return[] []rng[][];[] []else[][] {[] []int[][]& [][]x[][] = [][]front[][]([][]rng[][]);[] []range[] []xs[][] = [][]rng[][]|[][]dropped[][]([][]1[][]);[] []return[] [

    クイックソート in C++ - p_stade;
  • 経路探索アルゴリズムの「ダイクストラ法」と「A*」をビジュアライズしてみた - てっく煮ブログ

    as詳解 ActionScript 3.0アニメーション ―衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック を読んでいて、経路探索のアルゴリズムで A* が取り上げられていました。A* については、いろいろ検索して調べたりもしたのですが、やっぱりに書いてあると理解しやすいですね。せっかくなので自分流に実装してビジュアライズしてみました。ダイクストラ法まずは A* の特別なケースでもあるダイクストラ法から見ていきます。クリックすると探索のシミュレーションが開始します。スタート地点(S)からゴール(G)への探索が始まります。色がついたところが「最短経路が決定した場所」です。スタート地点から少しずつ探索が完了していきます。半分ぐらい完了しました。まだまだ進みます。最後まで終わりました。最短経路を黒色矢印で表示しています。ダイクストラ法は、スタート地点から近いノード(=マス

  • ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室

    ゲームの作り方とアルゴリズムをジャンル別にまとめてみました。ゲーム制作や、プログラミングの勉強用にご活用ください。言語別ゲームプログラミング制作講座一覧もあわせてお読みください。 リンク切れがおきていたものは、URLを表示しておくので、Internet Archiveなどでキャッシュを表示させてみてください。 RPG ゲームの乱数解析 乱数を利用した敵出現アルゴリズムの解説 各種ゲームプログラム解析 FF、ドラクエ、ロマサガのプログラムの解析。乱数の計算など ダメージ計算あれこれ(http://ysfactory.nobody.jp/ys/prg/calculation_public.html) ダメージの計算式 エンカウントについて考えてみる エンカウント(マップでの敵との遭遇)の処理方法いろいろ RPGの作り方 - ゲームヘル2000 RPGのアルゴリズム ドルアーガの塔 乱数の工夫の

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
  • 編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー

    昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベンシュタイン距離, Levenshtein Distance) は二つの文字列の類似度 (異なり具合) を定量化するための数値です。文字の挿入/削除/置換で一方を他方に変形するための最小手順回数を数えたものが編集距離です。 例えば 伊藤直哉と伊藤直也 … 編集距離 1 伊藤直と伊藤直也 … 編集距離 1 佐藤直哉と伊藤直也 … 編集距離 2 佐藤B作と伊藤直也 … 編集距離 3 という具合です。 編集距離はスペルミスを修正するプログラムや、近似文字列照合 (検索対象の文書から入力文字にある程度近い部分文字列を探し出す全文検索) などで利用されます。 編集距離算出は動的計画法 (Dynamic Programming, DP) で計算することができることが

    編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー
  • algorithm-code.com

    This domain may be for sale!

  • Animated Sorting Algorithms

    Discussion These pages show 8 different sorting algorithms on 4 different initial conditions. These visualizations are intended to: Show how each algorithm operates. Show that there is no best sorting algorithm. Show the advantages and disadvantages of each algorithm. Show that worse-case asymptotic behavior is not the deciding factor in choosing an algorithm. Show that the initial condition (inp