Your SlideShare is downloading. ×
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

The Art of Computer Programming 2.3.2 Tree

912

Published on

TAOCP 아꿈사 스터디 발표

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
912
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 를 운행하는 것
  • 12. Text
    운행Traversing 비교
  • 13. Picture
    운행Traversing 비교
    ?
  • 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. Tree
    참고) 이산수학
    • 트리의 용어
    • 28. 트리의 응용
    • 29. 이진트리의 표현
    • 30. 트리 순회 알고리즘
    • 31. 트리에 대한 결과
  • 부분트리들을recursive 하게 순회하는 알고리즘
    r
    r1

    rt
    r2
    T1
    Tt
    T2
    전위preorder
    후위postorder
    중위inorder
  • 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)
  • 37. Example
  • 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))
  • 52. Reference
    미분 http://blog.naver.com/PostView.nhn?blogId=cbr399&logNo=90027935516
    커누스 할아버지 http://bit.ly/m3fkJq
  • 53. 수고많았습니다
    감사합니다

×