情報知能学科「アルゴリズムとデータ構造」

Slides:



Advertisements
Similar presentations
アルゴリズムとデータ構造 第 1 章 アルゴリズムと計算量 5 月 6 日 情報知能学科 白井英俊.
Advertisements

ACM/ICPC と アルゴリズム 「実践的プログラミング」 稲葉 一浩. 自己紹介 ﻪ 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 ﻩ 博士課程1年 ﻩXML を扱う専用言語の研究など ﻪ 個人的には ﻩ ﻯD.
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
極小集合被覆を列挙する 実用的高速アルゴリズム
離散システム特論 整列(sorting)アルゴリズム 2.
ヒープソートの演習 第13回.
第12回 ソート(3): シェルソート、クイックソート
プログラミング言語としてのR 情報知能学科 白井 英俊.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
ファーストイヤー・セミナーⅡ 第8回 データの入力.
算法数理工学 第1回 定兼 邦彦.
4-3:高度なソートアルゴリズム① (分割統治法にもとづくソート)
アルゴリズムとデータ構造 第6回演習解答 2015/11/18実施 アルゴリズムとデータ構造 2015.
1. アルゴリズムと計算量.
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第10回 ソート(1):単純なソートアルゴリズム
C言語 配列 2016年 吉田研究室.
情報工学概論 (アルゴリズムとデータ構造)
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
情報知能学科「アルゴリズムとデータ構造」
データ構造とアルゴリズム 分割統治 ~ マージソート~.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
システム開発実験No.7        解 説       “論理式の簡略化方法”.
ベイジアンネットワーク概説 3.6 構造の探索アルゴリズム
第11回 整列 ~ シェルソート,クイックソート ~
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
決定木とランダムフォレスト 和田 俊和.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
計算の理論 II 帰納的関数2 月曜4校時 大月美佳.
情報工学概論 (アルゴリズムとデータ構造)
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
2011/06/21-24 情報知能学科「アルゴリズムとデータ構造」 担当:白井英俊
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
わんくま同盟茶藝部顧問 Microsoft MVP for VC episthmh
マイクロソフト Access での SQL 演習 第4回 並べ替え(ソート)
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
アルゴリズムとデータ構造1 2005年7月1日
アルゴリズムとプログラミング (Algorithms and Programming)
ボルツマンマシンの定義 ボルツマンマシン(Boltzmann machine)は、スピン・システムをヒントに作られたモデルである。
アルゴリズムとデータ構造 はじめに 第1章 アルゴリズムと計算量
情報とコンピュータ 静岡大学工学部 安藤和敏
アルゴリズムとデータ構造1 2006年7月11日
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
情報知能学科「アルゴリズムとデータ構造」
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
計算の理論 I 反復補題 月曜3校時 大月 美佳 平成15年7月14日 佐賀大学知能情報システム学科.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
アルゴリズムとプログラミング (Algorithms and Programming)
情報工学概論 (アルゴリズムとデータ構造)
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
ヒープソート.
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
参考:大きい要素の処理.
高度プログラミング演習 (07).
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
知能情報工学演習I 第11回(後半第5回) 課題の回答
アルゴリズム ~すべてのプログラムの基礎~.
プログラミング論 バイナリーサーチ 1.
情報処理3 第3回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

情報知能学科「アルゴリズムとデータ構造」 9章 縮小法 杉原厚吉.(2001).「データ構造とアルゴリズム」. 東京:共立出版. 情報知能学科「アルゴリズムとデータ構造」 担当:白井英俊

9章の目的 5章で分割統治法を学んだ 分割統治法は、問題を小問題に分解して解くアルゴリズム設計原理 小問題の大きさの合計が元の問題の大きさより小さい場合の分解法を「縮小法」という 縮小法は、特に効率的なアルゴリズムとなる

9.1 問題の規模縮小化 分割統治法: 大きさ大きさnの問題を、a個の小問題に分割し、それぞれの小問題の大きさがn/bになる場合を考えた 問題全体 (サイズn) 小問題(n/b) 小問題(n/b) a個 … 小問題(n/b) 縮小法: n >a*(n/b) となるように問題を分解 延べサイズ=a * (n/b)

問題の規模縮小化 より一般に… 大きさnの問題Pが、Pと同じ形式の小問題P1, P2, …, Pkに分解でき、それぞれの小問題の大きさがs1*n,s2*n,…, sk*nであり 0 < s1, s2, …, sk < 1、かつ s1+s2+…+sk< 1 (9.1) 問題の大きさがn0 以下の場合は分解しないとする。 計算時間をf(n)とおくと (9.2) f(n) = c (n ≦ n0 ) f(s1*n)+ f(s1*n)+… f(s1*n)+c*n (n > n0 ) を満たすとき、 f(n) = O(n)

9.2 定順位要素の抽出 問題:n個の実数の集合S={x1, x2, …, xn}と整数kが与えられた時、Sの中で小さい方から順位がk番目の要素を抽出する 素直な解き方: Sをソートしてk番目の要素を取   り出す 計算量はO(n logn) よりよい方法: 縮小法を用いる。 ソートしないので、計算量はO(n)

縮小法による定順位要素の抽出 アルゴリズム Order(S, k) |S|<100 のとき、Sの要素をソートし、k番目の要素を取り出して処理を終了 |S| ≧100 のとき(n= |S| とする) Sの要素を5個ずつのグループにわけ、各グループの中から順位3番目のものを取り出し、それらを集めた集合をTとする m ← Order(T,        ) Sをmより小さいものの集合S1 、 mと等しいものの集合S2 、mより大きいものの集合S3 へ分割 k ≦ |S1| なら y←Order(S1, k) |S1| < k ≦ |S1| +|S2|なら y ←m |S1| +|S2| < k なら y←Order(S3, k -|S1| - |S2|) ⑤ yを出力して処理を終了 5個ずつのグループの3番目の要素だから、 そのグループの中央値 Tの個数はn/5ある mは中央値の中央値

実習 縮小法による定順位要素の抽出は、かなり要素数が大きい集合に対するもの。 ここでは「感触」をつかんでもらうため、アルゴリズムにおける「100を10で置き換え」て、以下のデータに対し試してみよう。(n=30, k=10) 056, 927, 234, 048, 804, 055, 565, 585, 333, 250, 457, 369, 552, 488, 642, 274, 500, 783, 812, 984, 087, 528, 749, 092, 043, 618, 194, 796, 123, 196

実習(続き) 30/10=3番目の要素 5個ずつのグループ S= { { 056, 927, 234, 048, 804 }, { 055, 565, 585, 333, 250 }, { 457, 369, 552, 488, 642 }, { 274, 500, 783, 812, 984 }, { 087, 528, 749, 092, 043 }, { 618, 194, 796, 123, 196 } } 048, 056, 234, 804, 927 055, 250, 333, 565, 585 369, 457, 488, 552, 642 043, 087, 092, 528, 749 123, 194, 196, 618, 796 3番目の要素 これに続けて試してみよう!

計算量の問題 手続き: 定順位要素の抽出は次のようにしてもO(n)で実行できる(?)。この方法と縮小法との計算量を比較せよ。 入力:n個の数の集合S、出力:小さい方からk番目の要素 最初のk個をソートしておく。それをTとする。 (n-k)個の要素それぞれ(xとする)に対し、Tの最大要素(yとする)と比較。小さい時に限り、T-{y}+{x} (Tからyを取り除きxを足した集合)をソートする。 Tの最大要素が答え。 最大要素だけが重要なのでヒープを使うと効率的