タグ

algorithmに関するnagachikaのブックマーク (60)

  • 株式会社ALBERT(レコメンドエンジン)

    データ分析から導き出されたインサイト無しにAI人工知能)の活用は始まりません。私たちは、各業界知識とデータ・アナリティクス技術を駆使しデータドリブン経営を強力に支援します。 データ、アナリティクス、AIは企業にとって競合他社との差別化を図るかつてないほど大きな要因になっています。今日の経営幹部が効率を向上しながら新たな収益源を開拓し、新しいビジネスモデルをタイムリーに構築する方法を模索する中、価値を生み出し成長を続ける企業には「データ活用」という共通項があります。私たちは、無数のデータから企業にとって当に必要なデータを活用するための方法を知っています。 将来を見据えたオペレーション体制を備えている企業の半数以上(52%)は、すでにデータとアナリティクスを大規模に活用しています。データとAIに関する取り組みをビジネス戦略に沿って実施することで投資利益率を迅速に最大化し、最終的にはAIをビ

    株式会社ALBERT(レコメンドエンジン)
  • ソート済の整数列を圧縮する件

    圧縮されたソート済の整数列ってのは汎用的なデータ構造で、たとえば検索エンジンの転置インデックスとか、いろんなところで使うわけです。で、検索エンジンの場合は速度重要なので、PForDeltaとか様々なデータ構造が研究されてる。 一方、H2O には、ブラウザキャッシュに載ってない js や css をサーバプッシュする仕組み「cache-aware server push」があって、何がキャッシュされているか判定するためにブルームフィルタを全ての HTTP リクエストに含める必要がある。 で、ブルームフィルタを圧縮しようと思うと、ブルームフィルタってのはソート済の整数列として表現できるので、これを圧縮しようって話になる。 検索エンジン等で使う場合は速度重要だけど、HTTPリクエストに載せる場合は空間効率のほうが重要になる。ってことで、空間効率が理論限界に近いゴロム符号(の特殊系であるライス符号

  • Maze Algorithms

    If you're interested in maze algorithms, I've written a book about the subject: "Mazes for Programmers". Check it out! The source code for these demos is freely available at http://github.com/jamis/csmazes. Recursive Backtracking

  • AWS Solutions Architect ブログ: Exponential Backoff And Jitter

    こんにちは。ソリューションアーキテクトの今井です。今日はAWSのPrincipal Software EngineerであるMarc BrookerのExponential Backoff And Jitterというブログポストを翻訳しました。リクエスト密度の高いシステムのクライアントを設計するうえでExponential Backoffは非常に重要な概念です。とても参考になる内容なので、ぜひお読み下さい!

    nagachika
    nagachika 2015/03/11
    楽観的並行性制御のリトライ間隔には乱数を入れて衝突しにくくしましょうというはなし
  • へ、変態っ!!読めないからやめてっ!bit使ったデータ構造・アルゴリズム実装集 - Negative/Positive Thinking

    この記事はCompetitive Programming Advent Calendar Div2012の2日目の記事です。 12月20日追記: Darseinさんが20日目の記事で、ビット演算についての詳しい説明を紹介してくださっています!必読ですね!!!!:) はじめに Y^´       ∨// /,∠ ,. ' /l/// /, ' , '/ ! | l }´     〈 〉    変  〈/ , ' // ̄`>< /// /// _,.=‐|'"´l l〈  変  / 〈    態.   ∨, '/l|   ,.'-‐、`//`7/  /''"´__ | ハ l丿  態   { 人)   ! !   (/!  |ヽ〈_ ・.ノ〃  〃 /  '/⌒ヾ.! ,' !く   ! !  (_ ト、__/   ヽ、_,.イ    /l l |:::::::```/:::::/...´..

    へ、変態っ!!読めないからやめてっ!bit使ったデータ構造・アルゴリズム実装集 - Negative/Positive Thinking
  • https://www.iijlab.net/~ew/slide2j.pdf

  • Data Structure Visualization

    Currently, we have visualizations for the following data structures and algorithms: Basics Stack: Array Implementation Stack: Linked List Implementation Queues: Array Implementation Queues: Linked List Implementation Lists: Array Implementation (available in java version) Lists: Linked List Implementation (available in java version) Recursion Factorial Reversing a String N-Queens Problem Indexing

  • QBVHを実装した - 明日ではないから

    空間構造の一種であるQBVH(Quad-tree Bounding Volume Hierarchy)を実装した。 元の論文はhttp://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.100/institut/Papers/QBVH.pdf QBVHはレイトレーサの交差判定を高速化する。 以前syoyoさんがイイヨとおっしゃっていたので実装してみた。 この論文で語られるQBVHの要点は以下。 1.4分木構造 木構造においてひとつのノードに4つの子ノードを格納する。 2.ノードのAABB(バウンド)を親が持つ 一つ一つのノードがそのAABBを持つのではなくその親が4ついっぺんにもつ 3.SIMDによる判定 4つの子ノードのAABBの交差判定をSIMD演算を利用していっぺんに行う 4.面情報を格納するノードは作らない 面情報を格納するノー

    QBVHを実装した - 明日ではないから
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    nagachika
    nagachika 2011/05/05
    「3x^2-2x^3がcos補間とほとんど同じ動きになっている」波形に使ったらどうなるかな。
  • 公理的意味論を使ってプログラムの正しさを証明する (2)

    公理的意味論 (axiomatic semantics) の2回目。 今回は二分探索をおこなうプログラムを検証する。 まとめ: 二分探索 (binary search) とは、 ソートされた数値の順列から目的の要素をすばやく検索するアルゴリズムである。 以下のような n個の要素をもつ数列 a = [ 0, ..., i0, ..., i, ..., i1, ... n-1 ] があるとき、2つの点 i0, i1 にはさまれた中点 i を考える。ここで、 目的の要素が [i0,i) の間にあれば、i よりも左側にある範囲を探索する。 目的の要素が [i,i1) の間にあれば、i よりも右側にある範囲を探索する。 以上の操作で、毎回、探索する要素の個数は半分になっていく。 これを繰り返すと、最終的に約 log2(n) の繰り返しで目的の要素を発見できる。 これは n個の要素を左から順に調べる

  • SpaghettiMazeMaker

    これはなに? 曲線の壁を持つ迷路を、自動的に作るMacOS X用のちいさなアプリケーションです。 普通の迷路の自動生成では、壁や経路が東西南北の4方向に限られた四角い迷路しか作れませんが、SpaghettiMazeMakerはぐにゃぐにゃと曲がった壁を使って迷路を作ります。 このように... 迷路は四角い外壁で囲まれていますが、中は曲線だけでできています。外壁には2カ所、入り口と出口(どちらが入り口でどちらが出口かはわかりませんが)があり、ふたつを繋ぐ経路はただ一通りです。 どう使うの? まず、アプリをダウンロードしてください。ZIP圧縮されているので解凍すると、アプリとREADME.txtができます。アプリをダブルクリックしてください。アプリが立ち上がったら「ファイル」メニューの「新規」を選びます。「新規迷路」というダイアログが開きます。 左右の三角をドラッグして入り口と出口の位置を決め

  • 有向グラフにサイクルを作らない方法 -- レベル関数 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    有向グラフとして解釈可能/表現可能なデータ構造はいろいろあります。有向グラフ構造を扱うとき、有向サイクル(矢印をたどって同じ所に戻る道)があるとマズイことは多いと思います。しかし、有向サイクルの検出は大変です。有向サイクルを作らないように注意しながら有効グラフを変形するほうがいいでしょう。つまり、「サイクルがない」という制約(不変条件)を守り続けるわけ。(以下、サイクル=有向サイクル) とはいえ、具体的にどうするのか? 万能ではありませんが、比較的簡単な方法があります。Gを有向グラフとして、ノード(頂点)の集合をNode(G)とします。Node(G) 上で定義された整数値関数fで*1次の性質を持つものを考えます。 a, b∈Node(G)、aからbへ向かう有向辺があるなら f(a) < f(b) 不等号の向きは逆でもいいですが、とにかくどちらかに決めます。この性質を持つようなNode(G)

    有向グラフにサイクルを作らない方法 -- レベル関数 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nagachika
    nagachika 2010/11/04
    <del>これは全体の根になるノードがあれば、そこからの最短到達数でよさそうだけど、</del>←いや、だめだった。複数に分割されたクラスタのある有向グラフだと難しそう。まさにそういう問題を抱えてるんですが。
  • 階乗を求める - d.y.d.

    22:56 10/09/04 階乗を求める 去年聞いた中で、私が一番感動した式の話。 k! = limn→∞ nk / nCk kの階乗は、「nのk乗 ÷ n個のものからk個選ぶ組み合わせの数」という式で n を無限に大きくしていったときの収束先、である。 特に難しい証明が要るとかではなくて、nCk = n(n-1)(n-2)...(n-k+1) / k! であることを使うと、 limn→∞ nk / nCk = limn→∞ nk k! / n(n-1)(n-2)...(n-k+1) で、n が k に比べて十分大きければ n も n-k+1 もほとんど同じ値なので、 分子も分母もだいたい n を k 個かけているわけでして、 その部分が相殺して、k! が残るという寸法。 (厳密な表現ではないので、気になる人は厳密に証明してください。) 実装 と、この式自体はそんなに不思議ではないのです

  • 最大流問題とは (サイダイリュウモンダイとは) [単語記事] - ニコニコ大百科

    最大流問題単語 サイダイリュウモンダイ 1.1千文字の記事 14 0pt ほめる 掲示板へ 記事編集 概要フロー増加法例最大流最小カット定理関連項目掲示板最大流問題とは、最大の流量を求める問題である。線型計画問題のひとつ。 概要 例えば、ある地点から他の地点に物資を送るとする。このとき、いくつかの地点を経由し、分岐や合流をしながら物資が送られるとする。送られる過程で、それぞれの地点からそれぞれの地点に一度に送ることのできる量の最大値が決まっている際、全体で一度に送れる量の最大値はいくらなのか。これを考えるのが最大流問題である。最大流問題では、送られる量をフロー、出発点をソース、終着点をシンクという。 フロー増加法 最大流問題を解くアルゴリズムのひとつ。 フローをすべて0にする。 残余ネットワーク(後述)を求める。 残余ネットワークにソースからシンクへつながる路がなければ、6へ飛ぶ。あれば、

    最大流問題とは (サイダイリュウモンダイとは) [単語記事] - ニコニコ大百科
  • d.y.d. 2倍だけじゃない

    10:01 10/07/20 それでも2倍だ 先日のvectorの伸長度合いの記事に関して 当に1.5倍のほうがメモリ効率がよいのか という反応をいただきました。とても興味深い。みんな読みましょう。 自分の理解メモ: 「再利用ができるから嬉しい」等の議論をするなら、 今までに確保したメモリ (1 + r^1 + ... + r^k) のうち、 有効に使えてるメモリ r^{k-1} (バッファ拡大直後) や r^k (次のバッファ拡大直前) の割合で評価してみようじゃないかという。 まず簡単のために再利用をしない場合を考えると、この割合はそれぞれ (r-1)/r^2、 (r-1)/r になります(途中計算略)。 この利用率が最悪になる瞬間 (r-1)/r^2 を最善にしよう、 という一つの指標で考えてみると、式を微分なりなんなりしてみると r = 2 で最大(25%)となることがわかります

    nagachika
    nagachika 2010/07/06
    黄金比が良いというのは都市伝説だと思ってた。こういう理屈があったのかー。
  • 本物と見違えるような画像補間を実現するパスフレームワーク手法 - A Successful Failure

    SIGGRAPH2009で発表された"Moving Gradients: A Path-Based Method for Plausible Image Interpolation"という論文*1では、2枚の連続する入力画像を与えると、その間のフレームを極めて自然に補間生成する新たな手法を提案している。 図1 図1は両端の入力画像A, Bから間の3フレームを生成した例を示している。生成する補間フレーム数は任意で何枚でも生成可能であり、極めて自然な補間が実現できている。この例の驚くべきところは、制約条件を有する複雑で柔らかな局所変形を含む自然な補間画像が、全自動で生成されている点である。モーフィング処理では対応点を一点一点指定する必要があるが、ここで必要なのは2つの画像を選択するだけだ。 生成される補間画像の品質は素晴らしく、またアイデアもシンプルで興味深いので、原論文を参照して手法の概要

    本物と見違えるような画像補間を実現するパスフレームワーク手法 - A Successful Failure
  • ライフゲームでプログラミングできる「Lifef*ck」!? - このブログは証明できない。

    KPF(熊プログラミングフリークス)で発表してきました。ライフゲーム(Conway's Game of Life)はチューリング完全らしいので、これを使ってプログラムを書けるのか?というテーマです。 第5回KPF(熊プログラミングフリークス)勉強会に参加&発表してきました。 - このブログは証明できない。 まずは、発表スライドをどうぞ。 簡単に説明します。ライフゲームはチューリング完全ですから、計算機で実行可能な全てのアルゴリズムを作ることができるらしいです。どうやってアルゴリズムを表現するのか分からなかったので、Brainf*ckを使うことにしました。Brainf*ckの命令は8個なので、1命令は3ビットで表現できます。これを、ライフゲームの3つのセルと対応付けます。 Brainf*ckのプログラムを逆にたどっていけば、そのプログラムを生成するライフゲームのパターンを見つけ出すことが

  • LDS(1) -

    超一様分布列/準乱数/Low-discrepancy sequence(LDS)というものを最近知った。low discrepancy sequenceよりもhigh uniformity sequenceとかいう名前のほうがいいと思うけど 金融工学の数値シミュレーションとかで使われてるらしいけど、動機としては経路積分の計算に使うと面白いんじゃないか的なところ。既に誰かやっている人はいそうだけど、化学周りだと、そもそも経路積分で計算すること自体マニアックなので、まあ調べてみる価値はあるかもしれない LDSの発端は、円周上の無理数回転に関する、Weylの一様分布定理にあるらしい。モンテカルロ法では乱数を使うけれども、(測度に関して)一様に分布してくれるなら、別に乱数である必要はなく(例えば、台形則とかは等間隔に分割しているけども、これも分割数を増やせば、一様分布に近づく)、実際にLDSを使う

    LDS(1) -
  • 画像処理 (1) シーム・カービング

    画像を拡大・縮小する場合、通常利用される方法として、「最近傍法(Nearest Neighbour)」や「線形補間法(Bilinear Interpolation)」に代表されるサンプル補間法があることを以前紹介しました。最近、サンプル補間法とは概念のまったく異なる画像の拡大・縮小方法として「シーム・カービング(Seam Carving)」が注目され、すでに実用的なアプリケーションも誕生しています。この手法は、画像のリサイズ処理だけに限らず、特定のオブジェクトの除外や再配置など、応用範囲が非常に広いため、これからも様々な目的に応用される可能性があるアルゴリズムです。今回は、この「シーム・カービング」について紹介したいと思います。 ブラウザは、世界中に散らばった様々なコンテンツを閲覧することができる便利なツールです。その中で、画像や動画を表示したり、場合によっては音楽を聴くこともできますが、

  • Vmgen (Gforth 0.6.1)

    This manual is for Vmgen (version 0.6.1, March 11, 2003), the virtual machine interpreter generator Copyright © 2002, 03,2003 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front