データ構造とアルゴリズム

第二回 (2008年10月 3日)

アルゴリズムの表現と評価

http://www.sw.it.aoyama.ac.jp/2008/DA/lecture2.html

Martin J. Dürst

duerst@it.aoyama.ac.jp

AGU

© 2008 Martin J. Dürst 青山学院大学

目次

先回のまとめ

修正: 線形リスト (linear list) → 連結リスト (linked list)

宿題: 膨大なデータ

提出: 来週の木曜日 (10月2日) 19時00分締切、O 棟 529号室の前に提出

  1. 東京証券取引所の第一部の取引を、一株式会社の株が営業時間内に平均に5分に一回売買されていると想定して、合計で年間に何項目ぐらいのデータが集まるのかを、想定の根拠も書きながら計算しなさい。
  2. Google (又は明記の上で他のサーチエンジン) が対応しているウェブページの数と平均のページあたりのリンク数を調べ、おおよその合計のリンク数を計算しなさい。
  3. 問題 1 や 2 の結果よりも大きくて実際に存在しうるデータ項目の量を考え、説明しなさい (他人と同じものの場合には原点の対象となる)。

Ruby のダウンロード

Ruby One-Click Installer

(http://rubyforge.org/frs/download.php/43428/ruby186-27_rc1.exe)

アルゴリズムの表現方法

問題: アルゴリズムをどうやって表現するか

文書

利点:

欠点:

例: 流れ図など

利点:

欠点:

疑似コード

利点:

欠点:

プログラム言語

利点:

欠点:

Ruby プログラム言語

Ruby のインストール

アルゴリズム表現のための Ruby

最初の Ruby の例

線形探索と二分探索: 2search.rb

実行: コマンドプロンプトで ruby 2search.rb

Ruby の記法の基本

アルゴリズムの評価

評価の時に必要な情報:

アルゴリズム同士の計算量の比較

⇒ 明確な基準が必要

漸近的な増加

(asymptotic growth)

ステップの数
n (データの個数) 1 10 100 1,000 10,000 100,000 1,000,000
線形探索
2分探索

ステップの数を式で表すとどうなる

 

データの個数が多くなると式のどの項が重くなる

 

漸近記号: O

("big Oh",)

まとめ