タグ

algorithmとAlgorithmに関するma_koのブックマーク (69)

  • クイックソート - Wikipedia

    クイックソート(英: quicksort)は、1960年にアントニー・ホーアが開発したソートのアルゴリズム。分割統治法の一種。 個のデータをソートする際の最良計算量および平均計算量は (ランダウの記号)である。他のソート法と比べて一般的に最も高速だと言われている[2]が、対象のデータの並びやデータの数によっては必ずしも速いわけではなく、最悪の計算量はである。安定ソートではない。 クイックソートは以下の手順で行われる。 ピボットの選択:適当な値(ピボット(英語版)という)を境界値として選択する 配列の分割:ピボット未満の要素を配列の先頭側に集め、ピボット未満の要素のみを含む区間とそれ以外に分割する 再帰:分割された区間に対し、再びピボットの選択と分割を行う ソート終了:分割区間が整列済みなら再帰を打ち切る 配列の分割方法の一例として、以下のようなものが考えられる: 配列要素からピボット P

    クイックソート - Wikipedia
  • アルゴリズム設計 講義資料 2005

    Algorithm Design Course Materials 2013 Oct 7: Introduction and Computational Complexity Oct 15: Search Trees Oct 21: Combinatorial Optimization Oct 28: Heuristic Search Nov 5: Text Search Nov 11: Data Compression Nov 18: Memory Management Nov 25: Graph Algorithms 1/2 Dec 2: Graph Algorithms 2/2 Dec 9: Computational Geometry Dec 16: Concurrency Control Jan 15: Canceled Jan 20: Clustering Course Pro

    ma_ko
    ma_ko 2010/02/04
    文字列の探索、圧縮、グラフアルゴリズムなどなど。取っ掛かりに良い。
  • BWT と PPM - naoyaのはてなダイアリー

    Burrows Wheeler Transform (BWT, Block-sorting) と Prediction by partial matching (PPM) は質的に同じ事をやっている、というお話です。 先日 Managing Gigabytes を読んでいたところ、P.69 で "block sorting is very closely related to the PPM* method, which is a variant of PPM that allows arbitrary-length contexts." という記述があり、どうにも気になったので調べてみました。 サマリとしては、BWT と PPM の一種である PPM* はいずれも文脈から次の1文字を一意に決定するという概念で見ると質的に同じことをやっていると言える、というところです。 BWT のあら

    BWT と PPM - naoyaのはてなダイアリー
    ma_ko
    ma_ko 2010/01/25
    "文脈でソートした BWT 後のテキストは、同じ文字が連続して出現しやすい"のくだりが分かりやすかった
  • Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー

    ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ|          あ…ありのまま 今日 起こった事を話すぜ! |i i|    }! }} //| |l、{   j} /,,ィ//|       『BWT について調べていたら Suffix Array のライブラリができていた』 i|:!ヾ、_ノ/ u {:}//ヘ |リ u' }  ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった… ,゙  / )ヽ iLレ  u' | | ヾlトハ〉 |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'

    Burrows Wheeler Transform と Suffix Array - naoyaのはてなダイアリー
  • ブロックソート - Wikipedia

    ブロックソート、ブロックソーティング、Burrows-Wheeler変換 (Burrows-Wheeler Transform; BWT) は、1994年にマイケル・バローズ (Michael Burrows) とデビッド・ホイーラー (David Wheeler) が開発した可逆変換の方式で、データ圧縮の前処理に応用される。 ブロックソート自体はデータの大きさを変えない。しかし、データを整列することでデータ中に出現するパターンを、いくつかのよく知られている手法で圧縮し易いものにできる。後処理としてMove To Front (MTF)・連長圧縮 (RLE)・エントロピー符号と組み合わせて、データを圧縮する。 実装はbzip2等。 Python言語による実装例が文献[1]に出ている。 長さ n のデータを巡回シフトし、得られるすべての文字列を辞書順にソートする。このようにしてできた n×n

  • Rubyで最短経路を探索しよう! - hp12c

    人生を書き換える者すらいた。: 人材獲得作戦・4 試験問題ほか 次に同じ質問がきたときに 「1時間いらないっしょ、こんなの」 と是非ともほざくために 今から勉強します ダイクストラ法による最短経路探索 図におけるS点からG点に到達するための最短経路を求めたい 各ノードを結ぶエッジを糸としてS点をゆっくりと持ち上げた場合 緊張する糸が変移しながら最終的にS−B−D−Gを結ぶ糸が緊張して これが最短経路と分かる*1 計算機上でこの現象をシミュレートしたものを ダイクストラ法というらしい 今各ノードとそこから伸びるエッジの情報(コストと接続先)を渡して その最短経路および総コストを出力するプログラムを考えてみよう data = { :s => [[5, :a], [4, :b], [2, :c]], :a => [[5, :s], [2, :b], [6, :g]], :b => [[4, :s

    Rubyで最短経路を探索しよう! - hp12c
  • 知れば天国、知らねば地獄――「探索」虎の巻

    いよいよ今回から、具体的なアルゴリズムの紹介に入っていきます。今回は、プログラミングにおける重要な概念である「探索」について考えます。グラフに変換し、探索する、という流れを知るとともに、そのグラフを効率よく探索する方法について紹介します。 今後紹介していくアルゴリズムについて お待たせしました! 「最強最速アルゴリズマー養成講座」という連載タイトルのとおり、今回の連載からいよいよ具体的なアルゴリズムの紹介に入っていきたいと思います。 しかし、それを読んでいただく前に、1つ注意してもらいたいことがあります。連載第3回でもお伝えしたように、「問題を、既存の適当なアルゴリズムに当てはめる」という考え方は、非常に危険である、ということです。 筆者の経験上、TopCoderでRedCoder以上を目指すのであれば、回答時間短縮のために、いままでのパターンを利用するのも方法の1つなのですが、連載では

    知れば天国、知らねば地獄――「探索」虎の巻
  • 人材獲得作戦の試験問題を解いてみた - 良いもの。悪いもの。はてな部屋

    出遅れた感があるけど、人材獲得作戦の試験問題をPythonで解いてみた。もちろん、調べたりググったりするの禁止で。というかググればコピペで終わりのような気がする。今回はゆるめの記事なので、メインのブログではなく、こちらに書いておく。 普通にダイクストラ法で書いたけど、何故か40分もかかった。途中でコードが気に入らなくて最初から書き直したり、ケアレスミスの修正をしたりしたからか。それにしてもすっきりしないコードだ。INFを100000で決め打ちしていたりとか、優先順位付きキューを用いていなかったりとか、周りに壁があること前提だとか。いろいろひどいなぁ。 これだけじゃ面白くないので、ダイクストラ法とA*アルゴリズムの違いを説明してみる。ダイクストラ法はスタート地点から順に隣接するノードの距離を足し合わせていき、常に最も距離の短いノードからそれに隣接するノードを調べていく方法で、A*は距離を足し

    人材獲得作戦の試験問題を解いてみた - 良いもの。悪いもの。はてな部屋
    ma_ko
    ma_ko 2010/01/13
    "ダイクストラ法とA*アルゴリズム"
  • 足し算引き算で10を作るゲームと部分和問題、DP - 素人がプログラミングを勉強していたブログ

    切符の問題 切符の裏に印刷してある4桁の数字を4つの数字と考えて、足し算と引き算だけで10を作るゲームの解き方。 例えば、1,2,3,4の場合は1+2+3+4=10。 プログラム的には、 prob([1,2,3,4]); // [{plus: [1,2,3,4], minus: []}] こんな感じに返ってくるようにしたい。 まず、2,4,5,7から10を作る場合。2+4+5+7=18であるので、上記の式のいくつかの符号を-にすればいいことが分かる。一つの数字を引くと、18を出す時に最初に足した分と、今引こうとしている分の2つ引かなければならないから、逆算して、(18-10)/2=4を引けばいいと分かる。 この場合、合計が4になる組合せは、4そのものしかないから、2-4+5+7=10、が答えと分かる。 (合計-10)/2が引く数の合計で、それ以外が足す数である。2で割っているので、全部の数

    足し算引き算で10を作るゲームと部分和問題、DP - 素人がプログラミングを勉強していたブログ
    ma_ko
    ma_ko 2009/12/25
    あとでなぞってみる
  • シリーズ一覧 - 共立出版

    シリーズ一覧

    シリーズ一覧 - 共立出版
  • Blogopolisから学ぶ計算幾何 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2025 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Blogopolisから学ぶ計算幾何 記事一覧 | gihyo.jp
  • Rubyでもっとも重要なライブラリは何か?PageRankで計算してみた - aike’s blog

    最近、PageRankを計算するPHPソースコードを公開している人がいたので、Rubyで書き直してみました。 PHPからRubyへは移植というよりほとんど写経のような感じでそのままポーティングできます。 pagerank.rb #!/usr/bin/ruby # original PHP source http://phpir.com/pagerank-in-php def calculatePageRank(linkGraph, dampingFactor = 0.15) pageRank = Hash.new tempRank = Hash.new nodeCount = linkGraph.length linkGraph.each {|node, outbound| pageRank[node] = 1/nodeCount tempRank[node] = 0 } change =

    Rubyでもっとも重要なライブラリは何か?PageRankで計算してみた - aike’s blog
  • 404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)

    2007年12月04日08:30 カテゴリアルゴリズム百選Math アルゴリズム百選 - 二分探索(binary search) 今回は二分探索を取り上げます。 検索:コンピューターの最もよくある利用法 「二分探索って何?」「ググレカス」と言われないためにこの記事は存在するのですが、Webの検索に限らず、「目的のデータを見つけて取り出す」というのは、およそコンピューターの利用法で最もポピュラーなものです。 配列:コンピューターがデータを扱う根的な方法 そのデータはコンピューターのなかでどう置かれているかというと、非常に単純です。デジタル化されたデータ=数値が一定間隔で並んでいるだけです。こういうデータ構造を、配列(array)といい、この数値一個一個のことを要素(element)と言います。 現代のコンピューターでは、最小要素はバイト(byte)と呼ばれています。このバイトの中には0と1

    404 Blog Not Found:アルゴリズム百選 - 二分探索(binary search)
  • 検索クエリログからのスペル訂正辞書の自動生成 - mixi engineer blog

    先月ハワイに行ってきてオルオルな (ハワイ語で '楽しい' という意味) 気分の takahi-i です。最近ログデータの有効活用が話題になっていますが、検索エンジンが出力する検索クエリログを使用してどんなことができるのかについて紹介させていただきます。 検索クエリログ 検索クエリログ (以下検索ログ) は検索エンジンを使用するユーザから発行された検索の履歴を保存したファイルです。検索ログのフォーマットは使用する検索エンジンや Web サーバによって異なります。さらにまた検索ログが含む情報にも差異があることが考えられますが、稿では検索ログは解析を行う上で重要な三つの要素を含むと仮定します。三つの要素とはユーザ ID (もしくは IP アドレス)、クエリ文、そしてクエリが検索エンジンに処理された時間です。以下検索ログの一例を載せます。 ユーザID クエリ文 クエリ発行時 438904 Su

    検索クエリログからのスペル訂正辞書の自動生成 - mixi engineer blog
  • Preparing to download ...

    ma_ko
    ma_ko 2009/11/06
    2008 // 総説っぽい感じ
  • Microsoft PowerPoint - CGH.ppt

    ma_ko
    ma_ko 2009/11/06
    今のところ、Copy number変化を検出するのはCBSが良いという意見を良く聞く // ただ実務的にはほとんど相手にしないサイズでしか差異が出ないというのが僕の感想でもある。
  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • BLOG::broomie.net: 機械学習の勉強を始めるには

    thriftとかhadoopなど,何やらいろいろと手を出してしまい,ここのところブログの更新が滞ってしまっていますが,今日は前から書きたかったトピックについて自分へのメモの意味も含めて記しておきたいと思います. はじめに 最近,といっても結構前からなのですが,海外のブログなどで「機械学習の勉強を始めるガイドライン」についてのエントリーがいくつか見られ,かつ,議論も少し盛り上がっています.僕は機械学習が好きなだけで,専門というにはほど遠いのですが,僕も一利用者としてはこのトピックに関してはとても興味があります. 機械学習というと,色々な数学的な知識が必要であったり,統計学や人工知能の知識も必要になったりしまったりと,専門的に学ぶ機会が無かった人にとっては興味が湧いてもなかなか始めるには尻込みしてしまうことかと思います.今日紹介するエントリーは,そんな方々にヒントになるような内容になっていると

  • ぜひ押さえておきたいコンピューターサイエンスの教科書

    僕はバイオインフォマティクスという生物と情報の融合分野で研究を行っています。東大の理学部情報科学科にいた頃は同僚のマニアックな知識に驚かされたものですが、そのような計算機専門の世界から一歩外に出ると、それが非常に希有な環境だったことに気が付きました。外の世界では、メモリとディスクの違いから、オートマトン、計算量の概念など、コンピューターサイエンスの基礎知識はあまり知られていませんでした。コンピューターサイエンスを学び始めたばかりの生物系の人と話をしているうちに、僕が学部時代に受けた教育のうち、彼らに欠けている知識についても具体的にわかるようになってきました。 バイオインフォマティクスに限らず、今後コンピュータを専門としていない人がコンピューターサイエンスについて学ぶ機会はますます多くなると思われます。そこで、これからコンピューターサイエンスを学ぼうとする人の手助けとなるように、基礎となる参

    ma_ko
    ma_ko 2009/09/22
    情報系から生物系へ // 手助けとなる本を紹介するって精神がエラいと思ったし、ありがたい // 自分が深く理解したいと思った時に読む本の指針になりそう
  • 有限混合分布モデルの学習に関する研究 (Web 版)

    次へ: 序 論 有限混合分布モデルの学習に関する研究 (Web 版) 赤穂 昭太郎 2001 年 3 月 15 日学位授与(博士(工学)) 序 論 研究の背景と位置づけ 論文の構成 有限混合分布とその基的性質 定義 モジュール性 階層ベイズモデルとの関係 パラメトリック性とノンパラメトリック性 RBF ネットワークとの関係 学習における汎化と EM アルゴリズム 最尤推定 汎化と竹内の情報量規準 (TIC) 汎化バイアス 竹内の情報量規準 (TIC) 冗長性と特異性 EM アルゴリズム 一般的な特徴 一般的な定式化 独立なサンプルが与えられた時の混合分布の学習 独立な要素分布の場合 サンプルに重みがある場合 EM アルゴリズムの一般化 EM アルゴリズムの幾何学的解釈 正規混合分布の汎化バイアスの非単調性について はじめに Radial Basis Boltzmann Machine (