タグ

Algorithmに関するkarahiyoのブックマーク (14)

  • 手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD

    この投稿では、以前に TinyKeepDev が こちら で述べたランダムなダンジョンを生成する技法について説明しようと思います。元の投稿に比べて、もう少し具体的に話を進めるつもりです。まずは、以下に示したアルゴリズムの一般的な動作をご覧ください。 部屋の生成 はじめに、幅と高さを持つ部屋を円の中にランダムに配置しましょう。TKdevのアルゴリズムは、各部屋のサイズを生成するのに正規分布を用いています。これは一般的にとてもいいアイデアです。なぜかと言うと、これによってより多くのパラメータを扱うことができるようになるからです。幅/高さの平均と標準偏差間の異なる比率を選ぶと、通常は見た目の違うダンジョンとなります。 ここで実行すべき関数は getRandomPointInCircle です。 function getRandomPointInCircle(radius) local t = 2

    手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD
  • X509 証明書の詳細

    Data (データ部) Version (X509のバージョン) Serial Number (シリアルナンバー) これにより同一CAで同一機関への証明書を2度作っても区別できる Signature Algorithm Signature Algorithm (CAが利用する暗号化アルゴリズム) Issuer (証明書の発行者) Validity (有効期限) Not BeforeからNot Afterまで有効 Subject (証明される対象) Subject Public Key Info (証明される対象の公開鍵に関する情報) Public Key Algorithm (公開鍵のアルゴリズム) RSA Public Key (公開鍵) X509v3 extensions (X509 Version.3の拡張部) X509v3 Subject Key Identifier (サブジェク

  • 関数プログラミング 珠玉のアルゴリズムデザイン

    演算子以外の構文記号の一部については,GHCの言語拡張UnicodeSyntaxを有効にするとソースコード中に記述可能です. 詳細については,GHCユーザーガイド 9.3.1 Unicode syntaxをご覧ください. 演算子に関しては,Unicodeの記号が使えますので,たとえば,1章については,以下のような定義モジュールをインポートすれば,そのままコードで表現できます. {-# LANGUAGE UnicodeSyntax #-} module Operators where import qualified Data.List infixr 5 \\ (\\) ∷ Eq a ⇒ [a] → [a] → [a] (\\) = (Data.List.\\) infix 4 ∈, ∉ (∈) ∷ Eq a ⇒ a → [a] → Bool (∈) = elem (∉) ∷ Eq a ⇒

  • リード・ソロモン符号 - Wikipedia

    リード・ソロモン符号(リード・ソロモンふごう、Reed-Solomon Coding、RS符号と略記)とは符号理論における誤り訂正符号の一種、訂正能力が高く様々なデジタル機器等で応用されている。 リード・ソロモン符号は1960年にアービング・ストイ・リード(英語版)とギュスタブ・ソロモン(英語版)によって開発された誤り訂正符号である。符号の生成と復号が複雑なので、処理速度が求められる分野ではあまり使用されていないが、その反面誤り訂正能力が高く、地上デジタル放送、衛星通信、ADSLやDVTR、身近なところではCDやDVDやBD、QRコードの誤り訂正に応用されている。 特徴として符号の生成方法にガロア体(有限体)の概念を使用している。これは複数個のビットを一つの固まり(シンボルあるいはワードと呼ぶ)と見なし、符号語をシンボルの集まりで表し各シンボル単位で誤りの検出と訂正を行う。一つのシンボル内

    リード・ソロモン符号 - Wikipedia
  • 第1回 なぜ、Hadoopはどのように動くのか、を学ぶのか | gihyo.jp

    はじめに ビッグデータ解析のためのシステム基盤として、Hadoopをはじめとするオープンソースのデータ処理ソフトウェア(データ処理系)が広く利用されつつありますが、当該データ処理系をすでに利用している、もしくは利用の検討をしている読者の方々の中には、たとえば以下のような問題を抱えている方が少なからずいらっしゃるのではないでしょうか。 データ処理系の使い方はなんとなくわかるが、その内部をあまり理解できていない。または、内部の動作原理がよくわからないので、格的に使う気にならない。 同様の目的を達成する複数のデータ処理系において、どれを使って良いかがよくわからない。または、適切に使い分けられていない気がする。たとえば、どのような場合にHadoopを用いて、どのような場合に同類のデータ処理系であるImpalaやSparkを用いれば良いかが“⁠明確に⁠”わからない。 このような問題を解決するには、

    第1回 なぜ、Hadoopはどのように動くのか、を学ぶのか | gihyo.jp
  • Raft:Understandable Distributed Consensus

  • 暗号に使える乱数と使えない乱数

    まず重要なポイントとして、擬似乱数のシードとなる真の乱数 (質問の場合は円周率のほうではN, 漸化式の方ではM) は十分に広い空間からランダムに選ばれなくてはなりません。 どんな擬似乱数生成器を使っていたとしてもシードが高々1億程度では総当たりで(比較的)簡単にシードがみつかってしまい生成される乱数が再現できてしまいます。 円周率の先頭100万桁のどこかから選ぶなどは問題外です。 シードはRSA/DSAなどの鍵長に合わせて 1000 bit 程度 (10進数で300桁程度) は欲しいかと思います。 質問にある円周率を擬似乱数として使う方法ですが、円周率の N桁目からの数列がある長さ与えられた時に N 自体を逆算したり, 次の出力を推測する高速な (Nのビット数の多項式時間で実行可能な) アルゴリズムは知られていないかと思います。 そのため N が十分に大きければある時点までの出力が攻撃者に

    暗号に使える乱数と使えない乱数
  • Home - Toronto Deep Learning Demos

    × Close Please help us improve results by clicking on check or X marks, thanks! About Live demo of Deep Learning technologies from the Toronto Deep Learning group. Server and website created by Yichuan Tang and Tianwei Liu.

  • 多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ

    こんにちは。技術部検索グループの原島です。 上の画像は、スマートフォン(ブラウザ版)で見たクックパッドの検索結果ページです。レシピだけでなく、ニュースも表示されていますね。献立や掲示板のスレッドなどが表示されることもあります。 クックパッドでは、検索結果ページに表示するコンテンツをクエリなどに応じて最適化しています。最適化は、膨大なログデータと最新の機械学習を用いることで、実現しています。このエントリでは、クックパッドにおけるコンテンツ最適化の裏側を紹介します。 最適化の背景 スマートフォンの普及に伴って、ユーザが利用するプラットフォームは PC からモバイルにシフトしつつあります。クックパッドにおけるモバイル利用者の割合も、ここ 2 年で 10% 以上増加しました。最近では、60% 以上のユーザがモバイルからアクセスしています。 ユーザの利用形態が変化すれば、検索結果ページもその変化に対

    多腕バンディットによる表示コンテンツの最適化 - クックパッド開発者ブログ
  • Paxosアルゴリズム - Wikipedia

    Paxosとは信頼性が低いプロセッサのネットワークにおいて合意の問題を解決するためのプロトコルの集合である。 合意とは参加者のグループにおいて単一の結果について合意を得るプロセスである。参加者や通信手法に障害が起きる可能性がある場合、この問題は困難なものとなる[1]。 合意プロトコルは分散コンピューティングにおける状態機械アプローチの基礎であり、これはレスリー・ランポート[2]により提案され、Fred Schneiderによってサーベイがなされている[3]。 Paxosプロトコルは1990年に登場し命名されたが、論文として出版されたのは1998年であった[4]。 これ以前に、ナンシー・リンチ、Cynthia Dwork、Larry Stockmeyerは"部分同期"システムの広い範囲における合意形成方法を例証している。Paxosは分散トランザクションの文脈において、1988年にOkiとBa

  • DSL-Researches

    近年,通信理論の分野でgossipプロトコルという通信手法が注目されている.これは情報伝達を確率的に行う手法のひとつであり,例えばアドホックネットワーク上でルーティングを行う際などに多く用いられる[1-4].しかし,gossipプロトコルの性能評価に関する理論的な結果はあまり多くない.また,gossipプロトコルは単一のパケットを拡散する場合のみが陽に考慮されており,複数のパケットを同時に拡散させた場合に関する研究はなされていないなどの問題もある. そこで研究では,複数の情報が拡散するという現象を調べるために,既存のgossipプロトコルを拡張し,同時に複数の情報を扱えるようにする.そしてその拡張されたgossipプロトコルにおける情報浸透確率などを解析し,その性質を調べていく. Gossipプロトコル 近年,身の回りのあらゆる物を有線あるいは無線のネットワークでつなぐことで様々なサービ

  • バンディットアルゴリズム入門と実践

    39. 実際の使用イメージ 試行数 アーム1期待値 アーム2期待値 アーム3期待値 活用or探索 0(0/0) 0(0/0) 1 1(1/1) 0(0/0) 2 1(1/1) 0(0/1) 3 1(1/1) 0(0/1) 4 1(2/2) 0(0/1) 5 1(2/2) 0.5(1/2) 6 1(2/2) 0.5(1/2) 7 8 0.66(2/3) 0.5(1/2) 9 0.5(2/4) 0.5(1/2) 10 0.4(2/5) 0.5(1/2) 0(0/0) 0(0/0) 0(0/0) 0(0/1) 0(0/0) 0(0/0) 0(0/2) 0(0/2) 0(0/2) 0(0/2) ・・・最も期待値の高いアーム 39 探索 探索 探索 探索 探索 探索 活用 活用 活用 活用 ランダム選択 引くアーム 結果 1 2 3 1 2 3 - アーム1 アーム2 アーム3 アーム1 アーム2

    バンディットアルゴリズム入門と実践
  • 不動点コンビネータ - Wikipedia

    「Yコンビネータ」は不動点演算子について説明しているこの項目へ転送されています。カリフォルニア州の企業については「Yコンビネータ (企業)」をご覧ください。 不動点コンビネータ(ふどうてんコンビネータ、英: fixed point combinator、不動点結合子、ふどうてんけつごうし)とは、与えられた関数の不動点(のひとつ)を求める高階関数である。不動点演算子(ふどうてんえんざんし、英: fixed-point operator)、パラドキシカル結合子(英: paradoxical combinator)などとも呼ばれる。ここで関数 の不動点とは、 を満たすような のことをいう。 すなわち高階関数 が不動点コンビネータであるとは、 任意の関数 に対し、 とすると, が成立する 事を指す。 あるいは全く同じことだが、不動点コンビネータの定義は、任意の関数 に対し、 が成立する事であるとも

  • 高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development

    先日、TimSortというソートアルゴリズムが話題になりました。TimSortは、高速な安定ソートで、Python(>=2.3)やJava SE 7、およびAndroidでの標準ソートアルゴリズムとして採用されているそうです。 C++のstd::sort()よりも高速であるというベンチマーク結果1が話題になり(後にベンチマークの誤りと判明)、私もそれで存在を知りました。実際のところ、ランダムなデータに対してはクイックソート(IntroSort)ほど速くないようですが、ソートというシンプルなタスクのアルゴリズムが今もなお改良され続けていて、なおかつ人々の関心を引くというのは興味深いものです。 しかしながら、オリジナルのTimSortのコードは若干複雑で、実際のところどういうアルゴリズムなのかわかりづらいところがあると思います。そこで今回はTimSortのアルゴリズムをできるだけわかりやすく解

    高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development
  • 1