SlideShare a Scribd company logo
The Art of Computer Programming2.3.2 트리의 이진트리 표현아키텍트를 꿈꾸는 사람들cafe.naver.com/architect1현수명  soomong.net#soomong
트리의이진트리 표현	Forest 를이진트리로 변환운행비교대수공식의 조작	Algorithm D	MIXAL 구현
ForestADBCEGFKHJ임의의 일반 forest 를이진트리로 표현!
이걸 왜 하는것인가요??자네.일단 해보게나네!
임의의 일반 forest 를 이진트리로 표현하기Text방법각 가족의 자식들을 연결하고2.부모에서 첫째 자식으로의 링크를 제외한모든 수직 링크를 제거3. 시계방향으로 45 돌리기
Picture각 가족의 자식들을 연결하고BeforeADADBCEGFBCEGFKHJAfterAADADKHJBBCEGFBCEGFDCKHJKKHJEHF2. 부모에서 첫째 자식으로의 링크를 제외한모든 수직 링크를 제거JG3. 시계방향으로 45 돌리기
Definition자연대응Natural correspondence트리와 이진트리의 특별한 관계루트는 있지만 오른쪽 하위트리는 없는 이진트리어떤 트리들의 숲 :그에 대응하는 이진트리 :이면     의 루트 :이면     : 빈 이진트리     의 왼쪽 하위트리 :     의 오른쪽 하위트리 :
Example자연대응Natural correspondence그에 대응하는 이진트리ADBCEGF트리들의 숲AKHJBDCKEHFJG
45도 회전하지 않는게 편한 경우도 있음오른쪽 스레드 링크들이 한가족의 제일 오른쪽 자식에서 부모로 간다!
이걸 도대체 왜 하는것인가요? ㅜㅜ어허…트리가 나왔는데 운행이라도 해봐야 하지 않겠나네!
운행Traversing ForestTree 를 운행하는 것Forest 를 운행하는 것
Text운행Traversing 비교
Picture운행Traversing 비교?
ExampleForest전위운행ADADADADADADBCEGFBCEGFBCEGFBCEGFBCEGFBCEGFKHJKHJKHJKHJKHJKHJ(A(B,C(K)),D(E(H),F(J),G))
ExampleForest전위운행ADADADADADBCEGFBCEGFBCEGFBCEGFBCEGFKHJKHJKHJKHJKHJ(A(B,C(K)),D(E(H),F(J),G))
ExampleTree전위운행AAAAAABBBBBBDCDDDDDCCCCCKEKKKKKEEEEEHFHHHHHFFFFFJGJGJGJGJGJG(A(B,C(K)),D(E(H),F(J),G))
ExampleTree전위운행AAAAABBBBBDDDDDCCCCCKKKKKEEEEEHHHHHFFFFFJGJGJGJGJG(A(B,C(K)),D(E(H),F(J),G))
ExampleForest후위운행ADADADADADADBCEGFBCEGFBCEGFBCEGFBCEGFBCEGFKHJKHJKHJKHJKHJKHJ((B,(K)C)A,((H)E,(J)F,G)D)
ExampleForest후위운행ADADADADADBCEGFBCEGFBCEGFBCEGFBCEGFKHJKHJKHJKHJKHJ((B,(K)C)A,((H)E,(J)F,G)D)
ExampleTree중위운행AAAAAABBBBBBDCDCDDDDCCCCKEKEKKKKEEEEHFHFHHHHFFFFJGJGJGJGJGJG((B,(K)C)A,((H)E,(J)F,G)D)
ExampleTree중위운행AAAAABBBBBDDDDDCCCCCKKKKKEEEEEHHHHHFFFFFJGJGJGJGJG((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/=↑a3+21왼쪽을 일반적인 트리라고 치고오른쪽 스레드식이진트리로 변환
Polish notation폴란드식 표기법전위운행 Prefix notation후위운행 postfix notation
Tree참고) 이산수학트리의 용어
트리의 응용
이진트리의 표현
트리 순회 알고리즘
트리에 대한 결과부분트리들을recursive 하게 순회하는 알고리즘rr1…rtr2T1TtT2전위preorder후위postorder중위inorder
Example 5.24,25a전위preorder  루트 – 왼쪽 - 오른쪽         a b d e c f h i gcb중위inorder    왼쪽 - 루트 - 오른쪽d b e a h f I c gdgfe후위postorder    왼쪽 – 오른쪽 - 루트        d e b h I f g c aih
Example 5.27*전위prefix notation  * + 2 x 4 -> *(2+x)4 -> (2+x)*44+중위infix notation(2+x)*42x후위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: 스레드인경우1LLINK : 왼쪽 하위 노드TYPE : 노드의 종류TYPE 0 : 하나의 상수TYPE 1 : 하나의 변수TYPE 2 : +TYPE 3 : -TYPE 4 : XTYPE 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) ← P2D4. [P$로 나아간다] 	P2 ← P, P ← P$	if(RTAG(P2) == 0 ) then RLINK(P2) ← QD5. [끝인가?] 	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)
트리 구축 함수PictureTREE(x,U,V) x 를 루트노트, U와V를 하위트리로 하는 새 트리를 만든다W ← AVAIL , INFO(W) ← x, LLINK(W) ← URLINK(U) ← W, RTAG(U) ← 0, RLINK(V) ← W, RTAG(V) ← 1WUV
트리 구축 함수PictureTREE(x,U) 하위트리가하나인 새 트리를 만든다 W ← AVAIL , INFO(W) ← x, LLINK(W) ← URLINK(U) ← W, RTAG(U) ← 1 WU
트리 구축 함수PictureTREE(x) 	x 를 말단 루트 노드로 하는 새 트리를 만든다W ← AVAIL , INFO(W) ← x, LLINK(W) ← nullW
미분 함수무항연산자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 는 VQ1 은 D(U), Q 는 D(V)(15)DIFF(4) + 연산if(INFO(Q1)==0) then AVAIL ← Q1else if(INFO(Q)==0) AVAIL ← Q, Q ← Q1else Q ← TREE(“+”,Q1,Q)  …나머지 부분과 MIX 코드는 생략
Algorithm D (미분)Picture노드로 표현된 트리가 주어지면 y 부터 후위운행 하면서각 노드의TYPE 기준으로 미분규칙을 수행하고결과를 tree 로 재구성

More Related Content

PDF
Web Application Security 101
Cybersecurity Education and Research Centre
 
PPTX
Control statements in java
Manojkumar C
 
PPT
Linkers And Loaders
Satpal Parmar
 
PPTX
Chat application with Azure SignalR Service
Krunal Trivedi
 
PDF
The SHA Hashing Algorithm
Bob Landstrom
 
PDF
how-to-bypass-AM-PPL
nitinscribd
 
PDF
Java8 features
Elias Hasnat
 
PDF
Mastering Modern C++: C++11, C++14, C++17, C++20, C++23
ICTperspectives
 
Web Application Security 101
Cybersecurity Education and Research Centre
 
Control statements in java
Manojkumar C
 
Linkers And Loaders
Satpal Parmar
 
Chat application with Azure SignalR Service
Krunal Trivedi
 
The SHA Hashing Algorithm
Bob Landstrom
 
how-to-bypass-AM-PPL
nitinscribd
 
Java8 features
Elias Hasnat
 
Mastering Modern C++: C++11, C++14, C++17, C++20, C++23
ICTperspectives
 

What's hot (6)

PPTX
Passwords presentation
Greg MacPherson
 
PDF
C++ Files and Streams
Ahmed Farag
 
PDF
Swift Introduction
Natasha Murashev
 
PDF
JavaScript for Hackers.pdf
nafees40
 
PPT
Application Security
florinc
 
PPTX
Call by value or call by reference in C++
Sachin Yadav
 
Passwords presentation
Greg MacPherson
 
C++ Files and Streams
Ahmed Farag
 
Swift Introduction
Natasha Murashev
 
JavaScript for Hackers.pdf
nafees40
 
Application Security
florinc
 
Call by value or call by reference in C++
Sachin Yadav
 
Ad

Similar to The Art of Computer Programming 2.3.2 Tree (20)

PDF
Ch05
Hankyo
 
PPTX
파이썬+Operator+이해하기 20160409
Yong Joon Moon
 
PDF
How to Study Mathematics for ML
Dataya Nolja
 
PPTX
Eigendecomposition and pca
Jinhwan Suk
 
PDF
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
종빈 오
 
PPTX
Tensorflow
chs71
 
PDF
마칭 큐브 알고리즘 - ZP 2019 데캠
동환 김
 
PPTX
파이썬 Numpy 선형대수 이해하기
Yong Joon Moon
 
PDF
Chapter 6 Deep feedforward networks - 1
KyeongUkJang
 
PPTX
자바프로그래머를 위한 스칼라
Jong Gook Bae
 
DOCX
이산치수학 Project2
KoChungWook
 
PPT
Data Structure 2
yonsei
 
PDF
DP 알고리즘에 대해 알아보자.pdf
Ho Jeong Im
 
PDF
R 시작해보기
SEUNGWOO LEE
 
PDF
알고리즘과 자료구조
영기 김
 
PDF
8. Logistic Regression
Jungkyu Lee
 
PPT
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
PPT
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
PPT
제4강 명제와 논리-정보
csungwoo
 
PDF
Linear algebra
Sungbin Lim
 
Ch05
Hankyo
 
파이썬+Operator+이해하기 20160409
Yong Joon Moon
 
How to Study Mathematics for ML
Dataya Nolja
 
Eigendecomposition and pca
Jinhwan Suk
 
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
종빈 오
 
Tensorflow
chs71
 
마칭 큐브 알고리즘 - ZP 2019 데캠
동환 김
 
파이썬 Numpy 선형대수 이해하기
Yong Joon Moon
 
Chapter 6 Deep feedforward networks - 1
KyeongUkJang
 
자바프로그래머를 위한 스칼라
Jong Gook Bae
 
이산치수학 Project2
KoChungWook
 
Data Structure 2
yonsei
 
DP 알고리즘에 대해 알아보자.pdf
Ho Jeong Im
 
R 시작해보기
SEUNGWOO LEE
 
알고리즘과 자료구조
영기 김
 
8. Logistic Regression
Jungkyu Lee
 
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
[0326 석재호]상호배타적 집합의 처리
Jaeho Seok
 
제4강 명제와 논리-정보
csungwoo
 
Linear algebra
Sungbin Lim
 
Ad

More from hyun soomyung (20)

PPTX
Scalable Web Architecture and Distributed Systems
hyun soomyung
 
PPTX
Dependency Breaking Techniques
hyun soomyung
 
PPTX
아꿈사 매니저소개
hyun soomyung
 
PPTX
HTML5 & CSS3 - Video,Audio
hyun soomyung
 
PPTX
Hybrid app
hyun soomyung
 
PPTX
Domain Driven Design
hyun soomyung
 
PPTX
MapReduce
hyun soomyung
 
PPTX
MongoDB
hyun soomyung
 
PPTX
The Art of Computer Programming 2.4 다중연결구조
hyun soomyung
 
PPTX
Design Pattern - Multithread Ch10
hyun soomyung
 
PPTX
The Art of Computer Programming 1.3.2 MIXAL
hyun soomyung
 
PPTX
The Art of Computer Programming 1.2.5
hyun soomyung
 
PPTX
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
hyun soomyung
 
PPTX
Clojure Chapter.6
hyun soomyung
 
PPTX
프로그래머의 길,멘토에게 묻다 2장
hyun soomyung
 
PPTX
[페차쿠차] 배움의 기술
hyun soomyung
 
PDF
실전 윈도우 디버깅. Ch3. 디버거 해부
hyun soomyung
 
PPTX
xUnitTestPattern/chapter8
hyun soomyung
 
PPTX
예제로 보는 Pattern 연상법
hyun soomyung
 
PPTX
프로그램은 왜 실패하는가?
hyun soomyung
 
Scalable Web Architecture and Distributed Systems
hyun soomyung
 
Dependency Breaking Techniques
hyun soomyung
 
아꿈사 매니저소개
hyun soomyung
 
HTML5 & CSS3 - Video,Audio
hyun soomyung
 
Hybrid app
hyun soomyung
 
Domain Driven Design
hyun soomyung
 
MapReduce
hyun soomyung
 
MongoDB
hyun soomyung
 
The Art of Computer Programming 2.4 다중연결구조
hyun soomyung
 
Design Pattern - Multithread Ch10
hyun soomyung
 
The Art of Computer Programming 1.3.2 MIXAL
hyun soomyung
 
The Art of Computer Programming 1.2.5
hyun soomyung
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
hyun soomyung
 
Clojure Chapter.6
hyun soomyung
 
프로그래머의 길,멘토에게 묻다 2장
hyun soomyung
 
[페차쿠차] 배움의 기술
hyun soomyung
 
실전 윈도우 디버깅. Ch3. 디버거 해부
hyun soomyung
 
xUnitTestPattern/chapter8
hyun soomyung
 
예제로 보는 Pattern 연상법
hyun soomyung
 
프로그램은 왜 실패하는가?
hyun soomyung
 

The Art of Computer Programming 2.3.2 Tree