タグ

algorithmに関するpenaltyのブックマーク (22)

  • クイックセレクト(Quick Select) - LifeTimeException@hrk623

    今回は選択アルゴリズムの紹介です。 これは、配列からk番目に小さい数を線形時間で 探しだすクイックセレクト(Quick Select)という クイックソートの派生アルゴリズムです。 問題 ソートされていないa1からanまでの数字がn個あり、 その中からk番目に小さい数字を探せ。 例: サイズが9の配列、[2, 5, 3, 7, 1, 8, 6, 0, 4]において、 3番目に小さい数は2です。 解1:ソートする。 ソートしてk番目の数字を取る方法です。 ソートにθ(nlogn)と見つけるのにθ(n)なので、T(n) ∈ θ(nlogn) 解2:選択ソート的解 リストから一番小さい数字を見つけ、取り出します。 これをk回繰り返します。 リストから最小値を見つけるのにO(n)なので T(n) ∈ O(kn)です。 解3:ヒープソートの利用 ヒープソートの構成にO(n)、取り出しにO(logn)

    クイックセレクト(Quick Select) - LifeTimeException@hrk623
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • http://www.graco.c.u-tokyo.ac.jp/icpc-challenge/wp-content/uploads/2014/12/2014.pdf

  • Introduction to Algorithms solutions

    Hi! Welcome to my solutions to the exercises and problems of Introduction to Algorithms, 3rd edition, lovingly abbreviated as CLRS. Don't trust a single word! While mistakes were not intended, they were surely made. I'm doing this for fun – I have neither the energy nor the patience to double-check everything. If you find an error, please don't contact me to fix it. This is a journey in progress.

  • a better guess on upper bound

  • b-Bit MinHashによる高速かつ省スペースな類似度判定 | SmartNews開発者ブログ

    ゴクロの浜です。ネットカフェでコードを書くのが好きです。 前回のエントリーでも触れられていますが、SmartNewsはホットな話題をユーザにお届けするために、常時、膨大な数のツイートおよびURLをクロールしています。こうして収集した記事に対し、様々な分析が施されますが、その中でも重要な処理の1つに、記事の類似度判定があります。内容の似通った記事をインデックスから発見し、グループ化する処理です。 毎秒、大量の新着記事が到着することから、この類似度判定は高速に実行する必要があります。また、インデックスを全てメモリに載せているので、類似度判定を実現する際の空間効率も要求されます。 今回は、SmartNewsが高速かつ省スペースな類似度判定のために使用しているb-Bit MinHashと呼ばれる手法を紹介します。2年前に、PFIの岡野原さんが非常に分かりやすい解説記事を書かれており、エントリー

  • 西尾泰和のはてなダイアリー

    前回の「最近Scrapboxを使っています」という投稿から約1年が経ちました。 その後、こちらはまったく更新されず、一方Scrapboxには続々と記事が投稿され、1000件を超えました。 そろそろきちんと「ここはもう更新されない場所で、今更新しているのはこちらのScrapboxだ」と明確化すべきかなと思います。 はてなダイアリーは僕が使ってきた色々な自己表現ツールの中で、最も長い期間使われたものでした。長らくありがとうございました。 最近はScrapboxを主に使っています。 Scrapboxで作成日付をタグに入れて新規ページ作成する方法 - organize-ideas - Scrapbox Scrapboxで文章オンリーのページを作った際に余白を有効活用する - organize-ideas - Scrapbox 前々からそろそろはてなダイアリーはobsoleteなのでどこへ移行しよう

    西尾泰和のはてなダイアリー
    penalty
    penalty 2013/04/23
    TopCoder SRMの実際の空気感が解る
  • TopCoder SRM入門 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    TopCoderとはなんぞやというとプログラミングのコンテストで、いろんな競技をやっている。とっつきやすいのが週一回開催されるAlgorithm部門のSRM(Single Round Match)で、1時間ほどでアルゴリズムに関する問題を解く。使用可能言語はjava/C#/C++/VB。実務的だねー。 面白いんだけど、とにかく開始するまでが面倒。 参加にはjavaによる専用クライアントを使用する。サイドバーのCompetitions→Algorithm→Launch Arenaのリンクから起動。port 5001が開いてないと接続できない(HTTPプロキシも選択可能なようだが当方の環境ではつながらなかった)。 実際の雰囲気については西尾先生のとこなどを見るといいと思います。 ユーザ登録 めんどくさかったということしか覚えてない。 SRMの流れ 参加登録 クライアントのメニューからregis

    TopCoder SRM入門 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
  • A/Bテストよりすごい?バンディットアルゴリズムとは一体何者か - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? オバマ大統領の再選に大きく寄与したことで大きな注目を集めているA/Bテスト。A/Bテストを導入した、することを検討している、という開発現場も多いのではないだろうか。 そんな中、Web上で次のような議論を見つけた。 20 lines of code that will beat A/B testing every time Why multi-armed bandit algorithm is not “better” than A/B testing 一言でまとめると「A/Bテストよりバンディットアルゴリズムの方がすごいよ」「いやいやA

    A/Bテストよりすごい?バンディットアルゴリズムとは一体何者か - Qiita
    penalty
    penalty 2013/04/03
    ABテストの悩み処に対するアプローチだけど、導入するの大変そうだなぁ・・
  • 編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー

    昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベンシュタイン距離, Levenshtein Distance) は二つの文字列の類似度 (異なり具合) を定量化するための数値です。文字の挿入/削除/置換で一方を他方に変形するための最小手順回数を数えたものが編集距離です。 例えば 伊藤直哉と伊藤直也 … 編集距離 1 伊藤直と伊藤直也 … 編集距離 1 佐藤直哉と伊藤直也 … 編集距離 2 佐藤B作と伊藤直也 … 編集距離 3 という具合です。 編集距離はスペルミスを修正するプログラムや、近似文字列照合 (検索対象の文書から入力文字にある程度近い部分文字列を探し出す全文検索) などで利用されます。 編集距離算出は動的計画法 (Dynamic Programming, DP) で計算することができることが

    編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー
  • Algorithm Implementation/Strings/Levenshtein distance - Wikibooks, open books for an open world

    The implementations of the Levenshtein algorithm on this page are illustrative only. Applications will, in most cases, use implementations which use heap allocations sparingly, in particular when large lists of words are compared to each other. The following remarks indicate some of the variations on this and related topics: Most implementations use one- or two-dimensional arrays to store the dist

  • GoogleNewsのレコメンドの中身 - UMEko Branding

    先日、全体ゼミで発表したときの内容ですが、ここにまとめときます。。GoogleNewsのレコメンドの中身を追った論文の要約です。少し前の全体ゼミで用いた資料です。ソース:Abhinandan Das,Mayur Datar,Ashutosh Garg,Shyam Rajaram,"Google News Personalization: Scalable OnlineCollaborative Filtering",WWW2007不勉強な個所が多々ありますので、誤っている箇所等ありましたら、是非ご指摘ください。 個人的には、最近のモデルベースの手法の勉強・おさらいという意味で用いているので、GoogleNews独自の拡張なり実装の部分の内容が省かれている場合があります。また、データ構造やMapReduceを用いた計算の仕組みの部分は、ここでは省略しています。。一応、 全体像 ・LSH(Lo

  • お手軽パーザー

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    penalty
    penalty 2007/09/05
  • いろいろなソートアルゴリズム

    <body> <p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p> </body>

  • Life is beautiful: 恋の連立方程式、「パートナー探し」の最適化アルゴリズムに関する一考察

    「自分にできるだけ相応(ふさわ)しいパートナー」を見つけることは、我々人間にとって、人生の最も重要なのテーマの一つでもある。しかし、そのプロセスである「恋愛」や「お見合い」に関して、なぜか今までシステマティックな考察がされて来なかったように思える。そこで、今回はその「パートナー探し」のプロセスをモデル化・数値化することにより、最適なアルゴリズムを見つけようと思う。 まずは、「自分にできるだけ相応しいパートナーを探す」というあいまいな問題を、もう少し明確にモデル化された問題に単純化する。もちろん、単純化するとはいえ、あまり現実とかけ離れていては役に立たないので、現実味を壊さない程度の単純化を行う。 [モデル化された問題] 結婚適齢期の女性が、これから10人の男性と順番にお見合いをして、その中から結婚相手を見つけることにしたとする。相手の意思は無視して良く、「この人と結婚したい」と宣言した時点

  • 生年月日から年齢を計算する簡単な計算式 - sanonosa システム管理コラム集

    インフラエンジニアの教科書」シリーズや「クラウドエンジニアの教科書」などの著者。現在(株)ハートビーツ勤務。LINE社元創業メンバー。K-POP/韓国語/お酒/サイゼリヤワイン好き。

    生年月日から年齢を計算する簡単な計算式 - sanonosa システム管理コラム集
  • JavaScript でソートアルゴリズムを可視化 - bkブログ

    JavaScript でソートアルゴリズムを可視化 JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による ソートアルゴリズムを可視化する Java アプレットです。 アルゴリズム 要素数 動作確認は Firefox 2, IE 7, Opera 9 で行いました。要素数は最大で200まで選べますが、かなり重くなるので遅いマシンで実行すると危険です。 English version is also available. ソースコード: sort-animation.js 解説 X軸が配列の添え字、Y軸が配列の要素の値を示しています。最初に要素がランダムに並んでいる配列 (値に重複なし) を作って、それを各種のソートアルゴリズムでソートする様子をアニメーションで表示します。 ただし、要素のあらゆる変更に対して毎回表示を更新し

  • 定番アルゴリズムを徹底理解! - 今からでも遅くない!アルゴリズム入門:selfup

    このパートでは,プログラミングを勉強するうえで欠かせないアルゴリズムの中でも定番中の定番を紹介します。ソート(並べ替え)やサーチ(検索)などの機能は今では標準のライブラリとして提供されています。実用的なプログラムを作るときにそのものずばりをいちいち書く機会は少ないかもしれません。しかし定番のアルゴリズムは,様々に形を変えて普段のプログラミングに登場します。 解説を読んで仕組みがわかったら,ぜひそれをプログラムにしてみてください。読んだだけではプログラムを書けるようにはなりませんし,プログラムを書いてみて初めて,実は十分に理解できていなかったと気付くことがよくあります。しかもアルゴリズムは特定のプログラミング言語に依存しないので,一度身に付ければ,後でどんな言語を学ぶ場合でも役に立ちます。 1番目から6番目まではソートのアルゴリズム,7番目から9番目まではサーチのアルゴリズムです。一つひとつ

    定番アルゴリズムを徹底理解! - 今からでも遅くない!アルゴリズム入門:selfup
    penalty
    penalty 2006/11/05
    ソートとかなつかし
  • どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup

    Webの全体像を効率よく取り込み,分類する 「YSTのシステムは大まかに三つの機能に分かれます(図2)。最初は世界中のWebページをYSTのシステムに取り込む『クローリング(crawling)』という機能です」(Yahoo! JAPAN,リスティング事業部 検索企画室の宮崎光世氏,以下同)。 取り込むと簡単に言っても,Webページの数は膨大なうえ,更新の頻度や情報の質などがまちまちです。すべてのページに同じようにアクセスしていると非効率なことこの上ありません。そこで,限られた時間で質の良い検索ができるようにするための工夫をしています。例えば,クローリングを繰り返すうちに頻繁に更新されることがわかったページは短いサイクルでチェックし,ほとんど更新のないページはチェックの頻度を落とす,といったことをしているそうです。 ただ,更新の頻度が単に高いだけではダメです。重要性が高いと考えられるWebサ

    どうなっているの?あのソフトの仕組み - 今からでも遅くない!アルゴリズム入門:selfup
    penalty
    penalty 2006/10/26
    おお、タイムリー!!
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 こんなことやって意味あるのかどうか正直言って迷いました。プログラマはたいてい知っているような内容だし見る人もいないんじゃないかと思いましたが、これからプログラミングを始めてみようという方にとっては参考になるかもしれないし、何よりも自分にとって頭の中を整理できたりするので、これから定期的にやっていこうかと考えてます。 ところで、紹介する内容はほとんど過去に出版された書物関係から抜粋しています。一応下の方に参考文献として挙げておきますので興味を持たれた方は書店などで探してみてはいかがでしょうか? ということで、まずはライン・ルーチン(画面に直線を描画する)についての紹介です。

    penalty
    penalty 2005/10/03
    ソート以外はほとんど使ったことないな。