タグ

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

  • C:\Documents and Settings\hamamu\デスクトップ\aho.pdf.prn.pdf

    A Fast Algorithm for 3x3 Median Filtering † † Tomoyuki Hamamura Bunpei Irie 5 30 n Find[4],Select[5] Smith [6] 19 [2] U [2][4] 8 d 8 U d Kopp [1] 2 8.87 9.5 0.5 2 9 2.1 step 1 9 3 3 unit unit step 2 unit step 2 unit unit unit A B C step 2 case 1 unit B x x 3 x 3 x 2 y z y unit A z unit C step 3 y z x step 3 case 1 y<=x<=z z<=x<=y x case 2 x<y x<z x 6 x 5 x 5 unitA unitB w z unit A 3 y y z w step 4

  • クイックセレクト(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
  • scratch@tc: 中央値を求めるアルゴリズム

    というか、簡単に考えられるのは、 - ソートしたのち、真ん中の要素を選択する という方法だが、全ての要素をソートしないと答えが得られないというのは少し計算量が大きすぎる。 いろいろ調べてみると、クイックソートのアルゴリズムの発展型で、クイックセレクトなるアルゴリズムがあるらしい。 http://d.hatena.ne.jp/agw/20090505/1241602074 http://d.hatena.ne.jp/agw/20090513/1242290109 要するに、中央値が求まるくらいまでクイックソートを計算し、省略できる計算はしないということのようである。 このときに、クイックソートを計算するにあたり、最初に選択するパーティションの値をできるだけ中央値に近い値を選択するのが、アルゴリズムを高速化するコツであるということが書いてある。 http://d.hatena.ne.jp/

  • C言語の中央値を求めるアルゴリズムについて - プログラマ専用SNS ミクプラ

    C言語のアルゴリズムの参考書を読んで今勉強してるんですが。 中央値を求めるアルゴリズムについて頭を悩ませています。 三個の数字を比較して中央値を求めるif文なんですが コード: #include <stdio.h> int med3(int a, int b, int c) { if (a >= b) if (b >= c) return b; else if (a <= c) return a; else return c; else if (a > c) return a; else if (b > c) return c; else return b; } int main(void) { int a, b, c; printf("三つの整数の中央値を求めます /n"); printf("aの値:"); scanf("%d", &a); printf("bの値:"); scanf("

  • アルゴリズムの勉強のしかた - きしだのHatena

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

    アルゴリズムの勉強のしかた - きしだのHatena
  • バンディットアルゴリズム概論

    O'Reillyのバンディットのまとめ + 自分なりの解釈です。世の中になかなかバンディットの入門がなかったのでRead less

    バンディットアルゴリズム概論
  • ユークリッドの互除法 - Wikipedia

    英語版記事を日語へ機械翻訳したバージョン(Google翻訳)。 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。 翻訳後、{{翻訳告知|en|Euclidean algorithm|…}}をノートに追加することもできます。 Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指針につい

    ユークリッドの互除法 - Wikipedia
  • 機械学習アルゴリズムへの招待 | POSTD

    機械学習の問題 については以前に紹介したので、次はどんなデータを収集し、どんな機械学習アルゴリズムを使うことができるのかを見ていきましょう。投稿では、現在よく使用されている代表的なアルゴリズムを紹介します。代表的なアルゴリズムを知ることで、どんな技法が使えるかという全体的なイメージもきっとつかめてくるはずですよ。 アルゴリズムには多くの種類があります。難しいのは、技法にも分類があり拡張性があるため、規範的なアルゴリズムを構成するものが何なのか判別するのが難しいということですね。ここでは、実際の現場でも目にする機会の多いアルゴリズムを例にとって、それらを検討して分類する2つの方法をご紹介したいと思います。 まず1つ目は、学習のスタイルによってアルゴリズムを分ける方法。そして2つ目は、形態や機能の類似性によって(例えば似た動物をまとめるように)分ける方法です。どちらのアプローチも非常に実用的

    機械学習アルゴリズムへの招待 | POSTD
  • 1