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