データ構造とアルゴリズム論 第6章 探索のアルゴリズム

Slides:



Advertisements
Similar presentations
プログラミング 平成24年1月11日 森田 彦.
Advertisements

プログラミング 平成25年10月29日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 平成25年12月3日 森田 彦.
プログラミング 平成25年11月19日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
データ構造とアルゴリズム論 第5章 レコード構造を使った処理-クラスの利用
探索についての復習 ・逐次探索法 番兵を用いない場合 番兵を用いる場合 ・2分探索法 プログラムはホームページに
プログラミング 平成24年10月23日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
第10回 ソート(1):単純なソートアルゴリズム
データ構造とアルゴリズム論 第9章 木構造 平成16年12月21日 森田 彦.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
プログラミング 平成25年12月10日 森田 彦.
ネットワークプログラミング論 平成28年12月12日 森田 彦.
プログラミング 平成24年10月30日 森田 彦.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
データ構造とアルゴリズム論 第9章 木構造 平成17年12月20日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成15年12月9日 森田 彦.
データ構造とアルゴリズム論 第8章 再帰処理 平成15年12月2日 森田 彦.
ネットワークプログラミング論 平成28年11月21日 森田 彦.
プログラミング 平成25年11月5日 森田 彦.
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
ネットワークプログラミング論 平成28年12月26日 森田 彦.
CGプログラミング論 平成28年4月20日 森田 彦.
プログラミング 平成22年11月24日 森田 彦.
プログラミング 平成23年12月21日 森田 彦.
ネットワークプログラミング論 平成28年10月31日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力2
データ構造とアルゴリズム論 第3章 ファイルを用いたデータ入出力
データ構造とアルゴリズム論 終章 専門科目におけるプログラミング
データ構造とアルゴリズム 担当:和田俊和 居室:A603 講義資料等は下記を参照してください.
データ構造とアルゴリズム論 第7章 再帰処理 平成17年12月6日 森田 彦.
データ構造とアルゴリズム論 第6章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
プログラミングⅠ 平成30年10月29日 森田 彦.
ネットワークプログラミング論 平成28年12月19日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成29年12月20日 森田 彦.
データ構造とアルゴリズム論 第9章 木構造 平成30年6月27日 森田 彦.
データ構造とアルゴリズム論 第2回目テスト 平成16年12月14日 森田 彦.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミング 4 整列アルゴリズム.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
プログラミング 4 探索と計算量.
データ構造とアルゴリズム論 第5章 整列(ソート)のアルゴリズム
プログラミングⅠ 平成30年10月22日 森田 彦.
プログラミングⅠ 平成31年1月7日 森田 彦.
プログラミング 平成22年12月15日 森田 彦.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング 平成24年11月13日 森田 彦.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム論 第7章 再帰処理 平成16年11月30日 森田 彦.
CGプログラミング論 平成28年7月6日 森田 彦.
プログラミング基礎演習 第4回.
データ構造とアルゴリズム論 第9章 連結リスト
プログラミング 平成24年12月11日 森田 彦.
ソフトウェア制作論 平成30年10月17日.
プログラミング 平成28年10月25日 森田 彦.
Q q 情報セキュリティ 第7回:2005年5月27日(金) q q.
プログラミング 平成28年10月18日 森田 彦.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

データ構造とアルゴリズム論 第6章 探索のアルゴリズム データ構造とアルゴリズム論 第6章 探索のアルゴリズム 平成17年11月29日 森田 彦

基礎課題提出状況(11/22) 48.5%が全課題を提出 13名 要注意! 昨年よりやや速いペース!

応用課題提出状況(11/22) 全課題提出は9名 12題以上提出は66% 昨年とほぼ同じペース。

探索とは? あるデータ群から、目的のデータと合致するものを探し出す、という処理。→検索とも言う。  Webページの検索機能の強化→現在急速に発展 本章では、最も基本的な探索アルゴリズムを学習。

本章(本日)の学習のねらい 基本的な探索アルゴリズムを学習し、その処理の流れを理解する。 → 線形探索、2分探索 基本的な探索アルゴリズムを学習し、その処理の流れを理解する。              → 線形探索、2分探索 探索アルゴリズムの効率について考察する。 探索アルゴリズムを実際のプログラムに応用する。

6-1 線形探索 端から順番に探索する方法 3を発見! 例:カードの中から数字の3を探す。 5 1 3 6-1 線形探索 端から順番に探索する方法  例:カードの中から数字の3を探す。 5 1 3 3を発見! 流れ図で表すと・・・ → p.92参照

最大(2n+1)回の比較が必要 → 改良の余地は? → 番兵法へ(p.93) <線形探索のアルゴリズム> 開始 A[1]~A[n]にデータ保管済み Noの入力 探したい数字を入力 データの終端のチェック i ← 1 毎回必要? No i≦n Yes ’ありませんでした。’ Yes A[i] =No No i,’番目にありました。’ i ← i+1 終了 最大(2n+1)回の比較が必要 → 改良の余地は? → 番兵法へ(p.93)

最大比較回数が減った! <番兵法のアルゴリズム> A[1]~A[n]にデータ保管 最後の1回だけ! 開始 Noの入力 i ← 1 データ終端を見分ける番兵の用意 A[n+1] ← No データの終端のチェック A[i] =No Yes 最後の1回だけ! No i≦n No i ← i+1 Yes ’ありませんでした。’ i,’番目にありました。’ 終了 最大比較回数が減った!

【基礎課題6-1】(p.94) データ数がn個の時の、最大比較回数(データが見つからなかった場合の比較回数)は?  線形探索法では、(2n+1)回  番兵法では    回?  n+2 流れ図の確認→【基礎課題6-2】(ループ端記号の場合) 【基礎課題6-3】(A[0]~A[n-1]の場合) 線形探索の(練習)プログラム→【基礎課題6-4】(p.97)

2分探索法 6-2 2分探索 線形探索では、データ数に比例して(データ照合のための)比較回数が増大。 データ数が10倍→計算時間も10倍 6-2 2分探索 線形探索では、データ数に比例して(データ照合のための)比較回数が増大。 データ数が10倍→計算時間も10倍   → 大きなデータ数では、効率が悪い! もっと効率の良い方法は? 2分探索法

例:数字「30」の書かれたカードを探す。 ※最初に昇順にソートしておく。 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] 1 3 7 12 13 14 20 22 30 41 ① 「30」と真ん中のA[5]を比較 ③ 「30」とA[9]を比較  ② 「30」と真ん中のA[8]を比較 1 3 7 12 13 14 20 30 41 22 1 3 7 12 13 14 20 30 41 22 1 3 7 12 13 14 20 22 30 41 1 3 7 12 13 14 20 22 30 41 13 22 「30」がA[9]にあることを発見!→ 終了! 探索範囲がA[9]~A[10]に絞られる。 探索範囲がA[6]~A[10]に絞られる。 データ数が2倍になっても比較回数は1回増えるだけ! 流れ図の確認→p.101 → 【基礎課題6-5】で確認 プログラムは【基礎課題6-6】で作成

6-3 アルゴリズムの効率 p.104をよく読んで下さい。 2分探索法は線形探索法(番兵法)より効率が良い。 6-3 アルゴリズムの効率  2分探索法は線形探索法(番兵法)より効率が良い。  p.104をよく読んで下さい。 【基礎課題6-5】をきちんとやっておくことが必要。

6-4 応用課題 線形探索の応用→【応用課題6-A】 ※ プリントでは【基礎課題6-A】となっているので「応用課題」に訂正して下さい。 6-4 応用課題 線形探索の応用→【応用課題6-A】  ※ プリントでは【基礎課題6-A】となっているので「応用課題」に訂正して下さい。 2分探索の応用→【応用課題6-B】 【応用課題6-B】のプログラムを作成する事ができれば、本章の理解度はOKです。

今後の予定 12/6 第7章 再帰処理 12/13 第8章 連結リスト 12/20 第9章 木構造 12/27 第2回目テスト 12/6 第7章 再帰処理 12/13 第8章 連結リスト 12/20 第9章 木構造 12/27 第2回目テスト 1/10 終章 補足 & 課題最終チェック