SlideShare una empresa de Scribd logo
1 de 31
TAOCP – 2.3.3 트리의 다른 표현들 아꿈사 김성안 <wakeup01@gmail.com>
트리의 다른 표현들 순차 할당 기법 전위 순차 표현 가족 순차 표현 수준 순서 순차 표현 차수가 부연된 후위 순서 순차 표현 연결된 형태의 표현 연결 트리 삼중 연결 트리 고리 구조
순차 할당 기법 트리 구조를 간결하게 표현하고자 할 때 적합하다. 트리 노드의LLINK필드를 제거하고, 연속적인 주소 접근 방식을 사용하는 형태이다.
순차 할당 기법 다음 트리를 생각해 봅시다. 이를 트리 형태와 이진트리 형태로 표현하면
전위 순차 표현1 노드를 전위 순서로 배치한다. 각노드에INFO, RLINK, LTAG필드를 둔다. 화살표는 공링크가 아닌 RLINK이다. 말단 노드는LTAG=1이다. LLINK는 공링크이거나 바로 다음 항목이기 때문에 필요가 없다.
전위 순차 표현1 한 노드의 모든 하위 트리는 그 노드 바로 다음에 나타난다. RLINK 화살표가 서로 교차하지 않는다. X와 RLINK(X)사이의 노드는X의 왼쪽 하위 트리에 놓인다. 전위 순서로 배치했기 때문이다. LTAG필드는 중복이다. LTAG는 숲의 끝에서만, 모든 아래쪽 화살표에 앞서서 나타난다.
전위 순차 표현1 RLINK 절반 이상이 공링크이다. 순차적으로 탐색하지 않는 이상 추가적인 계산이 필요하다.
전위 순차 표현2 RLINK도 중복이다. RTAG 필드를 둔다. 트리를 재구축하려면 LTAG=1인 경우 가장 최근에 발견된 불완전한 RLINK를 완성해야한다. 즉, 스택이 필요하다.
전위 순차 표현2 RLINK도 중복이다. RTAG 필드를 둔다. 트리를 재구축하려면 LTAG=1인 경우 가장 최근에 발견된 불완전한 RLINK를 완성해야한다. 즉, 스택이 필요하다.
전위 순차 표현3 각 노드의RLINK에 그 노드 아래의 하위 트리 다음의주소를 넣는다. RLINK는 범위를 뜻하는 SCOPE라고 부르기도 한다. LTAG(X)=1는 SCOPE(X) = X + c를 따른다. C는 노드당 워드 개수
전위 순차 표현4 RLINK필드를 제거하고, 공링크가 아닌 RLINK를 가진 노드 앞에 특별한 “링크”노드를 둔다. INFO필드와 RLINK가 대략 같은 공간을 사용한다면 메모리를 절약할 수 있다.
가족 순차 표현 LLINK대신 RLINK를 생략하는 표현이다. 역 후위 순위 순서와 동일하다.
가족 순차 표현 RTAG는 가족을 구분하는 역할이다. 모든 트리의 루트를 나열하고 가장 최근에 나타난 노드가 속한 가족을 택하는 방식으로 진행한다. LLINK화살표는 교차하지 않는다. 전위 표현의 다른 성질도 물려 받는다.
수준 순서 순차 표현 각 수준마다 노드들을 그냥 왼쪽에서 오른쪽으로 나열하다. 너비 우선 탐색 선입선출 cf. 전위/가족 순서 표현 깊이 우선 탐색 후입선출
차수가 부연된 후위 순서 순차 표현 노드를 후위 순서로 나열하고 각 노드에 링크대신 차수를 부여한다. 트리 노드들에 대해 정의된 “상향식”으로 평가할 때 유용하다. 알고리즘 F
알고리즘 F 트리 안에서 국소 정의된 함수를 평가한다. F1.[초기화]스택을 비우고, P가 숲의 후위 순서로 첫째 노드를 가리키게 한다. F2.[평가]d<-DEGREE(P)로 설정한다. f(NODE(P))를 스택에 있는 f(x)의 값들을 이용해서 평가한다. F3.[스택갱신]최상위 항목 d개를 제거한다. 그리고 f(NODE(P))를 스택 최상위에 넣는다. F4.[전진]만일 P가 후위 순서로 마지막 노드이면 알고리즘을 끝낸다. 그런 다음 단계 F2로 돌아간다.
연결된 형태의 표현 (3)을 (6)으로 바꾸는 변환과 관련이 있다. 모든 비말단노드에서INFO필드를 제거한다. 해당 정보를 담은 새 말단 노드를 그전 노드 아래에 추가한다.
연결된 형태의 표현 LLINK와 INFO는 서로 배타적이다. 각 노드에서 같은 필드 공간을 공유할 수 있다. LLINK인지 INFO인지는 LTAG로 지정하면 된다. INFO를 조절하면 하나의 노드를 하나의 워드에 담을 수 있다. NODE 수는 15로 늘어났다. 메모리 절약 효과가 없다. LLINK가 제거되었지만, 그만큼 RLINK가 추가된 노드가 생기기 때문이다.
삼중 연결 트리 좀 더 빠른 상향 참조를 위해 각 노드에PARENT링크를 추가한다.
PARENT링크 PARENT링크 그 자체로도 임의의 유향 트리를 규정하는데 충분히 명백하다. 루트를 제외한 모든 노드는 자식이 여러 개일 수 있지만 부모는 오직 하나이다. 하향 링크를 두는 것보다 상향 링크를 두는 것이 더 간단하다.
PARENT링크 그러나,PARENT링크만으로 된 트리는 큰 쓸모가 없다. 노드가 말단인지 아닌지 빠르게 판단하기 힘들다. 주어진 노드의 자식을 빠르게 찾기도 힘들다. 그러나!, 상향 링크들로만 충분한 한 가지 매우 중요한 응용이 존재한다. 동치 관계를 다루는 알고리즘
동치 관계 “≡”로 표기하는 동치관계는 객체들의 집합S의 원소들 사이의 한 관계로, S의 임의의 객체 x, y, z에 대해 다음의 세 성질들을 만족한다. 1)만일 x≡y이고 y≡z이면 x≡z. (추이) 2)만일 x≡y이고 y≡x. (대칭) 3)x≡x. (반영)
동치 관계   ⇒ 유향 트리 구조로 동치류들을 합치거나 주어진 두 원소가 같은 부류인지 판정이 가능하다. 알고리즘E
알고리즘E 동치 관계를 처리한다. E1.[초기화]1≤k≤n에 대해 PARENT[k]←0으로 설정한다. E2.[입력]입력에서 다음 동치 관계쌍“j≡k”를 가져온다. 입력을 다 소비했다면 알고리즘을 끝낸다. E3.[루트찾기]만일 PARENT[j]>0이면 j←PARENT[j]로 설정하고 이 단계를 반복한다. 만일 PARENT[k]>0이면 k←PARENT[k]를설정하고 이 단계를 반복한다. E4.[트리병합]만일 j≠k이면 PARENT[j]←k로 설정하고, 단계 E2로 돌아간다.
알고리즘E   ⇒
고리구조 두 방향 링크 LLINK와 RLINK 모두에 순환 링크를 사용하는 방법이다.
고리구조 다항식 산술에 적용 알고리즘A
알고리즘A
연습문제 이...이건...
끝

Más contenido relacionado

Destacado

띄어쓰기 덜 틀리기 1편
띄어쓰기 덜 틀리기 1편띄어쓰기 덜 틀리기 1편
띄어쓰기 덜 틀리기 1편Beom Sun Chung
 
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수cbs15min
 
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수Ignite Masan
 
치즈인더트랩 손다혜
치즈인더트랩 손다혜치즈인더트랩 손다혜
치즈인더트랩 손다혜다혜 손
 
Happy Walk - 직장인을 위한 행복한 걷기 CCL
Happy Walk - 직장인을 위한 행복한 걷기  CCLHappy Walk - 직장인을 위한 행복한 걷기  CCL
Happy Walk - 직장인을 위한 행복한 걷기 CCLJinho Jung
 
SNS Addiction & Harmful Influence
SNS  Addiction & Harmful InfluenceSNS  Addiction & Harmful Influence
SNS Addiction & Harmful Influence수영 최
 
이상한나라의엘리스(이상한 나라의 SNS)
이상한나라의엘리스(이상한 나라의 SNS)이상한나라의엘리스(이상한 나라의 SNS)
이상한나라의엘리스(이상한 나라의 SNS)기영 김
 
소셜 네트워크 앱 개발
소셜 네트워크 앱 개발소셜 네트워크 앱 개발
소셜 네트워크 앱 개발Kenu, GwangNam Heo
 
프로젝션프로젝트 인기척
프로젝션프로젝트   인기척프로젝션프로젝트   인기척
프로젝션프로젝트 인기척jrim Choi
 
고도리 Ppt 1
고도리 Ppt 1고도리 Ppt 1
고도리 Ppt 1heesummer
 
직구와아마존1차정리
직구와아마존1차정리직구와아마존1차정리
직구와아마존1차정리Dae Sung Kim
 
개인정보보호Ato z
개인정보보호Ato z개인정보보호Ato z
개인정보보호Ato z이창 주
 
성기능 장애
성기능 장애성기능 장애
성기능 장애kelly92765
 
전통매체 위기의 구조와 미래 전망
전통매체 위기의 구조와 미래 전망전통매체 위기의 구조와 미래 전망
전통매체 위기의 구조와 미래 전망soon choi
 

Destacado (16)

띄어쓰기 덜 틀리기 1편
띄어쓰기 덜 틀리기 1편띄어쓰기 덜 틀리기 1편
띄어쓰기 덜 틀리기 1편
 
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수
세바시15분 일맘의 번아웃 솔루션, '연민' @윤대현 서울대학교병원 정신건강의학과 교수
 
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수
3rd ignite masan_02_굶으면, 비로소 보이는 것들_김범수
 
치즈인더트랩 손다혜
치즈인더트랩 손다혜치즈인더트랩 손다혜
치즈인더트랩 손다혜
 
Zoom 내 작은 몸짓이
Zoom 내 작은 몸짓이Zoom 내 작은 몸짓이
Zoom 내 작은 몸짓이
 
Happy Walk - 직장인을 위한 행복한 걷기 CCL
Happy Walk - 직장인을 위한 행복한 걷기  CCLHappy Walk - 직장인을 위한 행복한 걷기  CCL
Happy Walk - 직장인을 위한 행복한 걷기 CCL
 
SNS Addiction & Harmful Influence
SNS  Addiction & Harmful InfluenceSNS  Addiction & Harmful Influence
SNS Addiction & Harmful Influence
 
Sns 와 privacy
Sns 와 privacySns 와 privacy
Sns 와 privacy
 
이상한나라의엘리스(이상한 나라의 SNS)
이상한나라의엘리스(이상한 나라의 SNS)이상한나라의엘리스(이상한 나라의 SNS)
이상한나라의엘리스(이상한 나라의 SNS)
 
소셜 네트워크 앱 개발
소셜 네트워크 앱 개발소셜 네트워크 앱 개발
소셜 네트워크 앱 개발
 
프로젝션프로젝트 인기척
프로젝션프로젝트   인기척프로젝션프로젝트   인기척
프로젝션프로젝트 인기척
 
고도리 Ppt 1
고도리 Ppt 1고도리 Ppt 1
고도리 Ppt 1
 
직구와아마존1차정리
직구와아마존1차정리직구와아마존1차정리
직구와아마존1차정리
 
개인정보보호Ato z
개인정보보호Ato z개인정보보호Ato z
개인정보보호Ato z
 
성기능 장애
성기능 장애성기능 장애
성기능 장애
 
전통매체 위기의 구조와 미래 전망
전통매체 위기의 구조와 미래 전망전통매체 위기의 구조와 미래 전망
전통매체 위기의 구조와 미래 전망
 

taocp 2.3.3

  • 1. TAOCP – 2.3.3 트리의 다른 표현들 아꿈사 김성안 <wakeup01@gmail.com>
  • 2. 트리의 다른 표현들 순차 할당 기법 전위 순차 표현 가족 순차 표현 수준 순서 순차 표현 차수가 부연된 후위 순서 순차 표현 연결된 형태의 표현 연결 트리 삼중 연결 트리 고리 구조
  • 3. 순차 할당 기법 트리 구조를 간결하게 표현하고자 할 때 적합하다. 트리 노드의LLINK필드를 제거하고, 연속적인 주소 접근 방식을 사용하는 형태이다.
  • 4. 순차 할당 기법 다음 트리를 생각해 봅시다. 이를 트리 형태와 이진트리 형태로 표현하면
  • 5. 전위 순차 표현1 노드를 전위 순서로 배치한다. 각노드에INFO, RLINK, LTAG필드를 둔다. 화살표는 공링크가 아닌 RLINK이다. 말단 노드는LTAG=1이다. LLINK는 공링크이거나 바로 다음 항목이기 때문에 필요가 없다.
  • 6. 전위 순차 표현1 한 노드의 모든 하위 트리는 그 노드 바로 다음에 나타난다. RLINK 화살표가 서로 교차하지 않는다. X와 RLINK(X)사이의 노드는X의 왼쪽 하위 트리에 놓인다. 전위 순서로 배치했기 때문이다. LTAG필드는 중복이다. LTAG는 숲의 끝에서만, 모든 아래쪽 화살표에 앞서서 나타난다.
  • 7. 전위 순차 표현1 RLINK 절반 이상이 공링크이다. 순차적으로 탐색하지 않는 이상 추가적인 계산이 필요하다.
  • 8. 전위 순차 표현2 RLINK도 중복이다. RTAG 필드를 둔다. 트리를 재구축하려면 LTAG=1인 경우 가장 최근에 발견된 불완전한 RLINK를 완성해야한다. 즉, 스택이 필요하다.
  • 9. 전위 순차 표현2 RLINK도 중복이다. RTAG 필드를 둔다. 트리를 재구축하려면 LTAG=1인 경우 가장 최근에 발견된 불완전한 RLINK를 완성해야한다. 즉, 스택이 필요하다.
  • 10. 전위 순차 표현3 각 노드의RLINK에 그 노드 아래의 하위 트리 다음의주소를 넣는다. RLINK는 범위를 뜻하는 SCOPE라고 부르기도 한다. LTAG(X)=1는 SCOPE(X) = X + c를 따른다. C는 노드당 워드 개수
  • 11. 전위 순차 표현4 RLINK필드를 제거하고, 공링크가 아닌 RLINK를 가진 노드 앞에 특별한 “링크”노드를 둔다. INFO필드와 RLINK가 대략 같은 공간을 사용한다면 메모리를 절약할 수 있다.
  • 12. 가족 순차 표현 LLINK대신 RLINK를 생략하는 표현이다. 역 후위 순위 순서와 동일하다.
  • 13. 가족 순차 표현 RTAG는 가족을 구분하는 역할이다. 모든 트리의 루트를 나열하고 가장 최근에 나타난 노드가 속한 가족을 택하는 방식으로 진행한다. LLINK화살표는 교차하지 않는다. 전위 표현의 다른 성질도 물려 받는다.
  • 14. 수준 순서 순차 표현 각 수준마다 노드들을 그냥 왼쪽에서 오른쪽으로 나열하다. 너비 우선 탐색 선입선출 cf. 전위/가족 순서 표현 깊이 우선 탐색 후입선출
  • 15. 차수가 부연된 후위 순서 순차 표현 노드를 후위 순서로 나열하고 각 노드에 링크대신 차수를 부여한다. 트리 노드들에 대해 정의된 “상향식”으로 평가할 때 유용하다. 알고리즘 F
  • 16. 알고리즘 F 트리 안에서 국소 정의된 함수를 평가한다. F1.[초기화]스택을 비우고, P가 숲의 후위 순서로 첫째 노드를 가리키게 한다. F2.[평가]d<-DEGREE(P)로 설정한다. f(NODE(P))를 스택에 있는 f(x)의 값들을 이용해서 평가한다. F3.[스택갱신]최상위 항목 d개를 제거한다. 그리고 f(NODE(P))를 스택 최상위에 넣는다. F4.[전진]만일 P가 후위 순서로 마지막 노드이면 알고리즘을 끝낸다. 그런 다음 단계 F2로 돌아간다.
  • 17. 연결된 형태의 표현 (3)을 (6)으로 바꾸는 변환과 관련이 있다. 모든 비말단노드에서INFO필드를 제거한다. 해당 정보를 담은 새 말단 노드를 그전 노드 아래에 추가한다.
  • 18. 연결된 형태의 표현 LLINK와 INFO는 서로 배타적이다. 각 노드에서 같은 필드 공간을 공유할 수 있다. LLINK인지 INFO인지는 LTAG로 지정하면 된다. INFO를 조절하면 하나의 노드를 하나의 워드에 담을 수 있다. NODE 수는 15로 늘어났다. 메모리 절약 효과가 없다. LLINK가 제거되었지만, 그만큼 RLINK가 추가된 노드가 생기기 때문이다.
  • 19. 삼중 연결 트리 좀 더 빠른 상향 참조를 위해 각 노드에PARENT링크를 추가한다.
  • 20. PARENT링크 PARENT링크 그 자체로도 임의의 유향 트리를 규정하는데 충분히 명백하다. 루트를 제외한 모든 노드는 자식이 여러 개일 수 있지만 부모는 오직 하나이다. 하향 링크를 두는 것보다 상향 링크를 두는 것이 더 간단하다.
  • 21. PARENT링크 그러나,PARENT링크만으로 된 트리는 큰 쓸모가 없다. 노드가 말단인지 아닌지 빠르게 판단하기 힘들다. 주어진 노드의 자식을 빠르게 찾기도 힘들다. 그러나!, 상향 링크들로만 충분한 한 가지 매우 중요한 응용이 존재한다. 동치 관계를 다루는 알고리즘
  • 22. 동치 관계 “≡”로 표기하는 동치관계는 객체들의 집합S의 원소들 사이의 한 관계로, S의 임의의 객체 x, y, z에 대해 다음의 세 성질들을 만족한다. 1)만일 x≡y이고 y≡z이면 x≡z. (추이) 2)만일 x≡y이고 y≡x. (대칭) 3)x≡x. (반영)
  • 23. 동치 관계 ⇒ 유향 트리 구조로 동치류들을 합치거나 주어진 두 원소가 같은 부류인지 판정이 가능하다. 알고리즘E
  • 24. 알고리즘E 동치 관계를 처리한다. E1.[초기화]1≤k≤n에 대해 PARENT[k]←0으로 설정한다. E2.[입력]입력에서 다음 동치 관계쌍“j≡k”를 가져온다. 입력을 다 소비했다면 알고리즘을 끝낸다. E3.[루트찾기]만일 PARENT[j]>0이면 j←PARENT[j]로 설정하고 이 단계를 반복한다. 만일 PARENT[k]>0이면 k←PARENT[k]를설정하고 이 단계를 반복한다. E4.[트리병합]만일 j≠k이면 PARENT[j]←k로 설정하고, 단계 E2로 돌아간다.
  • 26. 고리구조 두 방향 링크 LLINK와 RLINK 모두에 순환 링크를 사용하는 방법이다.
  • 27. 고리구조 다항식 산술에 적용 알고리즘A
  • 28.
  • 31.