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

The Art of Computer Programming 2.3.2 Tree

963

Published on

TAOCP 아꿈사 스터디 발표

Published in: Technology, Art & Photos, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
963
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

The Art of Computer Programming 2.3.2 Tree

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

×