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

Slides:



Advertisements
Similar presentations
1 データベース 基本情報技術概論 ( 第 11 回 ) 埼玉大学 理工学研究科 堀山 貴史 DB.
Advertisements

1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第9回) 埼玉大学 理工学研究科 堀山 貴史
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
C言語 配列 2016年 吉田研究室.
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
データ構造とアルゴリズム 第10回 mallocとfree
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
C言語 配列 2016年 吉田研究室.
情報工学概論 (アルゴリズムとデータ構造)
オペレーティングシステムJ/K 2004年11月4日
アルゴリズムとデータ構造 第3回基本的なデータ構造(リスト) 2015/10/28 アルゴリズムとデータ構造 2015.
情報科学1(G1) 2016年度.
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
プログラミング論 II 電卓,逆ポーランド記法電卓
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
情報工学総合演習 D-I 近似アルゴリズム 埼玉大学 理工学研究科 山田 敏規、 橋口 博樹、 堀山 貴史
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造とアルゴリズム (第2回) ー線形構造ー.
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
アルゴリズムとデータ構造1 2006年6月16日
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
アルゴリズムとデータ構造1 2005年7月1日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
プログラミング 3 スタックとキュー.
プログラムの基本構造と 構造化チャート(PAD)
アルゴリズムとデータ構造 2011年7月8日課題の復習
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム 第11回 リスト構造(1)
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
オペレーティングシステムJ/K (管理のためのデータ構造)
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造1 2009年6月15日
地域情報学 C言語プログラミング 第4回 while文、do~while文、switch文、 2次元配列、ポインタ 2017年11月10日
精密工学科プログラミング基礎 第7回資料 (11/27実施)
アルゴリズムとデータ構造 2010年6月17日
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史 2011/5/12 基本情報技術概論 I (第4回) アルゴリズム と データ構造 埼玉大学 理工学研究科 堀山 貴史 2008/01/23

データ構造 データ構造 データをどのように記憶するか 基本的なデータ構造 配列 (array) リスト (list) その他のデータ構造 スタック (stack) 待ち行列 (queue, キュー) 木 (tree) ___________ ___________

データ構造: 配列 データを順番にならべて、 添字 でアクセスできるようにしたもの 操作: 参照、探索、更新、削除、挿入 配列 A データ構造: 配列 ________________ データを順番にならべて、 添字 でアクセスできるようにしたもの 操作: 参照、探索、更新、削除、挿入 ________ 配列 A A [1] 30 A [2] 50 A [3] 20 A [4] 70 A [5] 10 …

コンピュータ上での配列 配列 A 二次元配列 A [1] 30 … … A [2] 50 A [3] 20 … … … A [4] 70 メモリ (主記憶装置) A [1] 30 A [1, 1] A [1, 2] … … … A [2, 1] A [2, 2] … A [2] 50 番地 (アドレス) 2000 30 A [3, 1] A [3, 2] … A [3] 20 2001 50 … … … A [4] 70 2002 20 A [5] 10 一次元に変換して メモリに配置する 2003 70 2004 10 … … …

配列の操作 参照 探索 探索キー 70 A [1] 30 A [1] 30 配列Aの 4番は? A [2] 50 A [2] 50 (探索データ) 70 配列の操作 参照 探索 A [1] 30 A [1] 30 配列Aの 4番は? A [2] 50 A [2] 50 A [3] 20 A [3] 20 A [4] 70 A [4] 70 A [5] 10 A [5] 10 … … 添字を使って指定 … A[4] 先頭 A[1] から順番に 一致するか調べる

更新 挿入 70 を 更新 A[4] の位置に 35 を 挿入 A [1] 30 A [1] 30 35 A [2] 50 A [2] 50 20 A [3] 20 A [4] 70 35 A [4] 70 A [5] 10 A [5] 10 … … 70 を探索 + 更新 A[4] の場所を空けるため、 後ろに1つずつずらす

削除 削除 (その2) A[4] の位置の データ を 削除 A[4] の位置の データ を 削除 A [1] 30 A [1] 30 50 A [2] 50 A [3] 20 A [3] 20 A [4] 70 A [4] 70 A [5] 10 A [5] 10 … … A[4] が空いたため、 1つずつつめる A[4] に削除マークをつけて、 無いものとして扱う

データ構造: リスト となりの要素の位置(アドレス)を、 ポインタ として明示的に持つ 単方向リスト 双方向リスト 環状リスト データ構造: リスト ________________ となりの要素の位置(アドレス)を、 ポインタ として明示的に持つ ________ 単方向リスト 双方向リスト 環状リスト head (リストの 先頭を指す) 30 30 30 50 50 50 20 20 20 逆方向の探索が容易

コンピュータ上でのリスト 20 となりの要素の位置(アドレス)を、 ポインタ として明示的に持つ 50 2030 … … メモリ (主記憶装置) 2000 2010 30 番地 (アドレス) 2010 30 50 2070 2030 20 20 となりの要素の位置(アドレス)を、 ポインタ として明示的に持つ 2070 50 2030 … …

リストの操作 探索 更新 探索キー 20 を 更新 20 (探索データ) 30 30 50 50 20 20 35 70 70 先頭から順番に ポインタをたどって調べる 20 を探索 + 更新

※ 双方向リストの場合は、   逆方向のポインタも   同様にケアする必要あり リストの操作 50 の次に 35 を挿入 挿入 削除 20 を 削除 30 30 50 50 35 20 20 70 70 前のデータのポインタを、自分に 自分のポインタを、次のデータに 前のデータのポインタを、 次のデータに

データ構造 基本的なデータ構造 配列 (array) リスト (list) その他のデータ構造 スタック (stack) 待ち行列 (queue, キュー) 木 (tree)

データ構造: スタック push と pop による Last-In First-Out (L I FO) イメージ) 積み上げた書類や本 データ構造: スタック ________________ push と pop による Last-In First-Out (L I FO) イメージ) 積み上げた書類や本 生協の入口の トレイ ___________ 5 push pop 30 50 20

スタックの実現法 配列 リスト … 20 50 30 A [1] A [2] A [3] スタック ポインタ 30 50 20 5 push pop 30 50 20

データ構造: 待ち行列 (キュー) enqueue と dequeue による First-In First-Out (F I FO) データ構造: 待ち行列 (キュー) ________________ enqueue と dequeue による First-In First-Out (F I FO) イメージ) レジの前の行列 ___________ 5 enqueue 30 50 20 dequeue

キューの実現法 配列 リスト … 進行方向 front 5 A [1] 20 enqueue A [2] 50 rear A [3] 30 dequeue front 20 rear 50 30

表は、配列を用いたリストの実現を示しており、 リスト [ 東京、品川、名古屋、新大阪 ] を表している。 練習: 配列を用いたリストの実現 表は、配列を用いたリストの実現を示しており、 リスト [ 東京、品川、名古屋、新大阪 ] を表している。 このリストを、[ 東京、新横浜、名古屋、新大阪 ] に 変化させる操作はどれか。 ここで、A ( i, j ) は、表の第 i 行 第 j 列の要素を表す。 また、→ は代入を表す。 A 列 1 2 行 1 “東京” 2 2 “品川” 3 3 “名古屋” 4 4 “新大阪” 5 “新横浜”

第1の操作 第2の操作 ア 5 → A(1, 2) A(A(1, 2), 2) → A(5, 2) イ 5 → A(1, 2) 練習: 配列を用いたリストの実現 第1の操作 第2の操作 ア 5 → A(1, 2) A(A(1, 2), 2) → A(5, 2) イ 5 → A(1, 2) A(A(2, 2), 2) → A(5, 2) ウ A(A(1, 2), 2) → A(5, 2) 5 → A(1, 2) エ A(A(2, 2), 2) → A(5, 2) 5 → A(1, 2)

1つのスタックだけを用いて出力可能なデータ列はどれか ア. イ. ウ. エ. (H16年度 春) A, D, B, C B, D, A, C 練習: スタック A, B, C, D の順に到着するデータに対して、 1つのスタックだけを用いて出力可能なデータ列はどれか ア. イ. ウ. エ. (H16年度 春) A, D, B, C B, D, A, C C, B, D, A D, C, A, B ウ A B C A B C A B ウ A A B A D A D A

アルゴリズム

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

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

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

アルゴリズム (超入門): X,Y, Z の最大値 開 始 X 3 X → MAX X, Y, Z を入力 Y 2 No Z 5 MAX < Y Yes MAX Y → MAX No MAX < Z Yes y z MAX を出力 Z → MAX x 終 了

開 始 開 始 1 → i 0 → SUM 1 → i 0 → SUM i ≦100 No i ≦100 Yes i + 1 → i アルゴリズム: 1~100 の和 開 始 開 始 1 → i 0 → SUM 初期値設定 1 → i 0 → SUM 繰返し条件 繰返しループ i ≦100 while 型の繰返し No i ≦100 Yes SUM + i → SUM SUM + i → SUM 次の繰返しの準備 i + 1 → i i + 1 → i 繰返しループ SUM を出力 SUM を出力 終 了 終 了

補足説明:  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

A 列 1 2 行 1 “東京” 2 2 “品川” 3 3 “名古屋” 4 4 “新大阪” 5 “新横浜” 第1の操作 第2の操作 ア 練習: 配列を用いたリストの実現 [ 東京、品川、名古屋、新大阪 ] [ 東京、新横浜、名古屋、新大阪 ] A 列 1 2 行 1 “東京” 2 2 “品川” 3 3 “名古屋” 4 4 “新大阪” 5 “新横浜” 第1の操作 第2の操作 ア 5 → A(1, 2) A(A(1, 2), 2) → A(5, 2) イ 5 → A(1, 2) A(A(2, 2), 2) → A(5, 2) ウ A(A(1, 2), 2) → A(5, 2) 5 → A(1, 2) ウ エ A(A(2, 2), 2) → A(5, 2) 5 → A(1, 2)

1つのスタックだけを用いて出力可能なデータ列はどれか ア. 練習: スタック A, B, C, D の順に到着するデータに対して、 1つのスタックだけを用いて出力可能なデータ列はどれか ア. (H16年度 春) A, D, B, C B C A A B B C D B C D

1つのスタックだけを用いて出力可能なデータ列はどれか イ. 練習: スタック A, B, C, D の順に到着するデータに対して、 1つのスタックだけを用いて出力可能なデータ列はどれか イ. (H16年度 春) B, D, A, C A B A B A C A A C D A C D

1つのスタックだけを用いて出力可能なデータ列はどれか エ. 練習: スタック A, B, C, D の順に到着するデータに対して、 1つのスタックだけを用いて出力可能なデータ列はどれか エ. (H16年度 春) D, C, A, B A B C D A B C A B A A B C D A B C

この文面は、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-2011 horiyama@al.ics.saitama-u.ac.jp 改変等を加えられた場合は、お名前等を追加してください 図の著作者 p. 3 ~ 7, 9 ~ 11, 13, 15, 17 ~ 19, 24, 29, 31 ~ 33 クリップアート : Microsoft Office Online / クリップアート p. 8, 13 メモリ : http://webweb.s92.xrea.com/ その他 堀山 貴史