2024年度 アルゴリズムとデータ構造   Introduction to Algorithms and Data Structures

文字サイズ 

アップデートお知らせメールへ登録 お気に入り講義リストに追加
開講元
数理・計算科学系
担当教員名
安永 憲司  吉田 雄祐 
授業形態
講義 / 演習    (対面型)
メディア利用科目
曜日・時限(講義室)
火5-8(W8E-101)  金5-6(W8E-101)  
クラス
-
科目コード
MCS.T213
単位数
3
開講年度
2024年度
開講クォーター
2Q
シラバス更新日
2024年3月18日
講義資料更新日
-
使用言語
日本語
アクセスランキング
media

講義の概要とねらい

コンピュータが問題を解くための手順のことをアルゴリズムと呼ぶ.効率的なアルゴリズムにはよく設計されたデータ構造が必要不可欠である.本講義ではアルゴリズムの基本的な考え方から始め,代表的なアルゴリズムとデータ構造,それらの計算量の評価,そしてC言語によるプログラムの作成について扱う.
アルゴリズムは問題を解決するための具体的な手順であるため,すべての情報処理の礎であり,社会のありとあらゆるところで利用されている.アルゴリズムを学ぶことは,ものの考え方にまで影響を与えるほど重要である.

到達目標

(1) モジュロ演算,分割統治法、動的計画法などに基づくアルゴリズムを説明できる.また、その計算量を評価できる.
(2) ヒープ,二分探索木などのデータ構造とその実装方法を説明できる.また,各操作の計算量を評価できる.
(3) C言語を用いて上記のアルゴリズムとデータ構造を実装できる.

キーワード

モジュロ演算,ヒープ,二分探索木,高速フーリエ変換,グラフアルゴリズム,動的計画法

学生が身につける力(ディグリー・ポリシー)

専門力 教養力 コミュニケーション力 展開力(探究力又は設定力) 展開力(実践力又は解決力)

授業の進め方

講義は火曜日と金曜日5・6限に行う
演習は火曜日7・8限に演習室で行う

授業計画・課題

  授業計画 課題
第1回 アルゴリズムと計算量:フィボナッチ数,計算量,オーダ記法,C 言語導入 アルゴリズムの計算量,オーダ記法を理解する.
第2回 [演習1]:C言語導入,フィボナッチ数 基本的なC言語が書けるようになる.
第3回 モジュロ演算 1:四則演算の計算量,モジュロ演算,モジュロ冪演算(繰り返し二乗法),ユークリッドの互除法,ループ不変式 モジュロ演算とその計算量,ユークリッドの互除法,ループ不変式を理解する.
第4回 モジュロ演算 2・データ構造1:モジュロ割り算,素数性判定(フェルマー検査),素数生成,動的集合への操作 モジュロ割り算,素数性判定を理解する.
第5回 [演習2]:モジュロ演算 モジュロ演算アルゴリズムをC言語で書けるようになる.
第6回 データ構造 2:配列とヒープ,二分探索,連結リスト・スタック・キュー ヒープ,二分探索,連結リスト等のデータ構造を理解する.
第7回 データ構造 3:二分探索木,平衡探索木,ハッシュ法 二分探索木,平衡探索木,ハッシュ法について理解する.
第8回 [演習3]:二分探索木 二分探索木をC言語で書けるようになる.
第9回 分割統治法 1:カラツバ法,マスター定理,マージソート,ソート計算量の下界 カラツバ法などの分割統治法を理解し,計算量を評価できるようになる.
第10回 分割統治法 2:中央値,行列の掛け算(シュトラッセン法) 中央値や行列掛け算などの分割統治法を理解する.
第11回 [演習4]:二分探索,分割統治法 二分探索や分割統治法のアルゴリズムをC言語で実装する.
第12回 高速フーリエ変換 1:多項式の係数表現と値表現,多項式評価と補間,ヴァンデルモンド行列 多項式の係数表現・値表現,多項式評価,多項式補間を理解する.
第13回 高速フーリエ変換 2:高速フーリエ変換 (FFT),FFT の応用 高速フーリエ変換を理解する.
第14回 [演習5]:高速フーリエ変換 高速フーリエ変換をC言語で実装する.
第15回 グラフアルゴリズム 1:グラフの表現,深さ優先探索,到達可能性,連結成分 グラフに対する深さ優先探索,到達可能性,連結成分を理解する.
第16回 グラフアルゴリズム 2:幅優先探索,最短パス,ダイクストラ法 グラフに対する幅優先探索,最短パス,ダイクストラ法を理解する.
第17回 [演習6]:グラフアルゴリズム グラフアルゴリズムをC言語で実装する.
第18回 動的計画法1:最短パス,最長増加部分列,編集距離 動的計画法を理解する.
第19回 動的計画法2:ナップサック問題,メモ化,連鎖行列積 様々な問題に対する動的計画法を理解する.
第20回 [演習7]:動的計画法 貪欲法・動的計画法をC言語で実装する.
第21回 発展的内容(例:量子アルゴリズム,素集合データ構造) アルゴリズムとデータ構造に関する発展的内容を理解する.

授業時間外学修(予習・復習等)

学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ本学の学修規程で定められた時間を目安に行う。

教科書

指定なし

参考書、講義資料等

アルゴリズムとデータ構造に関する参考書

T. コルメン他 (浅野 哲夫 他訳), 世界標準MIT教科書 アルゴリズムイントロダクション 第3版 総合版,近代科学社 2013
大槻兼資・著 秋葉拓哉・監修, 問題解決力を鍛える!アルゴリズムとデータ構造, 講談社, 2020

成績評価の基準及び方法

講義時間内の小テスト30%,宿題形式のレポート30%,プログラミング演習課題40%

関連する科目

  • LAS.I121 : コンピュータサイエンス第一
  • LAS.I122 : コンピュータサイエンス第二
  • MCS.T204 : 計算機科学概論

履修の条件(知識・技能・履修済科目等)

演習室の定員により、この科目は数理・計算科学系の学生だけが履修できる.
関連する科目を履修,または同等の知識があることを条件とする.

このページのトップへ