SlideShare uma empresa Scribd logo
1 de 50
The Art of Computer Programming2.3.2 트리의 이진트리 표현 아키텍트를 꿈꾸는 사람들cafe.naver.com/architect1 현수명  soomong.net #soomong
트리의이진트리 표현 	Forest 를이진트리로 변환 운행비교 대수공식의 조작 	Algorithm D 	MIXAL 구현
Forest A D B C E G F K H J 임의의 일반 forest 를 이진트리로 표현!
이걸 왜 하는것인가요? ? 자네. 일단 해보게나 네!
임의의 일반 forest 를 이진트리로 표현하기 Text 방법 각 가족의 자식들을 연결하고 2.부모에서 첫째 자식으로의 링크를 제외한 모든 수직 링크를 제거 3. 시계방향으로 45 돌리기
Picture 각 가족의 자식들을 연결하고 Before A D A D B C E G F B C E G F K H J After A A D A D K H J B B C E G F B C E G F D C K H J K K H J E H F 2. 부모에서 첫째 자식으로의 링크를 제외한 모든 수직 링크를 제거 J G 3. 시계방향으로 45 돌리기
Definition 자연대응Natural correspondence 트리와 이진트리의 특별한 관계 루트는 있지만 오른쪽 하위트리는 없는 이진트리 어떤 트리들의 숲 : 그에 대응하는 이진트리 : 이면     의 루트 : 이면     : 빈 이진트리      의 왼쪽 하위트리 :      의 오른쪽 하위트리 :
Example 자연대응Natural correspondence 그에 대응하는 이진트리 A D B C E G F 트리들의 숲 A K H J B D C K E H F J G
45도 회전하지 않는게 편한 경우도 있음 오른쪽 스레드 링크들이  한가족의 제일 오른쪽 자식에서 부모로 간다!
이걸 도대체 왜 하는것인가요? ㅜㅜ 어허… 트리가 나왔는데  운행이라도 해봐야 하지 않겠나 네!
운행Traversing Forest Tree 를 운행하는 것 Forest 를 운행하는 것
Text 운행Traversing 비교
Picture 운행Traversing 비교 ?
Example Forest전위운행 A D A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J K H J (A(B,C(K)),D(E(H),F(J),G))
Example Forest전위운행 A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J (A(B,C(K)),D(E(H),F(J),G))
Example Tree전위운행 A A A A A A B B B B B B D C D D D D D C C C C C K E K K K K K E E E E E H F H H H H H F F F F F J G J G J G J G J G J G (A(B,C(K)),D(E(H),F(J),G))
Example Tree전위운행 A A A A A B B B B B D D D D D C C C C C K K K K K E E E E E H H H H H F F F F F J G J G J G J G J G (A(B,C(K)),D(E(H),F(J),G))
Example Forest후위운행 A D A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J K H J ((B,(K)C)A,((H)E,(J)F,G)D)
Example Forest후위운행 A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J ((B,(K)C)A,((H)E,(J)F,G)D)
Example Tree중위운행 A A A A A A B B B B B B D C D C D D D D C C C C K E K E K K K K E E E E H F H F H H H H F F F F J G J G J G J G J G J G ((B,(K)C)A,((H)E,(J)F,G)D)
Example Tree중위운행 A A A A A B B B B B D D D D D C C C C C K K K K K E E E E E H H H H H F F F F F J G J G J G J G J G ((B,(K)C)A,((H)E,(J)F,G)D)
운행결과 Forest    의 전위 운행결과 (A(B,C(K)),D(E(H),F(J),G))  = 이진트리 의 전위 운행결과 (A(B,C(K)),D(E(H),F(J),G)) Forest    의 후위 운행결과 ((B,(K)C)A,((H)E,(J)F,G)D) = 이진트리 의 중위 운행결과 ((B,(K)C)A,((H)E,(J)F,G)D)
운행결과 P$ 일반 Tree,Forest에서는 후위를 의미 이진트리 에서는 중위를 의미
운행을 마쳤습니다. 자 그럼 이제 실질적인 문제에 적용해보지. 대수 공식의 조작에서 tree 를 써보게나. 오 실질적인 예제! +_+ 네!
실질적인 예 대수공식을 tree 로 표현해보자 - X / = ↑ a 3 + 2 1 왼쪽을 일반적인 트리라고 치고 오른쪽 스레드식이진트리로 변환
Polish notation 폴란드식 표기법 전위운행 Prefix notation 후위운행 postfix notation
Tree 참고) 이산수학 ,[object Object]
트리의 응용
이진트리의 표현
트리 순회 알고리즘
트리에 대한 결과,[object Object]
Example 5.24,25 a 전위preorder   루트 – 왼쪽 - 오른쪽          a b d e c f h i g c b 중위inorder     왼쪽 - 루트 - 오른쪽 d b e a h f I c g d g f e 후위postorder     왼쪽 – 오른쪽 - 루트         d e b h I f g c a i h
Example 5.27 * 전위prefix notation   * + 2 x 4 -> *(2+x)4 -> (2+x)*4 4 + 중위infix notation (2+x)*4 2 x 후위postfix notation  2x+4* -> (2+x)4* -> (2+x)*4
미분이지! 주어진 공식의 변수 x 에 대한 도함수를 구하게나 이제 주어진 공식을  어떻게 조작할까요? 헉 미분 네…
도함수?미분? 함수를 미분한다 = 함수의 변화율을 구한다 = 함수의 기울기를 구한다 = 기울기 측정을 위한 도함수를 구한다
미분 규칙 규칙들에 나열된 연산자들로 구성된 임의의 공식 에 대한 도함수를 구할 수 있다 (11) (12) 미분이 낯설다면 이런 규칙들로 정의되는  하나의 추상적인 연습으로 받아들이자 (13) (14) (15) (16) (17) (18) (19)
Example
트리를 후위 순서로 운행하면서 각 노드의도함수를 형상하는 작업을 전체 도함수가 나올 때까지 계속 후위 운행을 사용한다는 것은 알고리즘이 연산자 노드를 그 피연산자들을 미분한 이후에 처리한다는 뜻 후위운행 postfix notation
서…설마… 자 그럼 이 과정을 MIX 로 해보게나 아악 ㅜ_ㅜ
MIXAL 대수 공식에 대한  오른쪽 스레드 이진 트리의노드 구조 RLINK : 오른쪽 하위 노드 RATG: 스레드인경우1 LLINK : 왼쪽 하위 노드 TYPE : 노드의 종류 TYPE 0 : 하나의 상수 TYPE 1 : 하나의 변수 TYPE 2 : + TYPE 3 : - TYPE 4 : X TYPE 5 : / INFO : 상수일경우 그 값
Algorithm D (미분) Text 변수 X에 대한 공식 Y의 해석적미분을 뜻하는 트리를 만들고 NODE(DY) 가 그것을 가리키게 만든다. D1. [초기화]  	P ← Y$ (트리의 후위순서로 첫째노드) D2. [미분]  	P1 ← LLINK(P) 	if( P1 ≠ null ) then Q1 ← RLINK(P1) 	DIFF[TYPE(P)] 수행 D3. [링크 복원]  	if(TYPE(P) 가 이항연산자) then RLINK(P1) ← P2 D4. [P$로 나아간다]  	P2 ← P, P ← P$ 	if(RTAG(P2) == 0 ) then RLINK(P2) ← Q D5. [끝인가?]  	if(P ≠ Y) then GOTO D2. 	else LLINK(DY) ← Q, RLINK(Q) ← DY, RTAG(Q) ← 1
Algorithm D (미분) Picture 노드로 표현된 트리가 주어지면 y 부터 후위운행 하면서 각 노드의TYPE 기준으로 미분규칙을 수행하고 결과를 tree 로 재구성
Algorithm D (미분) NODE(P) : 오른쪽 스레드식이진트리의루트 트리 구축 함수 TREE(x,U,V)  x 를 루트노트, U 와 V 를 하위트리로 하는  새 트리를 만든다 TREE(x,U)  하위트리가하나인 새 트리를 만든다 TREE(x) x 를 말단 루트 노드로 하는 새 트리를 만든다 미분함수 DIFF(0), DIFF(1) ~ DIFF(8)
트리 구축 함수 Picture TREE(x,U,V)  x 를 루트노트, U와V를 하위트리로 하는  새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← U RLINK(U) ← W, RTAG(U) ← 0,  RLINK(V) ← W, RTAG(V) ← 1 W U V
트리 구축 함수 Picture TREE(x,U)  하위트리가하나인 새 트리를 만든다  W ← AVAIL , INFO(W) ← x, LLINK(W) ← U RLINK(U) ← W, RTAG(U) ← 1  W U
트리 구축 함수 Picture TREE(x)  	x 를 말단 루트 노드로 하는 새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← null W
미분 함수 무항연산자 DIFF(0) 상수 	Q ← TREE(0) (11) DIFF(1) 변수 if(INFO(P) = ‘X’) then Q ← TREE(1)  	else	 Q ← TREE(0)  (12)
미분 함수 단항연산자 (13) DIFF(2) 로그 if(INFO(Q)≠ 0) then Q ← TREE(“/”,Q,COPY(P1))   (14) DIFF(3) 부정 if(INFO(Q) ≠ 0) then Q ← TREE(“neg”,Q)
미분 함수 이항연산자 P1 은 U , P2 는 V Q1 은 D(U), Q 는 D(V) (15) DIFF(4) + 연산 if(INFO(Q1)==0) then AVAIL ← Q1 else if(INFO(Q)==0) AVAIL ← Q, Q ← Q1 else Q ← TREE(“+”,Q1,Q)   … 나머지 부분과  MIX 코드는 생략
Algorithm D (미분) Picture 노드로 표현된 트리가 주어지면 y 부터 후위운행 하면서 각 노드의TYPE 기준으로 미분규칙을 수행하고 결과를 tree 로 재구성

Mais conteúdo relacionado

Semelhante a The Art of Computer Programming 2.3.2 Tree

[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
종빈 오
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2
KoChungWook
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
yonsei
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보
csungwoo
 

Semelhante a The Art of Computer Programming 2.3.2 Tree (20)

파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
How to Study Mathematics for ML
How to Study Mathematics for MLHow to Study Mathematics for ML
How to Study Mathematics for ML
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pca
 
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
 
Tensorflow
TensorflowTensorflow
Tensorflow
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기
 
Chapter 6 Deep feedforward networks - 1
Chapter 6 Deep feedforward networks - 1Chapter 6 Deep feedforward networks - 1
Chapter 6 Deep feedforward networks - 1
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라
 
이산치수학 Project2
이산치수학 Project2이산치수학 Project2
이산치수학 Project2
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
 
DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdf
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
8. Logistic Regression
8. Logistic Regression8. Logistic Regression
8. Logistic Regression
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보
 
Linear algebra
Linear algebraLinear algebra
Linear algebra
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 

Mais de hyun soomyung

Mais de hyun soomyung (20)

Scalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed SystemsScalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed Systems
 
Dependency Breaking Techniques
Dependency Breaking TechniquesDependency Breaking Techniques
Dependency Breaking Techniques
 
아꿈사 매니저소개
아꿈사 매니저소개아꿈사 매니저소개
아꿈사 매니저소개
 
HTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,AudioHTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,Audio
 
Hybrid app
Hybrid appHybrid app
Hybrid app
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
MapReduce
MapReduceMapReduce
MapReduce
 
MongoDB
MongoDBMongoDB
MongoDB
 
Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
 
Clojure Chapter.6
Clojure Chapter.6Clojure Chapter.6
Clojure Chapter.6
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장
 
[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술
 
실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부
 
xUnitTestPattern/chapter8
xUnitTestPattern/chapter8xUnitTestPattern/chapter8
xUnitTestPattern/chapter8
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?
 
Erlang
ErlangErlang
Erlang
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)
 
이산수학 Ch.5
이산수학 Ch.5이산수학 Ch.5
이산수학 Ch.5
 

Último

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Último (7)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 

The Art of Computer Programming 2.3.2 Tree

  • 1. The Art of Computer Programming2.3.2 트리의 이진트리 표현 아키텍트를 꿈꾸는 사람들cafe.naver.com/architect1 현수명 soomong.net #soomong
  • 2. 트리의이진트리 표현 Forest 를이진트리로 변환 운행비교 대수공식의 조작 Algorithm D MIXAL 구현
  • 3. Forest A D B C E G F K H J 임의의 일반 forest 를 이진트리로 표현!
  • 4. 이걸 왜 하는것인가요? ? 자네. 일단 해보게나 네!
  • 5. 임의의 일반 forest 를 이진트리로 표현하기 Text 방법 각 가족의 자식들을 연결하고 2.부모에서 첫째 자식으로의 링크를 제외한 모든 수직 링크를 제거 3. 시계방향으로 45 돌리기
  • 6. Picture 각 가족의 자식들을 연결하고 Before A D A D B C E G F B C E G F K H J After A A D A D K H J B B C E G F B C E G F D C K H J K K H J E H F 2. 부모에서 첫째 자식으로의 링크를 제외한 모든 수직 링크를 제거 J G 3. 시계방향으로 45 돌리기
  • 7. Definition 자연대응Natural correspondence 트리와 이진트리의 특별한 관계 루트는 있지만 오른쪽 하위트리는 없는 이진트리 어떤 트리들의 숲 : 그에 대응하는 이진트리 : 이면 의 루트 : 이면 : 빈 이진트리 의 왼쪽 하위트리 : 의 오른쪽 하위트리 :
  • 8. Example 자연대응Natural correspondence 그에 대응하는 이진트리 A D B C E G F 트리들의 숲 A K H J B D C K E H F J G
  • 9. 45도 회전하지 않는게 편한 경우도 있음 오른쪽 스레드 링크들이 한가족의 제일 오른쪽 자식에서 부모로 간다!
  • 10. 이걸 도대체 왜 하는것인가요? ㅜㅜ 어허… 트리가 나왔는데 운행이라도 해봐야 하지 않겠나 네!
  • 11. 운행Traversing Forest Tree 를 운행하는 것 Forest 를 운행하는 것
  • 14. Example Forest전위운행 A D A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J K H J (A(B,C(K)),D(E(H),F(J),G))
  • 15. Example Forest전위운행 A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J (A(B,C(K)),D(E(H),F(J),G))
  • 16. Example Tree전위운행 A A A A A A B B B B B B D C D D D D D C C C C C K E K K K K K E E E E E H F H H H H H F F F F F J G J G J G J G J G J G (A(B,C(K)),D(E(H),F(J),G))
  • 17. Example Tree전위운행 A A A A A B B B B B D D D D D C C C C C K K K K K E E E E E H H H H H F F F F F J G J G J G J G J G (A(B,C(K)),D(E(H),F(J),G))
  • 18. Example Forest후위운행 A D A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J K H J ((B,(K)C)A,((H)E,(J)F,G)D)
  • 19. Example Forest후위운행 A D A D A D A D A D B C E G F B C E G F B C E G F B C E G F B C E G F K H J K H J K H J K H J K H J ((B,(K)C)A,((H)E,(J)F,G)D)
  • 20. Example Tree중위운행 A A A A A A B B B B B B D C D C D D D D C C C C K E K E K K K K E E E E H F H F H H H H F F F F J G J G J G J G J G J G ((B,(K)C)A,((H)E,(J)F,G)D)
  • 21. Example Tree중위운행 A A A A A B B B B B D D D D D C C C C C K K K K K E E E E E H H H H H F F F F F J G J G J G J G J G ((B,(K)C)A,((H)E,(J)F,G)D)
  • 22. 운행결과 Forest 의 전위 운행결과 (A(B,C(K)),D(E(H),F(J),G)) = 이진트리 의 전위 운행결과 (A(B,C(K)),D(E(H),F(J),G)) Forest 의 후위 운행결과 ((B,(K)C)A,((H)E,(J)F,G)D) = 이진트리 의 중위 운행결과 ((B,(K)C)A,((H)E,(J)F,G)D)
  • 23. 운행결과 P$ 일반 Tree,Forest에서는 후위를 의미 이진트리 에서는 중위를 의미
  • 24. 운행을 마쳤습니다. 자 그럼 이제 실질적인 문제에 적용해보지. 대수 공식의 조작에서 tree 를 써보게나. 오 실질적인 예제! +_+ 네!
  • 25. 실질적인 예 대수공식을 tree 로 표현해보자 - X / = ↑ a 3 + 2 1 왼쪽을 일반적인 트리라고 치고 오른쪽 스레드식이진트리로 변환
  • 26. Polish notation 폴란드식 표기법 전위운행 Prefix notation 후위운행 postfix notation
  • 27.
  • 31.
  • 32. Example 5.24,25 a 전위preorder 루트 – 왼쪽 - 오른쪽 a b d e c f h i g c b 중위inorder 왼쪽 - 루트 - 오른쪽 d b e a h f I c g d g f e 후위postorder 왼쪽 – 오른쪽 - 루트 d e b h I f g c a i h
  • 33. Example 5.27 * 전위prefix notation * + 2 x 4 -> *(2+x)4 -> (2+x)*4 4 + 중위infix notation (2+x)*4 2 x 후위postfix notation 2x+4* -> (2+x)4* -> (2+x)*4
  • 34. 미분이지! 주어진 공식의 변수 x 에 대한 도함수를 구하게나 이제 주어진 공식을 어떻게 조작할까요? 헉 미분 네…
  • 35. 도함수?미분? 함수를 미분한다 = 함수의 변화율을 구한다 = 함수의 기울기를 구한다 = 기울기 측정을 위한 도함수를 구한다
  • 36. 미분 규칙 규칙들에 나열된 연산자들로 구성된 임의의 공식 에 대한 도함수를 구할 수 있다 (11) (12) 미분이 낯설다면 이런 규칙들로 정의되는 하나의 추상적인 연습으로 받아들이자 (13) (14) (15) (16) (17) (18) (19)
  • 38. 트리를 후위 순서로 운행하면서 각 노드의도함수를 형상하는 작업을 전체 도함수가 나올 때까지 계속 후위 운행을 사용한다는 것은 알고리즘이 연산자 노드를 그 피연산자들을 미분한 이후에 처리한다는 뜻 후위운행 postfix notation
  • 39. 서…설마… 자 그럼 이 과정을 MIX 로 해보게나 아악 ㅜ_ㅜ
  • 40. MIXAL 대수 공식에 대한 오른쪽 스레드 이진 트리의노드 구조 RLINK : 오른쪽 하위 노드 RATG: 스레드인경우1 LLINK : 왼쪽 하위 노드 TYPE : 노드의 종류 TYPE 0 : 하나의 상수 TYPE 1 : 하나의 변수 TYPE 2 : + TYPE 3 : - TYPE 4 : X TYPE 5 : / INFO : 상수일경우 그 값
  • 41. Algorithm D (미분) Text 변수 X에 대한 공식 Y의 해석적미분을 뜻하는 트리를 만들고 NODE(DY) 가 그것을 가리키게 만든다. D1. [초기화] P ← Y$ (트리의 후위순서로 첫째노드) D2. [미분] P1 ← LLINK(P) if( P1 ≠ null ) then Q1 ← RLINK(P1) DIFF[TYPE(P)] 수행 D3. [링크 복원] if(TYPE(P) 가 이항연산자) then RLINK(P1) ← P2 D4. [P$로 나아간다] P2 ← P, P ← P$ if(RTAG(P2) == 0 ) then RLINK(P2) ← Q D5. [끝인가?] if(P ≠ Y) then GOTO D2. else LLINK(DY) ← Q, RLINK(Q) ← DY, RTAG(Q) ← 1
  • 42. Algorithm D (미분) Picture 노드로 표현된 트리가 주어지면 y 부터 후위운행 하면서 각 노드의TYPE 기준으로 미분규칙을 수행하고 결과를 tree 로 재구성
  • 43. Algorithm D (미분) NODE(P) : 오른쪽 스레드식이진트리의루트 트리 구축 함수 TREE(x,U,V) x 를 루트노트, U 와 V 를 하위트리로 하는 새 트리를 만든다 TREE(x,U) 하위트리가하나인 새 트리를 만든다 TREE(x) x 를 말단 루트 노드로 하는 새 트리를 만든다 미분함수 DIFF(0), DIFF(1) ~ DIFF(8)
  • 44. 트리 구축 함수 Picture TREE(x,U,V) x 를 루트노트, U와V를 하위트리로 하는 새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← U RLINK(U) ← W, RTAG(U) ← 0, RLINK(V) ← W, RTAG(V) ← 1 W U V
  • 45. 트리 구축 함수 Picture TREE(x,U) 하위트리가하나인 새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← U RLINK(U) ← W, RTAG(U) ← 1 W U
  • 46. 트리 구축 함수 Picture TREE(x) x 를 말단 루트 노드로 하는 새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← null W
  • 47. 미분 함수 무항연산자 DIFF(0) 상수 Q ← TREE(0) (11) DIFF(1) 변수 if(INFO(P) = ‘X’) then Q ← TREE(1) else Q ← TREE(0) (12)
  • 48. 미분 함수 단항연산자 (13) DIFF(2) 로그 if(INFO(Q)≠ 0) then Q ← TREE(“/”,Q,COPY(P1)) (14) DIFF(3) 부정 if(INFO(Q) ≠ 0) then Q ← TREE(“neg”,Q)
  • 49. 미분 함수 이항연산자 P1 은 U , P2 는 V Q1 은 D(U), Q 는 D(V) (15) DIFF(4) + 연산 if(INFO(Q1)==0) then AVAIL ← Q1 else if(INFO(Q)==0) AVAIL ← Q, Q ← Q1 else Q ← TREE(“+”,Q1,Q) … 나머지 부분과 MIX 코드는 생략
  • 50. Algorithm D (미분) Picture 노드로 표현된 트리가 주어지면 y 부터 후위운행 하면서 각 노드의TYPE 기준으로 미분규칙을 수행하고 결과를 tree 로 재구성
  • 51. 연습문제 1. 본문에서는 숲 F 에 대응되는 이진트리 B(F) 의 공식적인 정의를 제시했다. 그 반대에 대한, 다시말해서이진트리B 에 해당하는 숲 F(B) 에 대한 공식적인 정의를 제시하라. 어떤 이진트리: B 그에 대응하는 숲: F(B) 만일 B가 비었으면 :빈 숲 그렇지 않으면 : F(B)는 하나의 트리 T + 숲F(right(B)) root(T) = root(B) subtree(T) = F(left(B))