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

Slides:



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

1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
Generic programming と STL
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第12回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第9回) 埼玉大学 理工学研究科 堀山 貴史
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
計算機システムⅡ 主記憶装置とALU,レジスタの制御
データ構造とアルゴリズム 第10回 mallocとfree
Ibaraki Univ. Dept of Electrical & Electronic Eng.
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
情報工学概論 (アルゴリズムとデータ構造)
オペレーティングシステムJ/K 2004年11月4日
情報科学1(G1) 2016年度.
プログラミング論 II 電卓,逆ポーランド記法電卓
データ構造とアルゴリズム 第13回 スタックとキュー
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
プログラムはなぜ動くのか.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第3回) 埼玉大学 理工学研究科 堀山 貴史
情報工学総合演習 D-I 近似アルゴリズム 埼玉大学 理工学研究科 山田 敏規、 橋口 博樹、 堀山 貴史
データ構造とプログラミング技法 (第2回) ー線形構造ー.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
データ構造とアルゴリズム (第2回) ー線形構造ー.
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
第7回 プログラミングⅡ 第7回
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
アルゴリズムとデータ構造1 2005年7月1日
アルゴリズムとデータ構造1 2009年6月29日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
プログラミング 3 スタックとキュー.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
アルゴリズムとデータ構造 2011年7月8日課題の復習
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
スタックとキュー データ構造とプログラミング (第5回).
基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム 第11回 リスト構造(1)
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
オペレーティングシステムJ/K (管理のためのデータ構造)
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
第11回放送授業.
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
アルゴリズムとデータ構造 2010年6月17日
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史 2008/5/15 基本情報技術概論 (第4回) データ構造 埼玉大学 理工学研究科 堀山 貴史 2008/01/23

前回までの復習 (計算の仕組みの基礎) 数値、文字 の表現方法 四則演算 (+, -, ×, ÷) 論理素子 論理回路 ハードウェアの基礎 前回までの復習 (計算の仕組みの基礎) 数値、文字 の表現方法 四則演算 (+, -, ×, ÷) 10進法での筆算と同じようにできる 2進数では、0, 1 を操作すれば実現できる 論理素子 0, 1 の「入力」から、0, 1 の「出力」を得る仕組み 論理回路 論理素子を用いて、 計算を実現する仕組み 組合せ回路、順序回路 ハードウェアの基礎

ハードウェア (hardware) … 装置 ソフトウェア (software) … 装置を動かすための情報 ソフトウェアの基礎 ハードウェア (hardware) … 装置 ソフトウェア (software) … 装置を動かすための情報

データ構造 データ構造 データをどのように記憶するか 基本的なデータ構造 配列 (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 前のデータのポインタを、自分に 自分のポインタを、次のデータに 前のデータのポインタを、 次のデータに

表は、配列を用いたリストの実現を示しており、 リスト [ 東京、品川、名古屋、新大阪 ] を表している。 練習: 配列を用いたリストの実現 表は、配列を用いたリストの実現を示しており、 リスト [ 東京、品川、名古屋、新大阪 ] を表している。 このリストを、[ 東京、新横浜、名古屋、新大阪 ] に 変化させる操作はどれか。 ここで、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)

データ構造 基本的なデータ構造 配列 (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 + b を以下のように記す方法 ポーランド記法 + a b 逆ポーランド記法 a b + ( ) を使う必要がない 例) ( a + b ) x ( c - d ) 逆ポーランド記法 a b + c d - x スタック マシン での実行が容易

逆ポーランド記法 と スタック マシン 例) ( 2 + 8 ) x ( 5 - 1 ) 逆ポーランド記法 スタック マシン での実行 10 1 5 10 5 10 4 10 40

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

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

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)

この文面は、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. 2, 5 ~ 9, 11 ~ 15, 17, 19, 25, 27 クリップアート : Microsoft Office Online / クリップアート p. 6, 11 メモリ : http://webweb.s92.xrea.com/ その他 堀山 貴史