データ構造とアルゴリズム
第一回 (2009年
9月25日)
アルゴリズムとデータ構造の概要と応用
http://www.sw.it.aoyama.ac.jp/2009/DA/lecture1.html
Martin J. Dürst
duerst@it.aoyama.ac.jp
O 棟 529号室
テュールスト マーティン
ヤコブ
© 2008-09 Martin
J. Dürst 青山学院大学
目次
- 授業の位置付けと進め方
- データ構造の概念と例
- アルゴリズムの概念と例
- 授業の日程
自己紹介
授業の位置づけ
- 2年後期
- 第一科目群
- 情報テクノロジー学科は必修
- 機械創造工学科と経営システム工学科は選択必修
授業の進め方
- 約束事 1: 私語禁止、脱帽、飲食禁止
- 資料の配布とウェブ公開
- 配布資料への書き込みが大事
- 宿題、ミニテストはアナウンスなしもある
- 約束事 2: 書き込み、宿題を必ずやること
- 出席しないと損
- 時刻通りに来ないと損
- 質問はいつでも大歓迎
成績評価方法
おおよその割合:
- 授業中のミニテスト: ~20%
- 演習課題: ~30%
- 期末試験: ~50%
アルゴリズムとデータ構造の魅力
- 情報テクノロジーで中心的な存在
- 理論と実用の交差点
- 明確な評価基準
- 面白い発想が豊富
授業の目的
- アルゴリズム、データ構造の考え方
- アルゴリズム、データ構造の設計
- 典型的なアルゴリズムとデータ構造
を身につけること
データ構造の例: 連結リスト
(英語: linked list)
データ構造の概要
(英語: data structure)
二つの視点:
- 外側 (機能の提供): 抽象データ型
- 中側 (実装): 配列、構造体、ポインタなどで作成
アルゴリズムの例: 辞典の探索
問題: 辞典や辞書で単語を探す
- 線形探索 (英語: linear search):
ページ1から項目ごとに探す
- 2分探索 (英語: binary search):
候補のページを半分に分けて探索範囲を徐々に狭める
アルゴリズムの概要
(英語: algorithm)
要件:
- 明確な目的、結果 (問題を解く)
- 正確な仕様や定義 (プログラムか似たもの)
- 有限なステップ数で終了
アルゴリズムの歴史
- 古来のエジプトでの土地面積の計算など
- ユークリッドの最大公約数のアルゴリズム
- 名前の由来: 西暦800年当たりのペルシャの数学者
Muhammad ibn Mūsā al-Khwārizmī
- 1930 年代に数学的根拠が確立 (Gödel, Turing など)
- 1950年代からコンピュータのと共に実用化、数の膨大な増加
データ構造とアルゴリズムの関係
- データ構造は状態 (静的)、
アルゴリズムは操作 (動的)
- 一つのアルゴリズムに複数のデータ構造を使うことがある
- 一つのデータ構造上に複数のアルゴリズムを使うことがある
授業の日程
データ構造とアルゴリズムの日程
宿題: 膨大なデータ
提出: 来週の木曜日 (10月1日) 19時00分締切、O 棟
529号室の前に提出
- 東京証券取引所の第一部の取引で、一株式会社の株が営業時間内に平均で5分に一回売買されていると想定して、合計で年間に何項目ぐらいのデータが集まるのかを、想定の根拠も書きながら計算しなさい。
- Google (又は明記の上で他のサーチエンジン)
が対応しているウェブページの数と平均のページあたりのリンク数を調べ、おおよその合計のリンク数を計算しなさい。
- 問題 1 や 2
の結果よりも大きくて実際に存在しうるデータ項目の量を考え、説明しなさい
(他人と同じものの場合には減点の対象となる)。
次回への準備