データ構造とアルゴリズム
2022年度 秋学期 月曜2時限(10:55〜12:35)
授業形態: 基本対面
登録コードSCT63600
第1回(10月3日)
アルゴリズムとは?データ構造とは?
第2回(10月10日)
アルゴリズムの記述
チャーチ・チューリングのテーゼ(by Wikipedia)
最大値を求める問題に対するアルゴリズム(Google colabによるコード例)
アル・フアリズミーによる(?)乗算(Google colabによるコード例)
総当たり戦スケジュールを出力するcircle method(Google colabによるコード例)
素数列挙三種(Google colabによるコード例)
第3回(10月17日)
アルゴリズムの正当性の確認
最大公約数を求める問題に対するユークリッドの互除法(Google colabによるコード例)
第4回(10月24日)
アルゴリズムの正当性の確認の続き
平方根の見積もりのための2分法(Google colabによるコード例)
アルゴリズムの性能と計算複雑度
第6回(11月7日)
これまでに紹介したアルゴリズムの時間複雑度
Gale-Shapleyアルゴリズム(Google colabによるコード例)
第8回(11月21日)
グラフ探索アルゴリズム(Google colabによるコード例)
第9回(11月28日)
深さ優先探索アルゴリズムの再帰版とスタック版の比較(Google colabによるコード例)
第11回(12月12日)
分割統治法
マージソート(再帰版)(Google colabによるコード例)
第12回(12月19日)
動的計画法
ナップサック問題に対する動的計画法のコード例(Google colabによるコード例)
単始点最短路問題とダイクストラ法のコード例(Google colabによるコード例)
全点間最短路問題とFloyd-Warshall法のコード例(Google colabによるコード例)
第13回(1月16日)
前回の続き
第14回(1月23日)
貪欲アルゴリズム
Kruskalのアルゴリズム(union find tree以降は付録扱い)
最小全域木とKruskalのアルゴリズムとunion find tree(Google colabによるコード例)
付録
ネットワーク・フロー
エドモンズ・カープのアルゴリズムのコード例(NetworkX使用,NetworkX不使用)
計算困難問題に対するアプローチ(解答例なし)おまけのパズル(乱択アルゴリズムと関連して)