タグ

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

  • アルゴリズムの世界地図 - Qiita

    0. アルゴリズムとは? まず、アルゴリズムとは何かを説明します。(0 節の説明はスライド「50 分で学ぶアルゴリズム」 の説明を参考にして書きました) さて、次の問題を考えてみましょう。 問題: 1 + 2 + 3 + … + 100 の値を計算してください。 単純な方法として、式の通りに 1 つずつ足していく方法が考えられます。すると、以下の図のように答えが計算されることになります。 これで答え 5050 が正しく求まりました。これはれっきとした アルゴリズム であり、この問題を 99 回の足し算 で解いています。しかし、計算回数が多く、計算に時間がかかるのではないかと思った方もいると思います。 ここで、方法を変えて、「1 + 100」「2 + 99」「3 + 98」…「50 + 51」の合計を求めることで、1 + 2 + 3 + … + 100 の値を計算してみましょう。 50 個の

    アルゴリズムの世界地図 - Qiita
  • 50分で学ぶアルゴリズム / Algorithms in 50 minutes

    スライドでは、有名なアルゴリズムを概観し、アルゴリズムに興味を持っていただくことを目標にします。 第 1 部:アルゴリズムとは 第 2 部:学年を当ててみよう 第 3 部:代表的なアルゴリズム問題 第 4 部:コンピュータとアルゴリズム

    50分で学ぶアルゴリズム / Algorithms in 50 minutes
  • 何が必要なのか - 急がば回れ、選ぶなら近道

    ちょっと最近というか、ここ数年はというか、ここ10数年は、 常に強迫的に勉強せざるえない状況が続いておりまして、 まぁその辺の反省も踏まえて、 特に今後のIT屋さんとして何が必要ですか、 という点をまとめておく。 「マスターしておきたい技術」という感じです。 今は汎用機・オープン化に変化があった時期以上の転換期でもあり、 twitterのTL上の知り合いのほぼ8割強が ここ一年で転職するという異常事態になっています。 自分自身も現状の会社では満足に仕事ができないということで 会社を作ったという経緯もあり、 そんな中で、動く人たち「共通の仕様」みたいなものを感じます。 そんなこんなで、 要は、特に一線で活躍している技術者の人たちには、 共通のコモンセンスというのがあるな、 ということを良く思う訳です。 これは冷静に見ると、汎用機の時代からあまり変わってなくて、 つまり基礎(基ではないですよ

    何が必要なのか - 急がば回れ、選ぶなら近道
  • コンピュータビジョンのソースコード/ライブラリのまとめ - takminの書きっぱなし備忘録 @はてなブログ

    今まで自分が見つけたコンピュータビジョンの研究に役に立ちそうなフリーのライブラリやソースコードをまとめてみました。自分ではまだ使っていないものも多いので、そこはご容赦を。主にC/C++が中心です。 またライブラリ形式でない、いわゆる学会で発表した研究のコードをそのまま公開しているという人がたくさんいて、それに関しては特にメジャーなもののみ紹介しています。なにぶん僕の観測範囲は限られてますので、「このライブラリに触れないのはおかしい」、「説明が間違っている」等、ご意見大歓迎です。 定番(Standard) OpenCV 定番中の定番です。コンピュータビジョンに関して広範なアルゴリズムが実装されています。 http://code.opencv.org/projects/OpenCV/wiki/WikiStart Point Cloud Library 3次元点群データを扱うならこれ。Kinec

    コンピュータビジョンのソースコード/ライブラリのまとめ - takminの書きっぱなし備忘録 @はてなブログ
  • 累乗計算の高速化

    情報系の大学院に通う学生のブログ。日ごろの研究に関することや、技術メモ、読んだのことなど、興味があることを色々書いていきます。導入方法などを中心にメモすることが多いとおもいます。 プログラミングの練習問題に累乗計算があったのでメモ. 条件は,以下のとおり. a^nの2つの引数を使った関数(メソッド)を用意し,計算結果を表示する 最初は,for文などで実装 次に,O(log(n))になるように実装 最初のfor文使うやつは簡単.プログラミングやったことある人なら,たいていできる. 次の計算量を減らすやつが大変. まず,最初のプログラムでは,計算量はO(n). つまり,n回の計算処理をするということになる. これをどうやってO(log(n))にまで落とし込むか? 最初は安易にnを2で割って,2つの値同士を計算すればいいと考えた. つまり,2^10 = 2^5 * 2^5 = 1024と考えた

    simikaz
    simikaz 2011/04/28
    高速べき乗計算
  • 高速な累乗計算 - あどけない話

    累乗(x^n)を単純に計算すると、オーダーは O(n)となり効率が悪いです。そこで、nを2の累乗に分解して計算する高速化手法が一般に知られています。 たとえば、3 の 11 乗を計算する場合を考えましょう。11 は 1 + 2 + 8 に分解できます。 この累乗の系列では、ある値は一つ前の値を2乗することで計算できます。たとえば、こうです。 3^1 = 3 3^2 = 3 * 3 = 9 3^4 = (3^2)^2 = 9^2 = 81 3^8 = (3^4)^2 = 81^2 = 6561よって、3^11 は以下のように計算できます。 3^11 = 3^(1+2+8) = 3^1 × 3^2 × 3^8 = 3 × 9 × 6561 = 177147この方法のオーダーは、O(log2(n)) です。 遅延評価風に RSA のために高速な累乗計算を Haskell で実装したことがありまし

    高速な累乗計算 - あどけない話
    simikaz
    simikaz 2011/04/28
    高速べき乗計算
  • 1