タグ

algorithmに関するarikuiのブックマーク (25)

  • 確率的データ構造を使って巨大な集合を定数メモリで近似しよう

    巨大な集合に対して、定数メモリ&定数時間で近似値を計算できる、確率的データ構造の紹介スライドです。 スライドは、株式会社エフ・コードの社内勉強会(2018/08/30)にて使用されたものです。

    確率的データ構造を使って巨大な集合を定数メモリで近似しよう
  • アルゴリズム図鑑:iOS & Androidアプリ

    What are "Algorithms"? アルゴリズム”とは広義には「ある問題を解くための一定の手続き」を意味するもので、私達の生活のさまざまな場面を支える知恵の結晶とも言えます。 「ソート」や「リスト探索」などの基的なアルゴリズムはもちろん、「暗号化」「セキュリティ」などの身近なものも満載。スマートフォンとタブレットの両方に対応した「アルゴリズム図鑑」なら、いつでもどこでもアルゴリズムを学ぶことができます。 さあ、アルゴリズムの世界に旅立ちましょう!

    アルゴリズム図鑑:iOS & Androidアプリ
  • JavaScriptの文字列を反転する10の方法とそのパフォーマンス - 風と宇宙とプログラム

    はじめに JavaScriptで文字列を反転する10の方法を(無理矢理?)思いついたので、ちょっと簡単に紹介したい。また、それぞれについて、各ブラウザでパフォーマンスを測定してみたので、その結果も合わせて載せる。 文字列のStringオブジェクトには、部分切り出し(substring, slice)や置換(replace)、連結(concat)など豊富な機能があるのに、反転(reverse)機能はない。Arrayのreverseはあるのに、Stringのreverseがないのはどうしてなのだろうか。 各ブラウザとそのバージョンは以下の通り: Chrome Firefox Opera Safari IE 13.0.782.112 m 6.0 11.50 5.1(7534.50) 8.0.7600.16335 rev01: C言語的発想 空の配列を作って、そこに元の文字列の後ろから1文字つづ入

    JavaScriptの文字列を反転する10の方法とそのパフォーマンス - 風と宇宙とプログラム
  • データマイニングで使われるトップ10アルゴリズム - データサイエンティスト上がりのDX参謀・起業家

    2006年のデータマイニング学会、IEEE ICDMで選ばれた「データマイニングで使われるトップ10アルゴリズム」に沿って機械学習の手法を紹介します(この論文は@doryokujin君のポストで知りました、ありがとうございます!)。 必ずしも論文の内容には沿っておらず個人的な私見も入っていますので、詳細は原論文をご確認下さい。また、データマイニングの全体観をサーベイしたスライド資料がありますので、こちらも併せてご覧下さい。 データマイニングの基礎 View more presentations from Issei Kurahashi 1. C4.5 C4.5はCLSやID3といったアルゴリズムを改良してできたもので、決定木を使って分類器を作ります。決定木といえばCARTが良く使われますが、CARTとの違いは以下のとおりです。 CARTは2分岐しかできないがC4.5は3分岐以上もできる C

    データマイニングで使われるトップ10アルゴリズム - データサイエンティスト上がりのDX参謀・起業家
  • GeoHashのdecodeのアルゴリズムの解説します & ScalaのGeoHashライブラリを作ってみました(仮) - ( ꒪⌓꒪) ゆるよろ日記

    GeoHash(http://en.wikipedia.org/wiki/Geohash)は、緯度経度を文字列のハッシュで表現する仕様です。 GeoHashにより表現された緯度経度の情報は、一つの文字列で緯度と経度という2次元の情報に加えて精度も表すことができるという特徴を持っています。 例えば、どうでしょうバカの聖地である北海道札幌市の平岸高台公園は、北緯43.025東経141.377ですが、これをGeoHashで表現すると、"xpssc0"となります。 この"xpssc0"というGeoHash表現は、「北緯43.0224609375から43.0279541015625の間で、東経141.3720703125から141.383056640625の矩形範囲」であり、座標はこの矩形範囲の中心点になります。 @masuidrive blogさんの緯度経度を文字列で表すGeoHash - @ma

    GeoHashのdecodeのアルゴリズムの解説します & ScalaのGeoHashライブラリを作ってみました(仮) - ( ꒪⌓꒪) ゆるよろ日記
  • 棒倒し法による自動生成の迷路 - 素人がプログラミングを勉強していたブログ

    JavaScriptによる自動生成迷路に置いた。 function rand(n) { return Math.floor(Math.random() * n); } const width = 33, height = 33; var wall = (1 << (width - 2)) - 1 << 1; var table = [1 << (width - 2)]; var stripe = 0; var i, j; for (i = 1; i < width; i += 2) { stripe |= 1 << i; } for (i = 1; i < height - 1; i++) { table[i] = i & 1 ? wall : stripe; } table[height - 1] = 2; const top = 0, right = 1, bottom = 2, le

    棒倒し法による自動生成の迷路 - 素人がプログラミングを勉強していたブログ
  • 今日の井原 - 文章要約プログラムを書いてみよう!その2 〜TF/IDFといっしょ!〜 

    Home > December 2003 > ʸ�������ץ��������񤤤Ƥߤ褦�� �����Σ�����TF/IDF�Ȥ��ä��硪���� December 19, 2003 ʸ�������ץ��������񤤤Ƥߤ褦�� �����Σ�����TF/IDF�Ȥ��ä��硪���� �����Ƥ��ơ������Ǥ�������³������ ���ͤ��񤤤�ʸ�������ץ����������󤷤ᤷ���������Τ��Ȥ͡ˡ��������ˤ�ô�äƤ����Τ���TF/IDF�٤Ȥ������르�ꥺ�����������Ϥ����ˤĤ��Ʋ��⤷�ƹԤ����������Ĥ�̾�������Τ����Ǥʤ��������񤷤������ȻפäƤ��ޤ������ºݤˤϴʷ��ǰ����䤹�����Τ���ľ��Ū�Ȥ������ȤäƤ���Ũ�ʥ��르�

  • [ActionScript 3.0] Fisher-Yatesアルゴリズムの可視化│miscellaneous

    要素をランダムに並べ替えるFisher-Yatesというアルゴリズムを可視化してみた。 下のウィンドウをマウスクリックすると並び替えの様子がアニメーションされます。 後ろから走査していって、自分より前のどれかと交換していく訳ですね。 計算量はO(n)です。 package{ import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import caurina.transitions.Tweener; [SWF(width="400", height="200",backgroundColor="0xffffff")] public class FisherYates2 extends Sprite{ private var balls:Array = []; priv

  • ベクトル量子化 - デー

    はてブのコメントを見たのと、僕もbag of keypoints関係の論文を見たときに一瞬で分かったつもりになってそれを信じ続けていたけど不安になったのでググったところ別に間違ってもいなさそうだったので、ここでたまに書いてるベクトル量子化とは何かという話とそれをなぜ使っているのかという話を。(僕なりに) 僕がベクトル量子化と言ったときには、単純には 入力ベクトル→クラスラベル(スカラ) への変換を指している。あらかじめ、K個のクラス(グループ)を定義しておいて、入力ベクトルがどのクラスに属するか推定を行って、属するクラスの番号に変換してしまう。これによって、どんな入力ベクトルも(int)1〜Kのスカラ値に変換できる、というかかなり大雑把だけどそういうことにしてしまう。 具体的な例としては、 まず入力ベクトルとして想定されるデータを適当に集めてそれをk-meansでクラスタリングする。データ

    ベクトル量子化 - デー
  • プロシージャル技術ネタに関するページ収集中 - ABAの日誌

    ゲームにおける自動生成技術、いわゆるプロシージャルに関するページをいまさらのように収集している。 次世代ゲームにおける自動生成技術 (http://www.t-pot.com/program/144_GameAISeminar6/index.html) 「ゲームAI連続セミナー第6回」のレポート記事。プロシージャルに関する概観をつかむのに良い記事。 Procedural generation (wikipedia:en:Procedural_generation) WikipediaのProcedural generation項。プロシージャルを使ったゲームの実例についてよくまとまっている。 Procedural Content Generation Wiki (http://pcg.wikidot.com/) Procedural content generation (PCG)に関する

    プロシージャル技術ネタに関するページ収集中 - ABAの日誌
  • 凝縮黒ウコンDEXに増大効果なし?口コミに隠れた嘘を一刀両断!

    「昔から自分のナニのサイズが小さいのがコンプレックスになっています」 コンプレックスになったきっかけは中学の時の修学旅行です。 それまで特に気にならなかったのですが、お風呂の時間に友人のを見て、自分が小さい方なことに気が付きました。 それからは恥ずかしく思うように。 それから10年近く経ちましたが、特にサイズは変わっていないです。 大人になってふと思ったんです。 コンプレックスを解消する方法って無いのかなと。 そして調べてみたら、最近は色々な方法があることを知りました。 特に気になったのは【凝縮黒ウコンDEX】という増大サプリメントです。 全体的に評価も高くて、レビューを読んでいてもかなり期待できるなと思いました。 ですが初めてのことなので、自分に効果があるのかという不安もあります。 なので凝縮黒ウコンDEXについて詳しく調べてみたいなと。 調べ尽くして、使いたいという気持ちが強ければ注文

    凝縮黒ウコンDEXに増大効果なし?口コミに隠れた嘘を一刀両断!
  • [プログラミング] ビット並列アルゴリズムを使った編集距離 - tsubosakaの日記

    ふと、ビット並列アルゴリズムを使った編集距離を計算するアルゴリズムを書きたくなったので書いてみた。 まず、通常の編集距離であるLevenshtein Distanceを求めるアルゴリズムは以下のように書ける int levenshteinDistance(String A, String B) { int m = A.length(); int n = B.length(); int dp[] = new int[n + 1]; int next[] = new int[n + 1]; for (int i = 0; i <= n; i++) dp[i] = i; for (int i = 1; i <= m; i++) { next[0] = i; for (int j = 1; j <= n; j++) { if (A.charAt(i - 1) == B.charAt(j - 1))

    [プログラミング] ビット並列アルゴリズムを使った編集距離 - tsubosakaの日記
  • C++: 編集距離を求めるアルゴリズム

    編集距離(edit distance)とは二つの文字列がどの程度異なっているかを示す数値であり、レーベンシュタイン距離(Levenshtein distance)を指すことが多い。文字の挿入、削除、置換それぞれを一つの操作として必要な操作の最小数を求めるものだ。例えば、kittenとsittingの編集距離を求める場合、下記のように3回の操作でkittenをsittingに変更できるので編集距離は3となる。 1. sitten (k を s に置換) 2. sittin (e を i に置換) 3. sitting (g を挿入) そこで今回は編集距離を求める複数のアルゴリズムについてC++で実装してみた。 動的計画法 編集距離を求めるもっとも一般的なアルゴリズムは、動的計画法(dynamic programming)だろう。計算時間はO(mn)であり、手軽だ。C++で書いたコードを下に示

  • Diff algorithm - 枕を欹てて聴く

    id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を... Rubyでlevenshtein距離を見て以来, 個人的にdiffブームが来ていた. 計算量O(ND) / O(NP)のalgorithmなどがあるのは知っていたが, 論文(英語)および, 解説のみ, またはソースコードのみなど分かれているものが多く, algorithmに疎い自分には理解するのに大変時間がかかってしまった. しかしやっとわかったので, 解説+JS実装してみる. 解説とソースコードがセットだと, 多少はわかりやすくなるかと... 自分は正直これくらい細かく言われないとすぐにはわかんない人なので(the O(ND)だけ

    Diff algorithm - 枕を欹てて聴く
  • ボロノイ図いろいろ - kaisehのブログ

    Webエンジニアバトルロワイヤルでは、平面分割手法としてボロノイ図と「疑似築道法」というものをデモしたんですが、そのとき説明に使った4種類の2次元ボロノイ図を以下に載せます。 通常のボロノイ図 「どの母点が最も近くにあるか」にもとづいて平面を分割します。ボロノイ辺は母点の垂直二等分線になります。 マンハッタン距離にもとづくボロノイ図 ユークリッド距離の代わりにマンハッタン距離を使うと、見た目ががらっと変わって、路線図や天気予報のときの都道府県図っぽくなります。 加法的重み付きボロノイ図 (Additively Weighted Voronoi Diagram) 母点にそれぞれ重みを設定して、ユークリッド距離に重みを加算したものを距離関数としてボロノイ図を作ると、ボロノイ領域を膨らませたり縮ませたりできます。ボロノイ辺は双曲線になります。 加法的重み付きべき乗ボロノイ図 (Additivel

    ボロノイ図いろいろ - kaisehのブログ
  • はてなブログ | 無料ブログを作成しよう

    台北市立動物園と迪化街めぐり 子連れ台湾#5 年越し台湾旅行5日目、レジャーや友人との事を楽しむ日です。前日の様子はこちら www.oukakreuz.com 台北市立動物園へ パンダ館 パンダが見られるレストラン 迪化街へ 林茂森茶行でお茶を購入 小花園で刺繍グッズを購入 黒武士特色老火鍋で夕 台北市立動物園へ 松…

    はてなブログ | 無料ブログを作成しよう
  • アルゴリズムイントロダクション第24章 単一始点最短路問題 - naoyaのはてなダイアリー

    アルゴリズムイントロダクションの輪講で、第24章の単一始点最短路問題を担当しました。発表に使った資料を以下にアップロードしました。 http://bloghackers.net/~naoya/ppt/090622_shortest_paths.ppt SlideShare はこちら。フォントの関係でグラフが崩れたりしているので、ppt で参照した方が見やすいかと思います。 Introduction to Algorithms#24 Shortest-Paths ProblemView more OpenOffice presentations from Naoya Ito. 単一始点最短路問題は、重み付き有向グラフの最短路木を求める問題です。各頂点に最短路重みを記録するのですが、はじめに各頂点の重みを∞として、「緩和」と呼ばれる操作により徐々に頂点の重みを最短路重みに近づけていく、というの

    アルゴリズムイントロダクション第24章 単一始点最短路問題 - naoyaのはてなダイアリー
  • 適切なクラスタ数を推定するX-means法 - kaisehのブログ

    K-means法によるクラスタリングでは、あらかじめクラスタ数Kを固定する必要があります。HatenarMapsでもK-means法を使っているのですが、クラスタ数は(特に根拠もなく)200個に決め打ちになっていました。 これに対して、X-means法というK-means法の拡張が提案されていることを知りました。X-means法を使うと、データに応じて最適なクラスタ数を推定できます。 K-means and X-means implementations http://www-2.cs.cmu.edu/~dpelleg/download/xmeans.pdf X-means法の考え方は、K=2で再帰的にK-means法を実行していくというもので、クラスタの分割前と分割後でBIC(ベイズ情報量規準)を比較し、値が改善しなくなるまで分割を続けます。 調べたところ、Javaのデータマイニングツー

    適切なクラスタ数を推定するX-means法 - kaisehのブログ
  • ルート探索│miscellaneous

    青い矩形を障害物と見立て、左上から右下までの障害物に交差しないルートを求めています。 青い矩形はマウスドラッグで移動できます。(矩形同士が重なり合うケースは考慮されてませんので、 そういう操作をした場合は結果もおかしくなる可能性があります) 探索手順 1. 矩形の頂点を抽出 2. 互いに見えている(矩形の辺と交差していない)頂点同士を見つけてグラフを構築 3. ダイクストラ法で最短ルートを検索 ダイクストラによるルート探索アルゴリズムは少し手抜きあり。 参考エントリ:[ActionScript 3.0] 四分木からグラフを構築して、最短経路を探索する。 package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.filters.DropShadowFilter; [SW

  • http://ja.doukaku.org/276/