データ構造と アルゴリズム 第二回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
コンピュータ概論 B ー ソフトウェアを中心に ー #13 アルゴリズム・計算可能性 京都産業大学 安田豊.
Advertisements

授業展開#12 コンピュータの扱いにくい問 題. 扱いにくい問題  処理時間がかかる。  メモリを大量に必要とする。  プログラムの優劣、アルゴリズムの優劣 を比較するためには、標準的なコン ピュータで比較する必要がある。  処理時間を計るのに、コンピュータのモ デルとして、チューリングマシンを考え、
コンピュータプラクティ スⅠ 比較実験 水野嘉明. 本日の予定 計算量について 「比較実験」  パラメータを変化させての比較 ⇒ 実験1  二つのプログラムの比較 ⇒ 実験2  実験レポート R3として提出 2.
アルゴリズムと データ構造 第 3 回 基本的なデータ構造(2) : 配列 1. 前回の復習 アルゴリズムの計算量 最悪(最大)計算量 計算量の漸近的評価 (オーダ)  多項式時間アルゴリズム( polynomial time algorithm )  指数時間アルゴリズム( exponential.
逐次ソート 2011/05/16. ソート(sort) 順序集合の要素a 1 … a n の上下関係を整 える 一般的には、整数の集合 N を考えればよ い ソートの計算量が問題となる どのような入力に対し、どのようなアル ゴリズムが最適か?
Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA
アルゴリズムと データ構造 第 2 回 アルゴリズムの計算量 基本的なデータ構造(1). 前回の復習(1) アルゴリズムの数学的定義  チューリングマシンで記述可能な手続きをアルゴリズムと呼ぶ データ構造とは  データをコンピュータの記憶部分に組織化して格納する表現方 法 プログラムとは  プログラムはデータ構造を利用して,アルゴリズムをプログラ.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
極小集合被覆を列挙する 実用的高速アルゴリズム
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
黒澤 馨 (茨城大学) 情報セキュリティ特論(4) 黒澤 馨 (茨城大学) 2017/3/4 confidential.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
ソフトウェア工学 2007年 5セメスタ.
第三回 線形計画法の解法(1) 標準最大値問題 山梨大学.
算法数理工学 第1回 定兼 邦彦.
Q q 情報セキュリティ 第6回:2005年5月20日(金) q q.
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
1. アルゴリズムと計算量.
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
香川大学工学部 富永浩之 情報数学1 第2-2章 合同式の逆元と応用 香川大学工学部 富永浩之
9.NP完全問題とNP困難問題.
データ構造と アルゴリズム 知能情報学部 新田直也.
最尤推定によるロジスティック回帰 対数尤度関数の最大化.
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
Solving Shape-Analysis Problems in Languages with Destructive Updating
7.時間限定チューリングマシンと   クラスP.
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
計算の理論 II NP完全 月曜5校時 大月美佳 平成17年1月17日 佐賀大学理工学部知能情報システム学科.
独立成分分析 5 アルゴリズムの安定性と効率 2007/10/24   名雪 勲.
情報セキュリティ  第8回 RSA暗号.
第3回 アルゴリズムと計算量 2019/2/24.
トーリックイデアルの グレブナ基底を求める アルゴリズム – F4およびF5 –
オートマトンとチューリング機械.
5.RSA暗号 素因数分解の困難性を利用した暗号.
25. Randomized Algorithms
計算量理論輪講 chap5-3 M1 高井唯史.
Q q 情報セキュリティ 第6回:2007年5月25日(金) q q.
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング 4 探索と計算量.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
4. システムの安定性.
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
香川大学創造工学部 富永浩之 情報数学1 第1-3章 素数と素因数分解 香川大学創造工学部 富永浩之
補講:アルゴリズムと漸近的評価.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
Diffie-Hellman 鍵共有 ElGamal 暗号 楕円曲線暗号,量子コンピュータ
5.チューリングマシンと計算.
解析学 ー第9〜10回ー 2019/5/12.
人工知能特論II 第8回 二宮 崇.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
11.動的計画法と擬多項式時間アルゴリズム.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
Q q 情報セキュリティ 第6回:2005年5月26日(金) q q.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
Q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q.
香川大学創造工学部 富永浩之 情報数学1 第2-2章 合同式の逆元と応用 香川大学創造工学部 富永浩之
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
13.近似アルゴリズム.
高度プログラミング演習 (07).
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
Q q 情報セキュリティ 第7回:2005年5月27日(金) q q.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

データ構造と アルゴリズム 第二回 知能情報学部 新田直也

前回の復習 アルゴリズムとは: 「チューリングマシンで表現される計算手続き」 (チャーチの提唱) アルゴリズムの性能: アルゴリズムとは: 「チューリングマシンで表現される計算手続き」 (チャーチの提唱) 本講義では,適当なプログラミング言語によって表現する. アルゴリズムの性能: 一般に,1つの問題を解くアルゴリズムは複数存在. アルゴリズムの中に早いものと遅いものがある.

最大公約数を求めるアルゴリズム 問題: 与えられた2自然数 a, b の最大公約数を求めよ. 解法1: 総当り計算 c := min{a, b} とおく. c が a, b を共に割り切る場合, c を出力して停止. c := c – 1 とおき,2) へ. 解法2: ユークリッドの互除法 c := max{a, b}, d := min{a, b} とおく. c を d で割った余りを r とおく. r が 0 ならば,d を出力して停止. c := d, d := r とおき,2) へ.

計算の例 12と9の最大公約数を求めよ. →速い!! [総当り計算] [ユークリッドの互除法] c := 9 割り切らない c := 8 2) 割り切らない 3) c : = 7 3) c : = 6 3) c : = 5 3) c : = 4 3) c : = 3 2) 割り切るので 3 を出力 [ユークリッドの互除法] c := 12, d:= 9 r := 3 r は 0 でない 4) c := 9, d := 3 2) r := 0 3) r が 0 なので 3 を出力 →速い!!

計算の例(2) 12と6の最大公約数を求めよ. この例のように,総当り計算の方が速い場合もある. →どのようにしてアルゴリズムの速さを比較するか? [総当り計算] c := 6 2) 割り切るので 6 を出力 [ユークリッドの互除法] c := 12, d:= 6 r := 0 3) r が 0 なので 6 を出力 →速い!!

入力データのサイズ 最大公約数を求める計算では,入力データは2つの自然数 a, b . データサイズをビット長で表す. すなわち,log2 a + log2 b 一般に,入力のデータサイズが大きくなると計算に費やす時間も長くなる. ただし,入力のデータサイズを固定しても計算時間は一意に定まらない. サイズ = 8 総当り ユークリッド互除法 a = 12, b = 9 14 6 a = 6, b = 18 2 3

入力サイズと計算時間の関係 最良の場合

入力サイズと計算時間の関係 最悪の場合

時間計算量の種類 最良の計算時間を比較しても無意味. 一般に最悪または平均の計算時間を比較する. 入力サイズによって変化しない. 全体から見ると例外的な状況. たまたま a と b が一致する場合. たまたま a, b のいずれかが他方の倍数になっている場合. アルゴリズムの性能を表しているとは言いがたい. 一般に最悪または平均の計算時間を比較する. 最悪(最大)時間計算量: 解析的に求めやすい. 平均時間計算量: より実態を表しているが,解析が困難.

時間計算量の評価 最悪の時間計算量を比較したとしても,全入力サイズで一方が他方より速いとは限らない.(どこで比較するか?) 大きい入力サイズで比較したほうがよい. 全体の中では小さいサイズの方が例外的だと考えられる.

オーダー表記 どのような関数に従って時間計算量が増大していくか? オーダー O: 入力 n に対して,ある関数 f(n) が O(g(n))であるとは? 適当な定数 c, n0 が存在し,任意の n >= n0 について, f(n) <= c・g(n) が成り立つことを言う. 関数 f(n) が O(g(n))であるとき, f(n) ∈ O(g(n)) または, f(n) = O(g(n)) と書く.

計算量のオーダー (最悪/平均)計算量は,通常オーダーで比較する. オーダーの例: n2 + 10 = O(n2) 2n2 + 4n + 10000 = O(n2) 2n + n2 = O(2n) n + log n = O(n)

オーダーの効果 オーダーでは係数部分やオーバーヘッドが無視される. 実行時間の実測値: コンピュータが速くなっても影響されない. プログラミング言語が変わっても影響されない。 →アルゴリズムの実質的な評価. 実行時間の実測値: コンピュータによって影響される. 同一コンピュータ上でもメモリ状況によって影響される. もちろんプログラミング言語にも影響される. コーディングテクニックにも影響される.

時間計算量と領域計算量(1) メモリをふんだんに使えば超高速に計算できる. たとえば答えを予め求めておいて,表として保持しておく. a b GCD(a.b) 1 2 3 4 → 最悪時間計算量はO(1)

時間計算量と領域計算量(2) 前スライドの例 時間計算量と領域計算量は一般にトレードオフの関係にある. 使用するメモリの量は? →O(2n) --- 領域計算量 時間計算量と領域計算量は一般にトレードオフの関係にある. 目的に応じてアルゴリズムを選ぶ必要がある.

計算量のまとめ アルゴリズムの性能は計算量のオーダーで比較. 計算量の種類: 時間計算量 領域計算量 最悪時間計算量 → 単に計算量と言う場合がある. 平均時間計算量 領域計算量 最悪領域計算量 平均領域計算量

問題の難しさ(1) ある問題を解くアルゴリズムは一般に複数存在する. 各問題で一番速い(最悪時間計算量のオーダーが最小である)アルゴリズムは? 最速のアルゴリズムを見つける方法は今のところない. (天才のひらめき) これ以上速く解けないということを証明できる場合がある. 問題の難しさを知られている最速のアルゴリズムのオーダーで評価できる.

問題の難しさ(2) 多項式時間アルゴリズムが存在する問題クラス P 指数時間アルゴリズムが存在する問題クラス EXP 最悪時間計算量のオーダーが,n の多項式であるようなアルゴリズムが知られている問題の集合. 指数時間アルゴリズムが存在する問題クラス EXP 最悪時間計算量のオーダーが,n の指数関数であるようなアルゴリズムが知られている問題の集合. 非決定性多項式時間アルゴリズムのクラス NP 最悪時間計算量のオーダー,n の多項式であるような非決定性アルゴリズムが知られている問題の集合. P = NP? 問題 数学上の未解決問題の1つ.