【 2024 年度 授業概要】
科   目 アルゴリズムとデータ構造 ( Algorithms and Data Structures )
担当教員 尾山 匡浩 准教授
対象学年等 電気電子工学専攻・1年・後期・選択・2単位【講義】
学習・教育
目標
A3(50%), A4-AE4(50%)
授業の概要
と方針
アルゴリズムに関する知識は問題ごとに個別的なものであり,何か統一的な原理があってそれですべてが解決するというものではない.しかし,代表的な優れたアルゴリズムを理解することにより,アルゴリズム設計のかんどころというものが習得できるはずである.この科目では,特定の応用分野に限定されない一般的なアルゴリズムについて,それを実現するためのデータ構造とともに解説し,プログラム演習を取り入れることでその理解を深める.



1 【A3】 基本的なデータ構造(配列,線形リスト,2分木など)について理解できる.
2 【A3】 代表的な探索アルゴリズムについて理解できる.
3 【A3】 代表的な整列アルゴリズムについて理解できる.
4 【A3】 代表的なグラフアルゴリズムについて理解できる.
5 【A3】 代表的な文字列処理アルゴリズムについて理解できる.
6 【A4-AE4】 アルゴリズムについてプログラムを作成し,計算量などの考察ができる.
7  
8  
9  
10  












1 基本的なデータ構造について理解できているか,中間試験,定期試験,演習課題により評価する.
2 探索アルゴリズムについて理解できているか,中間試験,定期試験,演習課題により評価する.
3 整列アルゴリズムについて理解できているか,中間試験,定期試験,演習課題により評価する.
4 グラフアルゴリズムについて理解できているか,定期試験,演習課題により評価する.
5 文字列処理アルゴリズムについて理解できているか,定期試験,演習課題により評価する.
6 各種アルゴリズムの計算量について理解できているか,中間試験,定期試験,演習課題により評価する.
7  
8  
9  
10  




成績は,試験70% 演習課題30% として評価する.試験成績は,中間試験および定期試験の平均点とする.100点満点で60点以上を合格とする.
テキスト 配布テキスト
参考書 「Pascalプログラミングの基礎」:真野芳久(サイエンス社)
「Pascalプログラミング増訂版」:米田信夫,疋田輝雄,桜井貴文(サイエンス社)
「新訂新C言語入門シニア編」:林晴比古(ソフトバンク)
「アルゴリズムとデータ構造」:石畑清(岩波書店)
関連科目 プログラミングI,プログラミングII,ソフトウェア工学
履修上の
注意事項
本授業では,プログラミングに関する演習課題を通して内容の理解を深める.そのため,手続き型言語でのプログラミング経験があり,配列,関数,ポインタ等の基礎は理解できていることが望ましい.

【授業計画( アルゴリズムとデータ構造 )】
上段:テーマ/下段:内容(目標、準備など)
1 アルゴリズムと計算量
授業の進め方を説明する.その後,基本的なデータ構造について解説および演習を行う.
2 探索1
線形探索と2分探索について学び,演習を通じて理解を深める.
3 探索2
2分探索木について学び,演習を通じて理解を深める.
4 探索3
平衡木とB木について学び,演習を通じて理解を深める.
5 探索4
ハッシュ法について学び,演習を通じて理解を深める.
6 整列1
選択法・挿入法・シェルソートについて学び,演習を通じて理解を深める.
7 整列2
クイックソートについて学び,演習を通じて理解を深める.
8 中間試験
1〜7週目の授業内容について試験を行う.
9 整列3
中間試験の解説を行う.また,ヒープソートおよびマージソートについて学び,演習を通じて理解を深める.
10 グラフのアルゴリズム1
グラフの表現と探索について学び,演習を通じて理解を深める.
11 グラフのアルゴリズム2
グラフの各種連結性の判定について学び,演習を通じて理解を深める.
12 グラフのアルゴリズム3
最短路の問題について学び,演習を通じて理解を深める.
13 文字列のアルゴリズム
文字列の照合について学び,演習を通じて理解を深める.
14 難しい問題
バックトラック法・計算量の理論について学び,演習を通じて理解を深める.
15 アルゴリズムの設計方法
問題に対してどのようにアプローチしていくか,その解法を定めるための設計の方法について紹介する.


後期中間試験および後期定期試験を実施する. 本科目の修得には,30 時間の授業の受講と 60 時間の事前・事後自己学習が必要である.事前学習では,次回の授業内容に対応する教科書のページを読み,各自で理解できなかったことを整理しておくこと.また,事後学習では,課題レポートやプログラミング演習課題を課すため,指定の期日までに完成させて提出すること.