1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H

Slides:



Advertisements
Similar presentations
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
Advertisements

5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
て -form - Making て -form from ます -form -. With て -form, You can say... ~てもいいですか? (= May I do…) ~てください。 (= Please do…) ~ています。 (= am/is/are doing…) Connecting.
第 5 章 2 次元モデル Chapter 5 2-dimensional model. Contents 1.2 次元モデル 2-dimensional model 2. 弱形式 Weak form 3.FEM 近似 FEM approximation 4. まとめ Summary.
VE 01 え form What is え form? え? You can do that many things with え form?
第10章 マイコン機器とマイコンプロ グラム ● マイコン回路とプログラミン グ ● サーボモータ,直流モータ制 御以外のプログラム マイコンでどのようなことができるのか? モータのマイコン制御を使いこなす!
卒業研究発表 2色木 (Red-Black Tree)
正規表現からのDFA直接構成.
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
「・・・に~を○○する」の 文章を使ってみよう!
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
パワーポイントを使うプレゼンテーションを行う際は、このテンプレート を参考にしてください。
Ex7. Search for Vacuum Problem
アルゴリズムとデータ構造 2010年7月5日
Recognise, ask about and talk about purpose
Ex8. Search for Vacuum Problem(2)
Location nouns.
まっすぐ行きます! Lesson 3.
じょし Particles.
アルゴリズムとデータ構造 2012年6月14日
データ構造とアルゴリズム 第7回 木 ~ データ構造(3)~.
構造化オーバーレイネットワークに適した 分散双方向連結リストDDLL
Noun の 間(に) + Adjective Verb てform + いる間(に) during/while.
Natural Semantics 実行過程の、最初と最後の状態(state)の関係を考える。
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
ベイジアンネットワーク概説 3.6 構造の探索アルゴリズム
Reasonので + Consequence clause
大岩 元 慶応大学環境情報学部 二分木 データ構造とプログラミング(10) 大岩 元 慶応大学環境情報学部
アルゴリズムとデータ構造 2011年6月14日
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
Cプログラミング演習 中間まとめ2.
アルゴリズムとデータ構造 2012年6月28日
アルゴリズムとデータ構造 2011年6月27日
点素パス問題に対するアルゴリズム 小林 佑輔 東京大学 大学院情報理工学系研究科 組合せ最適化セミナー 2012 年 7月 13日
“Purely Functional Data Structures” セミナー
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
アルゴリズムとデータ構造1 2006年7月4日
離散数学 08. グラフの探索 五島.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
二分木のメソッド(続き).
2011/06/21 情報知能学科「アルゴリズムとデータ構造」 担当:白井英俊
Coloured Katakana Jumble Animals
木の走査.
アルゴリズムとデータ構造勉強会 第6回 スレッド木
二分探索木における要素削除 データ構造とプログラミング(10)
データ構造と アルゴリズム 第七回 知能情報学部 新田直也.
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
Cプログラミング演習 第10回 二分探索木.
Ex7. Search for Vacuum Problem
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
プログラミング 4 木構造とヒープ.
写真描写アクティビティ 写真に関しての3つの簡単な質問をし、写真を見ながら答えるアクティビティです。簡単な質問に関してやりとりする力を育てます。 CAN-DO: 写真に関する単純な質問に答えることができる。
プログラムの基本構造と 構造化チャート(PAD)
プログラミング演習Ⅲ- Sorting Quick Sort and Merge Sort
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
情報とコンピュータ 静岡大学工学部 安藤和敏
アルゴリズムとデータ構造 2013年7月1日
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造1 2009年7月2日
C#プログラミング実習 第2回.
Make a Greeting card with Origami
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
Presentation transcript:

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H   通りがけ順: D B I F J A G C H 帰りがけ順: D I J F B G H C A

2 (1/3) 60 40 80 50 70 30 90 20 100 0 10 5 15 40 60 80 60 40 50 80 60 40 60 30 40 50 70 80 90 30 20 50 70 80 90

2 (2/3) 60 40 80 50 70 30 90 20 100 0 10 5 15 40 60 80 20 30 50 70 90 100 60 40 80 20 30 50 70 90 100

2 (3/3) 60 40 80 50 70 30 90 20 100 0 10 5 15 60 20 40 80 5 10 30 50 70 90 100 60 5 20 40 80 10 15 30 50 70 90 100

3 (1/8) 20 5 30 10 20 60 10 30 50 70 5 15 25 35 45 55 65 75

3 (2/8) 20 5 30 10 25 60 10 30 50 70 5 15 20 35 45 55 65 75

3 (3/8) 20 5 30 10 25 60 10 30 50 70 5 15 35 45 55 65 75

3 (4/8) 20 5 30 10 25 60 10 35 50 70 5 15 30 45 55 65 75

3 (5/8) 20 5 30 10 35 60 10 25 50 70 5 15 30 45 55 65 75 35 60 10 25 50 70 15 30 45 55 65 75

3 (6/8) 20 5 30 10 35 60 25 50 70 10 15 30 45 55 65 75 60 25 35 50 70 10 15 30 45 55 65 75

3 (7/8) 20 5 30 10 60 25 35 50 70 10 15 45 55 65 75 60 15 35 50 70 10 25 45 55 65 75

3 (8/8) 20 5 30 10 60 15 35 50 70 25 45 55 65 75 60 35 50 70 15 25 45 55 65 75

4 01: RB-INSERT(T,x) 02: TREE-INSERT(T,x) 03: color [x ] ← RED 04: while x ≠ root [T ] and color [p [x ]] = RED 05: do if p [x ] = left [p [p [x ]]] 06: then y ← right [p [p [x ]]] 07: if color [y ] = RED 08: then <Case 1> 09: else 10: if x = right [p [x ]] 11: then <Case 2> 12: <Case 3> 13: else <“then” clause with “left ” and “right ” swapped> 14: color [root [T ]] ← BLACK

4.1 x 10 22 7 26 05: 06-08: 09-12: 挿入したノードの親ノードが祖父ノードの左ノードの時以下の処理をする。 01: RB-INSERT(T,x) 02: TREE-INSERT(T,x) 03: color [x ] ← RED 04: while x ≠ root [T ] and color [p [x ]] = RED 05: do if p [x ] = left [p [p [x ]]] 06: then y ← right [p [p [x ]]] 07: if color [y ] = RED 08: then <Case 1> 09: else 10: if x = right [p [x ]] 11: then <Case 2> 12: <Case 3> 13: else <“then” clause with “left ” and “right ” swapped> 14: color [root [T ]] ← BLACK 10 22 7 x 26 05: 06-08: 09-12: 挿入したノードの親ノードが祖父ノードの左ノードの時以下の処理をする。 親ノードの兄弟ノードが赤ノードならば Case 1 の処理をする。 親ノードの兄弟ノードが黒ノードで挿入したノードが親ノードの右ノードならばCase 2 の処理の後 Case 3 の処理をする。挿入したノードが親ノードの左ノードならば Case 3 の処理をする。

4.2 (1/3) <Case 1> recolor 22 22 7 35 7 35 10 26 36 10 26 36 30

4.2 (2/3) <Case 2> left-rotate 40 40 22 42 35 42 7 35 22 36 10 26 36 7 26 30 10 30

4.2 (3/3) <Case 3> right-rotate 40 35 35 42 22 40 22 36 7 26 36 10 30 10 30

5 G(V, E) A B E F G C D

5.1 G(V, E)   A B E F G C D

5.1   G(V, E) A B E F G C D

5.2 G(V, E) A B E F G C D

5.3 A C B F G E D G(V, E)

6 11: Algorithm DFS(G, v) 01: Algorithm DFS(G) Red-Black Trees 19/1/12 3時7分 6 01: Algorithm DFS(G) 02: Input graph G 03: Output labeling of the edges of G 04: as discovery edges and back edges 05: for all u ∈ G.vertices() 06: setLabel(u, UNEXPLORED) 07: for all e ∈ G.edges() 08: setLabel(e, UNEXPLORED) 09: for all v ∈ G.vertices() 10: if getLabel(v) = UNEXPLORED 11: DFS(G, v) 11: Algorithm DFS(G, v) 12: Input graph G and a start vertex v of G 13: Output labeling of the edges of G 14: in the connected component of v 15: as discovery edges and back edges 16: setLabel(v, VISITED) 17: for all e ∈ G.incidentEdges(v) 18: if getLabel(e) = UNEXPLORED 19: w ← opposite(v,e) 20: if getLabel(w) = UNEXPLORED 21: setLabel(e, DISCOVERY) 22: DFS(G, w) 23: else 24: setLabel(e, BACK)

6 17: 18: 19-22: 23-24: 挿入したノードの親ノードが祖父ノードの左ノードの時以下の処理をする。 Red-Black Trees 19/1/12 3時7分 6 01: Algorithm DFS(G) 02: Input graph G 03: Output labeling of the edges of G 04: as discovery edges and back edges 05: for all u ∈ G.vertices() 06: setLabel(u, UNEXPLORED) 07: for all e ∈ G.edges() 08: setLabel(e, UNEXPLORED) 09: for all v ∈ G.vertices() 10: if getLabel(v) = UNEXPLORED 11: DFS(G, v) 11: Algorithm DFS(G, v) 12: Input graph G and a start vertex v of G 13: Output labeling of the edges of G 14: in the connected component of v 15: as discovery edges and back edges 16: setLabel(v, VISITED) 17: for all e ∈ G.incidentEdges(v) 18: if getLabel(e) = UNEXPLORED 19: w ← opposite(v,e) 20: if getLabel(w) = UNEXPLORED 21: setLabel(e, DISCOVERY) 22: DFS(G, w) 23: else 24: setLabel(e, BACK) 17: 18: 19-22: 23-24: 挿入したノードの親ノードが祖父ノードの左ノードの時以下の処理をする。 親ノードの兄弟ノードが赤ノードならば Case 1 の処理をする。 親ノードの兄弟ノードが黒ノードで挿入したノードが親ノードの右ノードならばCase 2 の処理の後 Case 3 の処理をする。挿入したノードが親ノードの左ノードならば Case 3 の処理をする。