タグ

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

  • hashアルゴリズムとハッシュ値の長さ一覧

    「ハッシュ値の衝突」(コリジョン)や「データの改ざん防止」など、複数のハッシュ・アルゴリムを組み合わせるために、ハッシュ値の「長さ」と「速度の目安」一覧が欲しい。 ... ってか、ハッシュって、そんなにおいしいの?圧縮された暗号とちゃうん? TL; DR (今北産業) この記事はハッシュ関数の出力結果を桁数ごとに、まとめたものです。 ハッシュ関数の各々の「アルゴリズムが最大何文字・・の 16 進数で返してくるか」の事前確認に利用ください。 マスター、一番強いヤツをくれ。 バランス優先 👉 sha3-512(64 Byte, 128桁, 2020/12/22 現在) OS やプログラム言語間の互換性・強度・速度で、一番バランスが取れているハッシュ・アルゴリズム。使いやすさなら、SHA3-256。 互換性?ここでいう互換性とは「どの言語でも標準・・で大抵は実装しているアルゴリズム」のことです

    hashアルゴリズムとハッシュ値の長さ一覧
  • 最小完全ハッシュ関数の作り方

    ■順列型の最小完全ハッシュ関数 0から4までの5個の数字が下のように並んでいる場合を例にして説明します。 5個の数字の並べ方は5!通りありますので5!(=120)通りの並べ方の総てに対して0から119までの数値を一意に割り付けることが目的となります。 34102 ここでは左側から順に数字を見ていくことにします。最初の数字は3で残りの数字の個数は4個ですね。 この残れさた数字の個数分の総順列数は4!ですが、この数量を基数と言います。 つまり左端の数字が何であるかを完全に識別する為に最低限必要な基となる重みのことです。 従って先ず最初の数字3に基数である4!を掛け算してはじき出します。 [3]4102 → 3*4! 次に左から2番目の数字ですが、ここから先はとても注意が必要です。 2番目の数字は4で残りの数字の個数は3個です。残りの数字の個数が3個なので基数は3!になります。つまり基数が変化

  • スプレー木 - Wikipedia

    スプレー木(スプレーき、英: splay tree)は、平衡2分探索木の一種で、最近アクセスした要素に素早く再アクセスできるという特徴がある。挿入、参照、削除といった基操作を O(log(n)) の償却時間で実行できる。多くの一様でない一連の操作において、その順序パターンが未知の場合でも、スプレー木は他の探索木よりもよい性能を示す。スプレー木はダニエル・スレイターとロバート・タージャンが発明した。 2分探索木の通常のあらゆる操作は、「スプレー操作」という1つの基操作と組み合わせられる。スプレー操作とは、特定の要素が木の根に位置するよう再配置を行うことである。そのためには、まず通常の2分探索木での要素の探索を行い、次にその要素がトップになるように木の回転を行う。別の方法として、トップダウンアルゴリズムで探索と木の再配置を単一フェーズに統合することもできる。 長所と短所[編集] スプレー木

    スプレー木 - Wikipedia
  • http://www.ieice-hbkb.org/files/12/12gun_02hen_05.pdf

    dhrname
    dhrname 2015/04/26
    離散数学の「5章マトロイド理論」、5-1-2に貪欲アルゴリズムが取り上げられている
  • ORWiki

    OR学会50年の歴史の中で,OR事典の編纂・改訂は通算3度目となる.いろいろな理由からOR事典編集委員会は,「OR事典」をWebに公開するという手段をとることになった.前回はCDによる出版であった. 資料編だけは「OR事典」から切り離して,OR学会の通常のホームページの中に移すことになった.これは逆瀬川浩孝委員長のアイディアである。内容の性格上,資料追加も間違いの訂正も広報委員会の責任で簡単に出来るようになる. 前回までの学会の歴史資料はそのまま残してある.今回はデータ追加作業を基に多少の資料追加を行った.前事務局長の藤木秀夫さんには,その後の学会活動全般にわたる記録をまとめて原稿を作成してもらった.学術会議関係も藤木さんが前回の形式に習って資料原稿を作成し,FMES会長の高橋幸雄さんに目を通していただいた. 各支部から増補追加の原稿が送られてきた.Webのサンプルを見てくださいと言って

    dhrname
    dhrname 2015/04/26
    OR学会のWiki。アルゴリズムなど詳細に専門的に網羅。ありがたい
  • 4 ニュートン法(Newton's method)

    の条件を満たした場合とするのが一般的である。 は計算精度を決める定数 で、非常に小さな値である。これ以外にも計算の終了を決めることは可能なので、状況に 応じて、計算の打ち切り方法を決めればよい。実際に式(2)を 計算した結果を図4に示す。接線との交点が解に近づく様子がわか るであろう。 ニュートン法を使う上で必要な式は、式(9)のみである。計算 に必要な式は分かったが、数列がどのように真の解に収束するか考える。 と真値の差の絶対値、ようするに誤差を計算する。 を 忘れないで、テイラー展開を用いて、計算を進めると となる。番目の近似値は、番目に比べて2乗で精度が良くなるのである。これを、 二次収束と言い、非常に早く解に収束する。例えば、 の精度で近似解が得られ ているとすると、もう一回式(9)を計算するだけで、 程度の精度で近似解が得られるということである。一次収束の二分法よりも、収 束が早

    dhrname
    dhrname 2015/03/03
    ニュートン法のフロートチャート
  • レーベンシュタイン距離 - Wikipedia

    レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へんしゅうきょり、英: edit distance)とも呼ばれる。具体的には、1文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される[1]。名称は、1965年にこれを考案したロシアの学者ウラジーミル・レーベンシュタイン (露: Влади́мир Левенште́йн) にちなむ。 レーベンシュタイン距離は、同じ文字数の単語に対する置換編集に使われているハミング距離の一般化であると見なすことが可能である。レーベンシュタイン距離の更なる一般化として、例えば一回の操作で二文字を変換する等の方法が考えられる。 例[編集] 実際的な距離の求め方を例示すれば、「kitt

  • 可視化で理解するマルコフ連鎖モンテカルロ法(MCMC) - ほくそ笑む

    先日行われた第9回「データ解析のための統計モデリング入門」読書会にて、 「可視化で理解するマルコフ連鎖モンテカルロ法」というタイトルで発表させて頂きました。 発表スライドは以下です。 可視化で理解するマルコフ連鎖モンテカルロ法 from hoxo_m この発表は、みどりぼんに登場する、マルコフ連鎖モンテカルロ法(MCMC)のアルゴリズムである「メトロポリス法」と「ギブス・サンプラー」について、可視化して理解しようというお話です。 「マルコフ連鎖モンテカルロ法」というのは、字面だけ見ると難しそうですが、この発表で理解すべきポイントは、次のスライド 1枚に凝縮されています。 このことを念頭に置いて、それぞれの手法を見ていきましょう。 まず、メトロポリス法ですが、これは、 前の状態の近くの点を次の遷移先候補として選ぶ(マルコフ連鎖) そのときの確率比 r < 1 ならば確率 r で棄却する。それ

    可視化で理解するマルコフ連鎖モンテカルロ法(MCMC) - ほくそ笑む
  • 交互最小2乗法 - SICE オンライン・ハンドブック

    交互最小2乗法(alternating least squares:ALS)は、非線形パラメータ推定のための一つの有効な方法として知られている。この方法の考え方は古くは1930年代にさかのぼるが、確立されたのは、1960年代にWoldによってNIPALSとよばれる推定法が提案されたときである。 パラメータ推定においては、しばしば推定すべきパラメータの数が問題とされる。特に、データ数の増加に従って、未知パラメータの数が増加するようなモデルの場合が問題になる。例えば、このような場合には最尤推定法は複雑なものになる傾向がある。 ALSは多数の未知パラメータを推定する場合に有効な方法の一つであり、一度に多くのパラメータを推定することの困難さを回避する推定法といえる。すなわち、ALSでは、まずパラメータを複数のグループに分け、そして“一つのグループのパラメータを他のパラメータは既知として推定する”と

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

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

    ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室
  • 『MatrixFacorization を使った評価予測 ―アルゴリズムシリーズ 3―』

    お昼は昭和堂 ( 秋葉原 ) の290円弁当がデフォルトの Hattori です。安! 今回は前回に引き続き、推薦の話をしようと思います。 前回はアクセスログを使って関連するアイテム ( 芸能人 ) を推薦するという話だったのですが、今回は明示的な評価データがある場合に、それを使って、ユーザーの未評価アイテムの評価予測をするという話をします。 例えば、世の中の大半のレビューサイトにはユーザーの5つ星評価を投稿できるしくみがあります。Amazonべログ、PlayStation Network ( ゲームレビュー ) などなど例をあげればキリがありませんが、そういったユーザーがつけてくれた5つ星のデータを使って、ユーザーの好みのアイテムを推薦しようという話です。 実はこういった話は学術的には典型的なテーマになっていて、手法もほぼ確立されています。具体的には "協調フィルタリング" という

    『MatrixFacorization を使った評価予測 ―アルゴリズムシリーズ 3―』
  • 画像平面分割の高速化(1)【閃光的網站・弛緩複合体 -Review Division-】

    ココとかココとかココとかココとか、皆さんもそうでしょうが、ご多分に漏れずワタクシも萌えたクチです。 wonderfl 上で、fumix さんが「フラクタルで画像を描画する」を、そのfork として ep91ckok さんが「forked from: フラクタルで画像を描画する」を投稿なさいましたが、この平面分割アルゴリズム、さらに高速化できないもんだろうかといろいろ考えておりました。 リアルタイムレベルの速度にできると嬉しいなあ、というゴール設定をしてきましたが、なんとかそれらしい速度で描画できるようになったので、ここで記事としてまとめておきます。 なんとかそれらしい速度で描画できるようになったのが↓ まずはおさらい。 このアルゴリズムは BitmapData を対象とした再帰処理なわけですが、その概略は以下のようになっています。 BitmapData の指定領域の全ピクセルの輝度の標準偏

  • ごまケーキ ラスター画像からベクター画像を作成するアルゴリズム

    P2VJ を公開してから1年以上経ったので、ラスター画像からベクター画像を作成するアルゴリズムの解説など 例なのでちょっと嘘が入っていますが、おおむねこんな感じで実現できます。 まずこのようなラスター画像があったとします。 多くのグラフィックスソフトウェアでは、3次のベジェ曲線が採用されています。数式で書くとこのようになります。 p = P0*(1-t)^3+3*P1*(1-t)^2*t+3*P2*(1-t)*t^2+P3*t^3; ...(1) 2次元画像のベジェ曲線を実現する場合、X 座標と Y 座標それぞれについて計算する必要があります t は、0 以上 1 以下の実数で、ベジェ曲線は t を 0 から 1 まで動かして得られた点 p を直線で繋いだものとして表されます。 このあたりの考え方は武蔵フォント武蔵システムさんのサイトを参考にさせていただきました。 http://opent

  • PathFinding.js

    Click within the white grid and drag your mouse to draw obstacles. Drag the green node to set the start position. Drag the red node to set the end position. Choose an algorithm from the right-hand panel. Click Start Search in the lower-right corner to start the animation.

    dhrname
    dhrname 2013/04/26
    A*(エースター)など、アルゴリズムって大事だよということが良くわかる。スタートボタンは右下の方
  • 中学生にもわかるウェーブレット行列 - アスペ日記

    id:echizen_tm さんの記事「ウェーブレット木の効率的で簡単な実装 "The Wavelet Matrix"」から始まったウェーブレット行列ブームから半年以上が過ぎ、すでに枯れた技術として確立されつつある感があります。 …嘘です。 日以外ではあんまり来ていません。 理由としては、やはりアルファベット圏では単語境界が明確であるため、こちらの記事で書かれているような「キーワード分割の難易度」といったことがあまり問題にならないということがあるかもしれません。 まあ、そういうわけで局所的に来ているウェーブレット行列ですが、日語をはじめとする単語境界のない言語圏にとっては重要なネタであると思うため、解説記事を書き直して*1みようと思います。 ウェーブレット行列でできること 主となる操作は、文字列に対する 定数時間の rank() と select()*2 です。 rank() は、「文

  • 衝突判定のアルゴリズム

    2 つの図形の衝突判定 (コリジョン判定) のアルゴリズムをまとめます。 図が用意できておらず見難いですが、ご勘弁を。 太字はベクトルを表します。 線分と三角形 線分を p+tl、 三角形を (1-u-v)q0+uq1+vq2 で表します (t, u, v は媒介変数)。 Tomas Moller のアルゴリズム を Cramer の公式で解きます。 0.0≦t≦1.0, 0.0≦u, 0.0≦v, u+v≦1.0 なら交差と判定します。 半直線と三角形 線分と三角形の場合と同様の計算を行います。 0.0≦t, 0.0≦u, 0.0≦v, u+v≦1.0 なら交差と判定します。 点と球 点と球の中心の距離の 2 乗を求めて、 その長さが球の半径の 2 乗以下なら交差と判定します。 線分と球 線分の始点から終点へのベクトルを v、 線分の始点から球の中心へのベクトルを c とします。 v・c

    衝突判定のアルゴリズム
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
  • 類似画像検索システムを作ろう - 人工知能に関する断創録

    C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。 指定した画像と類似した画像を検索するシステムは類似画像検索システムと言います。GoogleYahoo!のイメージ検索は、クエリにキーワードを入れてキーワードに関連した画像を検索しますが、類似画像検索ではクエリに画像を与えるのが特徴的です。この分野は、Content-Based Image Retrieval (CBIR)と呼ばれており、最新のサーベイ論文(Datta,2008)を読むと1990年代前半とけっこう昔から研究されてます。 最新の手法では、色、形状、テクスチャ、特徴点などさまざまな特徴量を用いて類似度を判定するそうですが、今回は、もっとも簡単な「色」を用いた類似画像検索を実験してみます

    類似画像検索システムを作ろう - 人工知能に関する断創録
  • こつこつアルゴリズム(Spigot Algorithm)

    概要 円周率の値を計算するためには、多倍長計算をしなければならないと思われていました。ところが、こつこつアルゴリズムを用いると、特別に多倍長計算をしなくてもよいことが示されました。 最初に、こつこつアルゴリズムの概要について示します。このアルゴリズムでは、次の級数を基にして計算します。 ここで、divを整数商、modを剰余としますと、(例えば、となります) が成り立ちます。こつこつアルゴリズムでこの関係をどう用いるか、最初にネイピア数を例に、示すことにします。まず、小数点以下1桁目の1を抽出します。式中の青色の部分にご注目ください。 これで、7が抽出できました。引き続き、小数点以下2桁目の1を抽出してみます。 この手続きを繰り返すことにより、多倍長計算をせずに小数点以下の数を求めることができるわけです。実際には、繰り上がりの処理等をしなければなりませんが、質はここで述べた計算にあります。

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

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