基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史

Slides:



Advertisements
Similar presentations
アルゴリズムと データ構造 第 3 回 基本的なデータ構造(2) : 配列 1. 前回の復習 アルゴリズムの計算量 最悪(最大)計算量 計算量の漸近的評価 (オーダ)  多項式時間アルゴリズム( polynomial time algorithm )  指数時間アルゴリズム( exponential.
Advertisements

1 データベース 基本情報技術概論 ( 第 11 回 ) 埼玉大学 理工学研究科 堀山 貴史 DB.
1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史.
1 マネジメント・ストラテジ 最適化 / グラフと図解による分 析 基本情報技術概論 II ( 第6回 ) 埼玉大学 理工学研究科 堀山 貴史 中間試験 12/7 ( 月 ) 1,2 限 工 -11.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
プログラミングができるようになるには…. 一週間に1回では無理! 自分の力でできるだけがんばる
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
第10回 ソート(1):単純なソートアルゴリズム
C言語 配列 2016年 吉田研究室.
コンピュータ・リテラシ b 第12回 簡単な画像処理.
情報工学概論 (アルゴリズムとデータ構造)
オペレーティングシステムJ/K 2004年11月4日
アルゴリズムとデータ構造 第3回基本的なデータ構造(リスト) 2015/10/28 アルゴリズムとデータ構造 2015.
情報科学1(G1) 2016年度.
アルゴリズムとデータ構造 2011年6月13日
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
第7回 条件による繰り返し.
情報工学総合演習 D-I 近似アルゴリズム 埼玉大学 理工学研究科 山田 敏規、 橋口 博樹、 堀山 貴史
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造1 2006年6月16日
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
第7回 条件による繰り返し.
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
第9回 優先度つき待ち行列,ヒープ,二分探索木
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 4 整列アルゴリズム.
プログラムの制御構造 配列・繰り返し.
プログラミング 4 探索と計算量.
プログラミング 3 スタックとキュー.
プログラムの基本構造と 構造化チャート(PAD)
アルゴリズムとデータ構造 2011年7月8日課題の復習
基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
第9回 優先度つき待ち行列,ヒープ,二分探索木
プログラミングⅡ 第2回.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造 2012年6月11日
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
オペレーティングシステムJ/K (管理のためのデータ構造)
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
情報工学概論 (アルゴリズムとデータ構造)
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
アルゴリズム ~すべてのプログラムの基礎~.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史 2009/6/18 基本情報技術概論 (第10回) アルゴリズム と データ構造 (ソフトウェアの基礎) 埼玉大学 理工学研究科 堀山 貴史 2008/01/23

データ構造 … データをどのように記憶するか 基本的なデータ構造 配列 (array) 前回の復習: データ構造 データ構造 … データをどのように記憶するか 基本的なデータ構造 配列 (array) リスト (list) 30 50 20 A [1] 30 A [2] 50 A [3] 20 … ・ データを順番に並べる ・ 添え字でアクセスする ・ となりの要素の位置を ポインタとして持つ

その他のデータ構造 スタック (stack) 待ち行列 (queue,キュー) 木 (tree) 来週 enqueue push pop 前回の復習: データ構造 その他のデータ構造 スタック (stack) 待ち行列 (queue,キュー) enqueue push pop 30 30 50 50 20 dequeue 20 3 ・ L I FO ( Last-In First-Out ) ・ F I FO ( First-In First-Out ) 木 (tree) 来週

問題を解決するための、有限ステップからなる手順 自然言語や、流れ図(フローチャート)で示す 前回の復習: アルゴリズム アルゴリズム 問題を解決するための、有限ステップからなる手順 自然言語や、流れ図(フローチャート)で示す 重要 ・ 問題を解く鍵になるアイデアを把握 ・ アイデアを実現する手順を考える 1 → i A(i) = K i + 1 → i 探索成功の処理 探索失敗の処理 No Yes i > n 開 始 終 了 生協に行く 棚のチョコレートを手に持つ レジに行く 財布から代金を払う お釣りがあれば、受け取る チョコレートを食べる

制御の流れを図で表したもの 基本的な記号 繰り返しの開始と終了 (ループ名、終了条件を 開始や終了 記述) 処理 参考: その他の記号 前回の復習: 流れ図 (フローチャート) 制御の流れを図で表したもの 基本的な記号 繰り返しの開始と終了 (ループ名、終了条件を 記述) 開始や終了 処理 参考: その他の記号 処理の流れ データの入出力 条件に応じて、 次の処理を変える (分岐条件を記述) 書類を印刷 ディスプレイに表示

情報処理技術者試験での 疑似言語 記述形式 説明 ○ 手続, 変数の名前, 型などの宣言 /* 文 */ 注釈 処 理 ・ 変数 ← 式 処  理 ・ 変数 ← 式 変数に式を代入する ・ 手続 ( 引数, … ) 手続を呼び出す 条件式 処理1 処理2 選択処理 ( if then else ) 処理 前判定繰返し処理 ( while ループ ) 変数:初期値, 条件式, 増分 繰返し処理 ( for ループ )

アルゴリズム: 線形探索 (linear search) ________________ 配列を先頭から順番に探索する 探索キーと同じキーが 配列の中に見つかれば 探索成功 最後まで行っても 見つからなければ 探索失敗 探索キー (探索データ) 70 A [1] 30 A [2] 50 A [3] 20 A [4] 70 A [5] 10 …

アルゴリズム: 線形探索 (linear search) 配列を先頭から順番に探索する n 100 開 始 n: 配列の要素数 K: 探索キー K 70 1 → i i Yes A(i) = K No A [1] 30 i + 1 → i A [2] 50 Yes A [3] 20 i > n No A [4] 70 探索失敗の処理 探索成功の処理 A [5] 10 終 了 …

ループの中の比較回数を減らす n 100 n: 配列の要素数 K: 探索キー 開 始 K 90 i 1 → i K → A(n+1) Yes アルゴリズム: 番兵付き の 線形探索 ループの中の比較回数を減らす n 100 n: 配列の要素数 K: 探索キー 開 始 K 90 i 1 → i K → A(n+1) Yes A [1] 30 A(i) = K Yes No i > n A [2] 50 No A [3] 20 i + 1 → i A [4] 70 探索成功の処理 探索失敗の処理 A [5] 10 終 了 …

アルゴリズムの性能評価 計算量 (時間計算量) 大きさ n の入力に対して、 最悪の場合に必要な計算時間 例) 線形探索 A [1] 30 50 最悪の場合、 n 個全部 調べてね A[1] の探索は簡単だから アルゴリズムの 計算時間は一瞬? A [3] 20 A [4] 70 A [5] 10 …

アルゴリズムの性能評価 計算量 (時間計算量) 大きさ n の入力に対して、 最悪の場合に必要な計算時間 線形探索の 比較回数 最大 n 平均 n / 2 アルゴリズムの性能評価 計算量 (時間計算量) 大きさ n の入力に対して、 最悪の場合に必要な計算時間 n に対する大まかな振舞いを見たいので O (オーダ)表記をして、定数倍は無視する 失敗 成功 例) 線形探索 ・ 最悪の場合、n 個全部調べる 計算時間 … O(n)

アルゴリズム: 2分探索 (binary search) ________________ キーがソートされた配列に対し、高速に探索できる 探索キーと配列中央のキーを比較 A [ ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 5 10 35 50 70 100 110 150 190 191 200 300 400 探索キー 70 同じなら 探索キー < 中央のキー 探索キー > 中央のキー … 探索成功 … 前半分を探せばよい … 後半分を探せばよい

アルゴリズム: 2分探索 (binary search) K: 探索キー n 15 開 始 K 70 1 → L n → H L → M L + H 2 (小数点以下 切り捨て) M > = H A(M) = K < A [1] 1 探索成功の処理 M - 1 → H M + 1 → L A [2] 2 A [3] 5 No A [4] 10 L > H A [5] 35 Yes A [6] 50 探索失敗の処理 A [7] 70 終 了 …

アルゴリズム: 2分探索 (binary search) 2分探索の 比較回数 最大 log 2 n + 1 平均 log 2 n アルゴリズム:  2分探索 (binary search) 計算量 1回調べるごとに、探索範囲は半分になる 最悪でも、log 2 n + 1 回調べれば良い 計算量は O( log n ) A [ ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 5 10 35 50 70 100 110 150 190 191 200 300 400 探索キー 70

補足説明:  2 n と log 2 n 0 回 1 0 回 1 回 2 回 3 回 4 回 5 回 6 回 log 2 n 回 … 1 2 4 8 16 32 64 2 倍 n 2 倍 1 回 2 2 倍 2 回 4 2 倍 3 回 8 2 倍 4 回 16 2 倍 5 回 32 2 倍 6 回 64 2 倍 … … 2 倍 n 回 2 n

アルゴリズムの性能評価 (比較) 計算量 (時間計算量) 50 Q: 図の線を どう分類する? 40 30 20 10 n 10 20 30 アルゴリズムの性能評価 (比較) 計算量 (時間計算量) 50 Q: 図の線を どう分類する? 40 30 20 10 n 10 20 30 40 50 16

アルゴリズムの性能評価 (比較) 計算量 (時間計算量) O (オーダ)表記をする 例) 線形探索 O( n ) アルゴリズムの性能評価 (比較) 計算量 (時間計算量) O (オーダ)表記をする 例) 線形探索 O( n ) 2分探索 O( log n ) O(1) < O( log n ) < O( n ) < O( n log n ) < O( n2 ) < … 50 40 n2 n2/2 n 30 n/2 20 10 log n n 10 20 30 40 50 17

この文面は、TOKYO TECH OCW の利用 条件を参考にしました この教材のご利用について この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を求めることなく、無償で自由にご利用いただけます。講義、自主学習はもちろん、翻訳、改変、再配布等を含めて自由にご利用ください。 非商業利用に限定 この教材は、翻訳や改変等を加えたものも含めて、著作権者の許諾を受けずに商業目的で利用することは、許可されていません。 著作権の帰属 この教材および教材中の図の著作権は、次ページ以降に示す著作者に帰属します。この教材、または翻訳や改変等を加えたものを公開される場合には、「本教材 (or 本資料) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に実施してください。なお、この教材に改変等を加えたものの著作権は、次ページ以降に示す著作者および改変等を加えた方に帰属します。 同一条件での頒布・再頒布 この教材、または翻訳や改変等を加えたものを頒布・再頒布する場合には、頒布・再頒布の形態を問わず、このページの利用条件に準拠して無償で自由に利用できるようにしてください。

この教材のご利用について 配布場所 http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/ この powerpoint ファイルの著作者 堀山 貴史 2007-2009 horiyama@al.ics.saitama-u.ac.jp 改変等を加えられた場合は、お名前等を追加してください 図の著作者 p. 7, 10, 12, 14 クリップアート : Microsoft Office Online / クリップアート その他 堀山 貴史