情報とコンピュータ 静岡大学工学部 安藤和敏 2006.01.23.

Slides:



Advertisements
Similar presentations
Ruth Onn, Alfred Bruckstein (Int J Comp Vision 1990)
Advertisements

J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
ハノイグラフの生成と最短経路の導出 東京電機大学 理工学部 村田和也 松浦昭洋
4.3 マージソート.
ハノイの塔 1年9組 馬部 由美絵.
極小集合被覆を列挙する 実用的高速アルゴリズム
離散システム特論 整列(sorting)アルゴリズム 2.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
ヒープソートの演習 第13回.
アルゴリズムイントロダクション第2章 主にソートに関して
4.ソート 4-1.ソート問題について 4-2.簡単なソートアルゴリズム 4-3.高度なソートアルゴリズム
アルゴリズムとデータ構造 2012年6月27日
第12回 ソート(3): シェルソート、クイックソート
アルゴリズムとデータ構造1 2008年7月22日
アルゴリズムと データ構造 第9回 再帰的アルゴリズム.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
アルゴリズムとデータ構造1 2005年7月8日
独自ルールを用いた “ハノイの塔”の拡張 立命館高校 3年9組 馬部 由美絵.
4-3:高度なソートアルゴリズム① (分割統治法にもとづくソート)
プロセッシング入門3 初歩のプログラミング.
情報知能学科「アルゴリズムとデータ構造」
プログラミング論 I 関数の再帰呼び出し
第10回 ソート(1):単純なソートアルゴリズム
第2回 内容 ハノイの塔―無向グラフと有向グラフ 教科書の 1.3 節 pp.7-12 参照
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
第11回 整列 ~ シェルソート,クイックソート ~
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
ねらい 方程式の意味や、方程式の解、解くことの意味について理解する。
論文紹介 Query Incentive Networks
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
プログラミング2 関数の再帰呼び出し
2011/06/21-24 情報知能学科「アルゴリズムとデータ構造」 担当:白井英俊
情報工学概論 (アルゴリズムとデータ構造)
情報とコンピュータ 静岡大学工学部 安藤和敏
第3回 アルゴリズムと計算量 2019/2/24.
わんくま同盟茶藝部顧問 Microsoft MVP for VC episthmh
25. Randomized Algorithms
計算量理論輪講 chap5-3 M1 高井唯史.
アルゴリズムとプログラミング (Algorithms and Programming)
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造 2010年7月26日
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
早稲田大学オープンキャンパス2014 日常を数学する ~知らず知らずに使っている数学~
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
2011年度 情報科学&情報科学演習 ~ 定番プログラム(2) ~.
アルゴリズムとデータ構造1 2006年7月11日
アルゴリズムとデータ構造 2011年6月23日
データ構造とアルゴリズム 第11回 リスト構造(1)
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
データ解析 静岡大学工学部 安藤和敏
補講:アルゴリズムと漸近的評価.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
データ解析 静岡大学工学部 安藤和敏
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとデータ構造1 2008年7月24日
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
アルゴリズムとデータ構造 補足資料9-1 「ハノイの塔」
アルゴリズムとデータ構造 2012年6月25日
プログラミング2 関数の再帰呼び出し
情報論理工学 研究室 第1回:並列とは.
参考:大きい要素の処理.
プログラミング論 バイナリーサーチ 1.
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
情報とコンピュータ 静岡大学工学部 安藤和敏
Presentation transcript:

情報とコンピュータ 静岡大学工学部 安藤和敏 2006.01.23

2つの問題とアルゴリズム 1.ハノイの塔 (The tower of Hanoi)⇒p. 1752.クイックソート (quick sort)⇒p. 186

ハノイの塔 杭2 杭1 杭3

杭1にある円盤を,全て杭3に移動せよ.ただし,小さい円盤の上に大きい円盤を乗せてはいけない.さらに,一度に1枚の円盤しか動かしてはいけない. ハノイの塔 杭1 杭2 杭3 何回の移動でこれは可能か? 杭1にある円盤を,全て杭3に移動せよ.ただし,小さい円盤の上に大きい円盤を乗せてはいけない.さらに,一度に1枚の円盤しか動かしてはいけない.

ハノイの塔(円盤の数が1のとき) 杭1 杭2 杭3 移動回数 = 1.

ハノイの塔(円盤の数が2の場合) 杭1 杭2 杭3 移動回数 = 3.

ハノイの塔(円盤の数が3の場合) 杭1 杭2 杭3 移動回数 = 7.

一番大きい円盤以外の円盤が杭1から杭2に移動. あとは,杭2にある2枚を杭3に移動すればよい! ハノイの塔(円盤が3の場合をもう一度) 杭1 杭2 杭3 一番大きい円盤以外の円盤が杭1から杭2に移動. 一番大きい円盤を杭3に移動. あとは,杭2にある2枚を杭3に移動すればよい! 移動回数 = 3+1+3.

一番大きい円盤以外の円盤が杭1から杭2に移動. ハノイの塔(円盤の数が4の場合の戦略) 杭1 杭2 杭3 一番大きい円盤以外の円盤が杭1から杭2に移動. 一番大きい円盤を杭3に移動. あとは,杭2にある3枚を杭3に移動する.

一番大きい円盤以外の円盤が杭1から杭2に移動. ハノイの塔(円盤の数が4の場合) 杭1 杭2 杭3 一番大きい円盤以外の円盤が杭1から杭2に移動. 一番大きい円盤を杭3に移動. あとは,杭2にある3枚を杭3に移動する.

ハノイの塔(円盤の数がnの場合の戦略) n-1枚 n-1枚 n-1枚 杭1 杭2 杭3 n-1枚 n-1枚 n-1枚 一番大きい円盤以外の円盤が杭1から杭2に移動. 一番大きい円盤を杭3に移動. あとは,杭2にある(n-1)枚を杭3に移動する.

移動回数の算出 n-1枚 n-1枚 n-1枚 杭1 杭2 杭3 Tn = 円盤の数がnのときの移動回数 Tn = Tn-1 + 1 + 1 + Tn-1  = 2Tn-1 + 1

 漸化式 Tn = 2Tn-1 + 1 n 1 2 3 4 5 … Tn 7 15 31 ? Tn = 2n - 1?

Tn = 2n - 1 の帰納法による証明 n = 1 のとき, T1 = 21 - 1 = 1 だから正しい. n = k のとき, Tn = 2n - 1 が成り立つと仮定する. n = k+1のときを考えると, ゆえに,n = k+1のときも,成り立つ.

ソーティング 与えられた数列 a1,a2,a3,…,anを小さい順(昇順)に並べ替えよ. 例) 2, 5, 7, 6, 3, 1, 4 ⇒ 1, 2, 3, 4, 5, 6, 7 ソーティングに対してどのようなアルゴリズムが考えられるだろうか?

素朴なアルゴリズム(選択ソート) 2 5 7 6 3 1 4 1 2 5 7 6 3 4 1 1 5 7 6 3 2 4 2 1 2 7 6 3 5 4 3 1 2 3 6 7 5 4 4 1 2 3 4 7 5 6 5 1 2 3 4 5 7 6 6 1 2 3 4 5 6 7

バブルソート 2 5 7 6 3 4 1 2 5 7 6 3 4 1 1 4 5 2 7 6 3 4 1 3 1 5 2 7 6 1 4 3 6 1 5 2 7 1 6 4 3 7 1 5 2 1 7 6 4 3 5 1 1 2 5 7 6 4 3 2 1 2 1 5 7 6 4 3

バブルソート(続き) 1 2 5 7 6 4 3 1 2 5 7 6 4 3 3 4 2 1 5 7 6 4 3 6 3 2 1 5 7 3 4 6 7 3 2 1 5 3 7 4 6 5 3 2 1 3 5 7 4 6 3 2 2 1 3 5 7 4 6

バブルソート(続き) 1 2 3 5 7 4 6 2 1 3 5 7 4 6 6 4 1 2 3 5 7 6 4 4 7 2 1 3 5 4 6 7 5 4 2 1 3 4 5 6 7 3 4 2 1 3 4 5 6 7

バブルソート(続き) 1 2 3 4 5 6 7 2 1 3 4 5 6 7 7 6 1 2 3 4 5 7 6 5 6 2 1 3 4 5 7 6 4 5 2 1 3 4 5 7 6

バブルソート(続き) 1 2 3 4 5 7 6 2 1 3 4 5 7 6 6 7 1 2 3 4 5 7 6 5 6 2 1 3 4 5 7 6

バブルソート(続き) 1 2 3 4 5 7 6 2 1 3 4 5 7 6 6 7 1 2 3 4 5 7 6

クイックソート(Lのソート) 2 5 7 6 3 1 4 2 1 2 5 7 6 3 4 5 7 6 3 1 4

クイックソート(D1のソート) 2 3 1 2 2 3 3 1 1

クイックソート(D2のソート) 5 7 6 5 5 7 7 6 6

Tn = n個の数をソートするためにかかる時間 計算時間の漸化式 … Tn = n個の数をソートするためにかかる時間

Tn = 2 Tn/2 + n この漸化式を解くと を得る.(Cは定数.)

宿題 数列 10, 9, 6, 7, 8, 1, 2, 3, 4, 5 をクイックソートでソートせよ.