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
2021 1학기 정기 세미나 6주차
PDF
2021 2학기 정기 세미나 4주차
PDF
알고리즘 스터디(정렬) Seungdols
PDF
2021 2학기 정기 세미나 5주차
PDF
알고리즘과 자료구조
PDF
Linear algebra
PDF
Wasserstein GAN 수학 이해하기 I
PDF
차원축소 훑어보기 (PCA, SVD, NMF)
2021 1학기 정기 세미나 6주차
2021 2학기 정기 세미나 4주차
알고리즘 스터디(정렬) Seungdols
2021 2학기 정기 세미나 5주차
알고리즘과 자료구조
Linear algebra
Wasserstein GAN 수학 이해하기 I
차원축소 훑어보기 (PCA, SVD, NMF)

What's hot (20)

PDF
HI-ARC Number Theory
PPTX
R 프로그래밍-향상된 데이타 조작
PDF
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
PDF
7. Linear Regression
PDF
Gmm to vgmm
PDF
HI-ARC PS 102 Brute Force
PDF
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
PDF
Backtracking [ICPC Sinchon]
PPTX
R 프로그래밍 기본 문법
PPTX
R 기본-데이타형 소개
PDF
3 Generative models for discrete data
PDF
How to Study Mathematics for ML
PDF
Flow based generative models
PPTX
Murpy's Machine Learing: 10. Directed Graphical Model
PDF
Support Vector Machine Tutorial 한국어
PDF
[신경망기초] 신경망의시작-퍼셉트론
PPTX
머피's 머신러닝: Latent Linear Model
PDF
[신경망기초] 선형회귀분석
PPTX
R 프로그램의 이해와 활용 v1.1
PDF
R 스터디 네번째
HI-ARC Number Theory
R 프로그래밍-향상된 데이타 조작
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
7. Linear Regression
Gmm to vgmm
HI-ARC PS 102 Brute Force
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
Backtracking [ICPC Sinchon]
R 프로그래밍 기본 문법
R 기본-데이타형 소개
3 Generative models for discrete data
How to Study Mathematics for ML
Flow based generative models
Murpy's Machine Learing: 10. Directed Graphical Model
Support Vector Machine Tutorial 한국어
[신경망기초] 신경망의시작-퍼셉트론
머피's 머신러닝: Latent Linear Model
[신경망기초] 선형회귀분석
R 프로그램의 이해와 활용 v1.1
R 스터디 네번째
Ad

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

PDF
Ch05
PPTX
파이썬+Operator+이해하기 20160409
PPTX
Eigendecomposition and pca
PDF
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
PPTX
Tensorflow
PDF
마칭 큐브 알고리즘 - ZP 2019 데캠
PPTX
파이썬 Numpy 선형대수 이해하기
PDF
Chapter 6 Deep feedforward networks - 1
PPTX
자바프로그래머를 위한 스칼라
DOCX
이산치수학 Project2
PPT
Data Structure 2
PDF
DP 알고리즘에 대해 알아보자.pdf
PDF
R 시작해보기
PDF
8. Logistic Regression
PPT
[0326 석재호]상호배타적 집합의 처리
PPT
[0326 석재호]상호배타적 집합의 처리
PPT
제4강 명제와 논리-정보
Ch05
파이썬+Operator+이해하기 20160409
Eigendecomposition and pca
[SICP] 4.4 Logic Programming : 논리로 프로그램 짜기
Tensorflow
마칭 큐브 알고리즘 - ZP 2019 데캠
파이썬 Numpy 선형대수 이해하기
Chapter 6 Deep feedforward networks - 1
자바프로그래머를 위한 스칼라
이산치수학 Project2
Data Structure 2
DP 알고리즘에 대해 알아보자.pdf
R 시작해보기
8. Logistic Regression
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
제4강 명제와 논리-정보
Ad

More from hyun soomyung (20)

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

The Art of Computer Programming 2.3.2 Tree