タグ

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

  • PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記

    メルセンヌ・ツイスターと似て非なるアルゴリズムが実装されていたことが発覚して話題の PHP の mt_rand 関数の品質を統計的に検証しました.果たして,PHP の「壊れた」mt_rand は安心して使うことができるのでしょうか……? ちなみに,結論から言うと,PHP の壊れた mt_rand は,(少なくともこのテストの範囲では)家メルセンヌ・ツイスターと遜色ない品質を持っているようです.ただし,最後に PHP の乱数の別の懸念点についても紹介します. 壊れた mt_rand とは PHP の mt_rand は,ドキュメントによると,有名な乱数生成アルゴリズム「メルセンヌ・ツイスター」を利用して高品質の乱数を生成する関数です.ところが,どうやら一部では知られていたこととして,PHP の mt_rand の実装にはバグがあり,家メルセンヌ・ツイスターと挙動が一致していませんでした.

    PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記
  • 量子コンピュータ・量子情報の講義ノートPDF。 量子計算や量子通信の理論を,基礎から応用まで勉強するための教科書や資料 - 主に言語とシステム開発に関して

    講義ノートの目次へ 量子コンピュータ・量子計算について勉強するための,講義ノートや教科書PDF。 基礎理論から,詳しく独学に使えるノートを集めた。 量子情報処理では「エンタングルメント」などの量子力学的なしかけを使い, 量子計算のハードウェア(=量子コンピュータ)を実現。 その上で量子暗号・量子フーリエ計算などの具体的なアルゴリズムを実行する。 ただし従来のコンピュータと違い, ハードとソフトがほぼ分離されていないので注意。 量子コンピュータは,世間に与えるインパクトが非常に大きいため, 専門外の一般向けの資料も多い。 ここでは下記の分類にしたがってPDFを掲載する。 (1)数式を使って,しっかり学習するための資料 (2)数式を使わない,一般向けの解説資料 量子計算の基礎となる量子力学はこちらのノート, 光学・量子光学はこちらのノート, 情報と暗号の理論はこちらのノート,線形代数はこちらの

    量子コンピュータ・量子情報の講義ノートPDF。 量子計算や量子通信の理論を,基礎から応用まで勉強するための教科書や資料 - 主に言語とシステム開発に関して
  • トライ (データ構造) - Wikipedia

    "A", "to", "tea", "ted", "ten", "i", "in", "inn" というキー群によるトライ木 トライ木(英: trie)やプレフィックス木(英: prefix tree)とは、順序付き木の一種。あるノードの配下の全ノードは、自身に対応する文字列に共通するプレフィックス(接頭部)があり、ルート(根)には空の文字列が対応している。値は一般に全ノードに対応して存在するわけではなく、末端ノードや一部の中間ノードだけがキーに対応した値を格納している。2分探索木と異なり、各ノードに個々のキーが格納されるのではなく、木構造上のノードの位置とキーが対応している。 キーが文字列である連想配列の実装構造としても使われる。右図の例では、ノードを表す丸の中にキーが書かれ、連想される値がその下に書かれている。値が書かれていないノードはキー文字列の途中までにしか対応していない。各英単語

    トライ (データ構造) - Wikipedia
  • [CEDEC 2014]「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」 - 4Gamer.net

    [CEDEC 2014]ナムコ作品で見る乱数の歴史。「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」レポート ライター:箭進一 神奈川のパシフィコ横浜で行われた,ゲーム開発者向けイベントCEDEC 2014の最終日である2014年9月4日,「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」という講演が行われた。 登壇したバンダイナムコスタジオ HE技術部 加来量一氏 この講演のユニークな点は,旧ナムコの作品を「乱数」という視点から振り返るということだ。バンダイナムコスタジオ HE技術部のプログラマーである加来量一氏は,旧ナムコの初期作品50を解析し,それぞれの時代でどのような乱数が使われていたかを特定した。そこから見えてくる乱数技術改良の歴史を見ていくというのが,講義の主旨なのである。 1980年代のナムコアーケ

    [CEDEC 2014]「ゲーム世界を動かすサイコロの正体 〜 往年のナムコタイトルから学ぶ乱数の進化と応用」 - 4Gamer.net
  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

    ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
  • ニュートン法 - Wikipedia

    数値解析の分野において、ニュートン法(ニュートンほう、英: Newton's method)またはニュートン・ラフソン法(英: Newton–Raphson method)は、方程式系を数値計算によって解くための反復法による求根アルゴリズムの1つである。対象とする方程式系に対する条件は、領域における微分可能性と2次微分に関する符号だけであり、線型性などは特に要求しない。収束の速さも2次収束なので古くから数値計算で使用されていた。名称はアイザック・ニュートンとジョゼフ・ラフソンに由来する。 ニュートン法の一手順の概念図 (青い線が関数 f のグラフで、その接線を赤で示した). xn よりも xn+1 のほうが、 f(x)=0 の解 x についてのよりよい近似を与えている. この方法の考え方は以下のようである:まず初めに、予想される真の解に近いと思われる値をひとつとる。次に、そこでグラフの接線

    ニュートン法 - Wikipedia
  • ブルームフィルタ - Wikipedia

    この項目では、確率的データ構造について説明しています。画像にぼかし効果を付加する画像フィルタについては「川瀬のブルームフィルター」をご覧ください。 ブルームフィルタ(英語: Bloom filter)は、1970年に Burton H. Bloom が考案した空間効率の良い確率的データ構造であり、あるデータが集合の要素である(集合に含まれている)かどうかの判定に使われる。ただし判定は正確ではなくて、含まれていないのに含まれていると誤って判定すること偽陽性(false positive)の可能性がある。しかし含まれているものを含まれていないと誤判定すること偽陰性(false negative)はない。なお集合に要素を追加することはできるが、集合から要素を削除することはできない(ただし、拡張をした counting filter であれば削除もできる)。集合に要素を追加していくにつれて偽陽性の

    ブルームフィルタ - Wikipedia
  • 次元の呪い - Wikipedia

    英語版記事を日語へ機械翻訳したバージョン(Google翻訳)。 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。 翻訳後、{{翻訳告知|en|Curse of dimensionality|…}}をノートに追加することもできます。 Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指

  • モンテカルロ法 - Wikipedia

    モンテカルロ法(モンテカルロほう、(英: Monte Carlo method、MC)とはシミュレーションや数値計算を乱数を用いて行う手法の総称。元々は、中性子が物質中を動き回る様子を探るためにスタニスワフ・ウラムが考案しジョン・フォン・ノイマンにより命名された手法。カジノで有名な国家モナコ公国の4つの地区(カルティ)の1つであるモンテカルロから名付けられた。ランダム法とも呼ばれる。 計算理論[編集] 計算理論の分野において、モンテカルロ法とは誤答する確率の上界が与えられる乱択アルゴリズム(ランダム・アルゴリズム)と定義される[1]。一例として素数判定問題におけるミラー-ラビン素数判定法がある。このアルゴリズムは与えられた数値が素数の場合は確実に Yes と答えるが、合成数の場合は非常に少ない確率ではあるが No と答えるべきところを Yes と答える場合がある。一般にモンテカルロ法は独立

    モンテカルロ法 - Wikipedia
  • B+木 - Wikipedia

    B+木(英: B+ tree)は、キーを指定することで挿入・検索・削除が効率的に行える木構造の一種である。動的な階層型インデックスであり、各インデックスセグメント(「ブロック」などと呼ばれる。木構造におけるノードに相当)にはキー数の上限と下限がある。B+木はB木とは異なり、全てのレコードは木の最下層(葉ノード)に格納され、内部ノードにはキーのみが格納される。 B+木は、特にブロック型記憶装置での効率的データ検索に効果を発揮する。ブロックサイズ の記憶装置があるとき、 の倍数個のキーを格納するB+木は2分探索木に比較して非常に効率が良い(2分探索木はブロック型でない記憶装置に適している)。 ReiserFS(UNIX、Linux)、XFS(IRIX、Linux)、JFS2(AIX、OS/2、Linux)、HammerFS(DragonFly BSD)、NTFSといったファイルシステムはいずれ

    B+木 - Wikipedia
  • デジタル署名 - 暗号理論教室

    (vk, sk) ← Gen(1n) σ ← Sign(sk, m) 0/1 ← Verify(vk, m, σ).

    デジタル署名 - 暗号理論教室
  • ハッシュ木 - Wikipedia

    バイナリハッシュ木の例 暗号理論および計算機科学において、ハッシュ木(Hash tree, ハッシュツリー)またはマークル木(Merkle tree)とは、全ての葉ノードにデータブロックのハッシュ値がラベル付けされ、内部ノードには、その子ノードのラベルのハッシュ値がラベル付けされている木構造である。ハッシュ木を使用すると、大規模なデータ構造の内容を、効率的かつ安全に検証することができる。このデータ構造はハッシュリストとハッシュチェインの組み合わせでできている。 特に、ハッシュ関数にTigerを使用したものはTiger TreeまたはTiger Treeハッシュとも呼ばれる。 ハッシュ木は、単独または複数のコンピュータで保存・処理・転送される任意のデータの検証処理に利用できる。現在の主な用途としては、Peer to Peerネットワークにおいて他のピアから受信したデータブロックが破損したり改

    ハッシュ木 - Wikipedia
  • Random forest - Wikipedia

    英語版記事を日語へ機械翻訳したバージョン(Google翻訳)。 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。 翻訳後、{{翻訳告知|en|Random forest|…}}をノートに追加することもできます。 Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指針についての説明があ

    Random forest - Wikipedia
  • 悪魔の証明に挑む計算複雑性理論のわかりやすい(つもり)の解説 - ブログ執筆中

    PとNPと聞くと胃が痛くなる人はどれくらいいるでしょうか。あ、俺もそうです。 一般にないことを証明するのは非常に困難だ。それを人々は悪魔の証明と呼ぶ。 悪魔の証明とは、「ある事実・現象が『全くない(なかった)』」というような、それを証明することが非常に困難な命題を証明すること。例えば「アイルランドに蛇はいる」ということを証明するとしたら、アイルランドで蛇を一匹捕まえて来ればよいが、「アイルランドに蛇はいない」ということの証明はアイルランド全土を探査しなくてはならないので非常に困難、事実上不可能であるというような場合、これを悪魔の証明という。 http://d.hatena.ne.jp/keyword/%B0%AD%CB%E2%A4%CE%BE%DA%CC%C01 ある問題を現実的な計算量で解くアルゴリズムが存在するか否か―存在しないことが判明してしまえば、その問題の効率的なアルゴリズムを探

    悪魔の証明に挑む計算複雑性理論のわかりやすい(つもり)の解説 - ブログ執筆中
  • 隠れマルコフモデル - Wikipedia

    隠れマルコフモデル(かくれマルコフモデル、英: hidden Markov model; HMM)は、確率モデルのひとつであり、観測されない(隠れた)状態をもつマルコフ過程である。 概要[編集] 同じマルコフ過程でも、隠れマルコフモデルより単純なマルコフ連鎖では、状態は直接観測可能であり、そのため、状態の遷移確率のみがパラメータである。一方、隠れマルコフモデルにおいては、状態は直接観測されず、出力(事象)のみが観測される。ただしこの出力は、モデルの状態による確率分布である。従って、ある隠れマルコフモデルによって生成された出力の系列は、内部の状態の系列に関する何らかの情報を与えるものとなる。「隠れ」という語はモデルが遷移した状態系列が外部から直接観測されないことを指しており、モデルのパラメータについてのものではない。たとえパラメータが既知であっても隠れマルコフモデルと呼ばれる。隠れマルコフモ

    隠れマルコフモデル - Wikipedia
  • コンピュータを進化させてきた偉大なるアルゴリズムまとめ

    By Kai Schreiber IT技術の進化のスピードには目を見張るものがありますが、それを支えているのはアルゴリズムと呼ばれる処理方法(技術的アイデア)です。さまざまなアルゴリズムの中でも、コンピュータの進化に革命的な影響をもたらしたとされる偉大なアルゴリズムは以下の通りです。 Great Algorithms that Revolutionized Computing http://en.docsity.com/news/interesting-facts/great-algorithms-revolutionized-computing/ ◆ハフマン符号(圧縮アルゴリズム) Huffman coding(ハフマン符号)は、1951年にデービッド・ハフマン氏によって開発されたアルゴリズム。頻出頻度の大小によって対戦するトーナメントツリーを考えて、ブロックごとに0と1の符号をもたせる

    コンピュータを進化させてきた偉大なるアルゴリズムまとめ
  • 最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ

    動的計画法とメモ化再帰 今回は、非常によく用いられるアルゴリズムである、「動的計画法」「メモ化再帰」について説明します。この2つはセットで覚えて、両方使えるようにしておくと便利です。 なお、メモ化再帰に関しては、第5・6回の連載の知識を踏まえた上で読んでいただけると、理解が深まります。まだお読みになっていない方は、この機会にぜひご覧ください。 中学受験などを経験された方であれば、こういった問題を一度は解いたことがあるのではないでしょうか。小学校の知識までで解こうとすれば、少し時間は掛かるかもしれませんが、それでもこれが解けないという方は少ないだろうと思います。 この問題をプログラムで解こうとすると、さまざまな解法が存在します。解き方によって計算時間や有効範囲が大きく変化しますので、それぞれのパターンについて考えます。 以下の説明では、縦h、横wとして表記し、プログラムの実行時間に関しては、

    最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった (1/5) - ITmedia エンタープライズ
  • 動的計画法が苦手な人が、動的計画法が超苦手な人へアドバイスしてみる - じじいのプログラミング

    この記事は、Competitive Programming Advent Calendar Div2013(http://partake.in/events/3a3bb090-1390-4b2a-b38b-4273bea4cc83)の8日目の記事です。 動的計画法(Dynamic Programming, DP)についての記事です。 12/9 前編にサンプルプログラム(http://ideone.com/2B7f4v)を追加しました 12/11 前編の図2つを差し替えました。 はじめに まずは、やネットの資料で、動的計画法についてのすばらしい解説はいろいろありますので、まずはそれらを参考に。 プログラミングコンテストでの動的計画法 http://www.slideshare.net/iwiwi/ss-3578511 最強最速アルゴリズマー養成講座:アルゴリズマーの登竜門、「動的計画法・メ

    動的計画法が苦手な人が、動的計画法が超苦手な人へアドバイスしてみる - じじいのプログラミング
  • 分割統治法 - Wikipedia

    この項目では、アルゴリズムについて説明しています。政治歴史分野での分割統治については「分割統治」をご覧ください。 分割統治法(ぶんかつとうちほう、英: divide-and-conquer method)は、そのままでは解決できない大きな問題を小さな問題に分割し、その全てを解決することで、最終的に最初の問題全体を解決する、という問題解決の手法である。 分割統治法を擬似コードによって表現すると、以下のような再帰呼出しを使ったものとなる。また、分割統治法になっている何らかのアルゴリズムを実装すると、その基的な骨組みがこのようになる。 function conquer(x) is if xは簡単にconquerできる then return conquerの結果 else (x1, x2, ...) := divide(x) // 複数の小さな副問題に分割 (y1, y2, ...) :=

    you21979
    you21979 2013/12/07
  • トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター

    トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター:最強最速アルゴリズマー養成講座(1/4 ページ) プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。 まだまだ活用可能な探索 前回の「知れば天国、知らねば地獄――『探索』虎の巻」で、「探索」という概念の基礎について紹介しました。すでに探索についてよく理解している方には物足りなかったかと思いますが、「問題をグラフとしてうまく表現し、そのグラフを効率よく探索する」というアルゴリズマー的な思考法がまだ身についていなかった方には、得るものもあったのではないでしょうか。 前回は、「幅優先探索」と「深さ優先探索」という、比較的単純なものを紹介しましたが

    トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター