Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

1,567 views

Published on

TAOCP 아꿈사 스터디 발표

Published in: Technology, Art & Photos, Business
  • Be the first to comment

  • Be the first to like this

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 />

×