タグ

アルゴリズムに関するhenachoco-a-55のブックマーク (9)

  • 一週間で身につくアルゴリズムとデータ構造|トップページ~プログラマーなら身につけておきたい、アルゴリズムの基本。

    入門編 このサイトは、すでにプログラミングの基を身に付けたプログラマーが、アルゴリズムとデータ構造の学習サイトです。入門編では、最も基的なアルゴリズムとデータ構造について説明します。プログラミングを始めたばかりか、これから学習する人は、こちらからスタートしてください。

  • 一週間で身につくアルゴリズムとデータ構造|応用編第1日目:アルゴリズムと計算量

    計算量とは このサイトでは、さまざまなアルゴリズムを紹介してきましたが、こういったアルゴリズムの性能は、どのように評価すればよいのでしょうか?そもそも、アルゴリズムは、かかった時間で評価することは困難です。なぜなら、同じアルゴリズムで記述されたプログラムでも、実行環境やハードの性能が違えば、まるで違った結果になってしまうからです。 そのため、アルゴリズムの性能を評価するために、計算量(けいさんりょう)という指標が用いられます。計算量には、時間計算量と空間計算量とがあります。 前者は処理時間がどれだけ掛かるのかを表し、後者はどれだけの記憶容量を必要とするかを表します。 多くの場合、単に計算量と言えば、前者の時間計算量のことを指します。 O(オーダー)記法 前述のように、計算量とは、単純に「3秒かかる」といったような表現をしません。 そもそも「3秒」というのは、ある特定のハードの上での結果に過

  • オーダー再考〜O(n)は効率が良いのか〜 - わさっきhb

    0. オーダーって何? オーダーについて知っておくべき5つのことをご覧ください. 1. ソート ソート(ソーティング,並べ替え,整列)のアルゴリズムについて,になるもの,になるもの,になるものが知られています. というのは,2重ループを使ったソートです.素朴なソートアルゴリズム,と言ってもいいでしょう.バブルソートや選択法なんかが当てはまります. になるソートで有名なのは,クイックソートです.再帰(分割統治法)を使うアルゴリズムという点でも,学ぶ価値があります.なのですが,クイックソートは,ソートされる配列の並びが極端だと,になることも知られています.そこで,クイックソートの平均時間計算量は,最悪時間計算量は,なんて言い方をします. 2つの値の比較を繰り返すようなソートでは,オーダーはよりも小さくすることはできません.logが出てくる理由を簡単にいうと,n個の点からなる平衡2分木の高さが,

    オーダー再考〜O(n)は効率が良いのか〜 - わさっきhb
  • オーダーについて知っておくべき5つのこと - わさっきhb

    研究室のゼミ発表で,「オーダーのことはよく分かっていませんが…」という前置きで計算量の見積もりをしているものを,昨年,今年と見かけました. この日記が役に立つか,余計な御世話になるか分かっていませんが,ここに整理を試みてみました. 1. ビッグ・オー記法 「アルゴリズムの計算量をオーダーで表してみなさい」と指示されたときのオーダーは, 注文,発注という意味でもなく, 順番*1,順序,秩序という意味でもなく, 「百万のオーダー」*2というような使い方でもなく, 数学の位数という意味でもなく, ビッグ・オー記法,あるいはwikipedia:ランダウの記号を用いて表すものを言います. 2. 一番次数の高いもの以外,それと係数は無視 ビッグ・オー記法では,基的に,一つの文字に関するできるだけ簡単な数式に,「O( )」をかぶせます.このとき, 複数の項の足し算なら,次数の最も高いものだけを残し,他

    オーダーについて知っておくべき5つのこと - わさっきhb
  • オーダー記法(ランダウの記号)の定義と大雑把な意味 | 高校数学の美しい物語

    無限大や 000 付近でのふるまいを,以下の2つの考え方に従って大雑把に評価します。 影響力が一番強い項以外無視する 定数倍の差は無視する(係数は書かない) 例えば,n3+nn^3+nn3+n はルール1により n→∞n\to\inftyn→∞ では n3n^3n3 と同じくらい,2nlog⁡n2n\log n2nlogn はルール2により n→∞n\to\inftyn→∞ では nlog⁡nn\log nnlogn と同じくらい,と考えます。 以下では,無限大でのふるまいについて詳しく解説します(000 付近でのふるまいは最後に少しだけ)。 主にアルゴリズムの計算量評価に用いられる記号です。 三種類の記号について,表記・大雑把な意味(重要)・きちんとした定義・具体例を解説します。 ビッグオー(重要) 表記: f(n)=O(g(n))f(n)=O(g(n))f(n)=O(g(n)) 意味:

    オーダー記法(ランダウの記号)の定義と大雑把な意味 | 高校数学の美しい物語
  • [初心者向け] プログラムの計算量を求める方法 - Qiita

    はじめに この記事では、プログラムの計算量を求める方法を説明します。プログラミングの初心者向けに、厳密さよりも分かりやすさを優先して説明していきます。 サンプルコードについて この記事のサンプルコードは、C言語(C99)で記述しています。 計算量とは? 計算量とは、 「そのプログラムがどれくらい速いかを大雑把に表す指標」 です。 もう少し正確に言うと、 「入力サイズの増加に対して、実行時間がどれくらいの割合で増加するかを表す指標」 です。 グラフによる計算量の表現 計算量をグラフで表すと、以下のようになります。 これは、「入力サイズ $n$ が増加するにつれて、実行時間が $n$ に比例して増加する」ということを表しています。 別のグラフも見てみましょう。 これは、「入力サイズ $n$ が増加するにつれて、実行時間が $n^2$ に比例して増加する」ということを表しています。 計算量を求め

    [初心者向け] プログラムの計算量を求める方法 - Qiita
  • 計算量オーダーについて - Qiita

    プログラムの計算量を表すO記法について、使用例を調査しました。 計算量(オーダー)とは? あるアルゴリズムを使った演算の性能を表す指標。 計算量は大きく二つに分けられる。 時間計算量(処理時間の計算量) 空間計算量(メモリ使用量の計算量) 単に計算量(オーダー)と言った場合、時間計算量のことを指す。 O記法(オーダー記法) 特定のアルゴリズムでの計算が、どれくらい掛かるかを表した記号。 処理対象のデータが非常に大きくなった時の処理時間を大雑把に評価する。 処理時間が短い順(性能が良い順)に代表的なオーダーをまとめる。 O記法 概要 使用例

    計算量オーダーについて - Qiita
  • サンプルプログラム - C言語入門 - Webkaru

    0〜1のランダムな数を出力するサンプルプログラムを紹介します。 ここではrand関数を使って乱数を生成します。rand関数を使ったことがない方は、まずはこちらをご覧ください。 乱数の生成 – rand … 1〜10のランダムな数値を出力するサンプルプログラムを紹介します。 ここではrand関数を使って乱数を生成します。 rand関数を使ったことがない方は、まずはこちらをご覧ください。 乱数の生成 – r … 乱数を使って、サイコロをつくってみましょう。 ここではrand関数を使って乱数を生成し、1〜6の数字をランダムに出力するサンプルプログラムを紹介します。 rand関数を使ったことがない方は、まずはこち …

    サンプルプログラム - C言語入門 - Webkaru
  • 最大公約数と最小公倍数

    ○ 最大公約数,最小公倍数とは 2つ以上の正の整数に共通な約数(公約数)のうち最大のものを最大公約数といいます. 例 12 と 18 の公約数は,1,2,3,6 で, 6 が最大公約数 2つ以上の正の整数の共通な倍数(公倍数)のうち最小のものを最小公倍数といいます. 例 2 と 3 の公倍数は,6,12,18,24,... で, 6 が最小公倍数 ※最小公約数という言葉は使う値打ちがありません.なぜなら,公約数のうち一番小さい(正の)数は 1 に決まっているからです. ※最大公倍数は決められません.なぜなら,大きな(正の)公倍数は,次の例で分かるように限りなくあるからです. 例 2 と 3 の公倍数 : 6 , 12 , 18 , 24 , 30 , 36 , ...

  • 1