Splay Tree 잠재적 기능 : 왜 크기의 로그를 합산합니까?


16

데이터 구조에 대한 강의를 진행하고 있으며 다음 주 초에 스플레이 트리를 다룰 예정입니다. 스플레이 트리에 관한 논문을 여러 번 읽었으며 데이터 구조의 분석과 직관에 익숙합니다. 그러나 Sleator와 Tarjan이 분석에 사용하는 잠재적 기능에 대한 확실한 직감을 찾을 수 없습니다.

분석은 트리 내의 임의의 중량을 각각의 소자에 할당함으로써 동작 wi 후, 크기 설정, s(x) 를 루트로하는 서브 트리의 노드의 가중치의 합이 될 수있는 노드의 x . 그런 다음이 값의 로그를 취하여 노드 의 순위 을 얻으 r(x)므로 r(x)=logs(x) 입니다. 마지막으로, 트리의 잠재적 기능은 모든 노드의 순위의 합으로 정의됩니다.

이 잠재적 기능이 올바르게 작동하고 분석을 따를 수 있음을 이해하지만 왜 그들이이 잠재력을 선택하는지 알 수 없습니다. 각 노드에 크기를 할당한다는 아이디어는 나에게 의미가 있습니다. 크기를 합하면 트리의 가중 경로 길이를 얻을 수 있기 때문입니다. 그러나 왜 그들이 무게의 로그를 가져 와서 대신 요약하기로 결정했는지 알 수 없습니다.이 나무에 해당하는 자연 속성이 보이지 않습니다.

스플레이 트리의 잠재적 기능이 트리의 일부 자연 속성에 해당합니까? 그들이“잠재적”이라는 것 외에 그들이이 잠재력을 선택해야하는 특별한 이유가 있습니까? ( 이 강의 노트 세트에 "분석은 흑 마법"이라고 언급 되어 있기 때문에 특히 궁금 합니다.

감사!


이 "블랙 매직"설명도 들었습니다. Sleator와 Tarjan에게 이메일을 보내려고 했습니까?
jbapple

@jbapple 나는 "대부분의 커뮤니티"가 도움을 줄 수 있기를 바 랐기 때문에 아직 이메일을 보내지 않았다. 또한 30 년 전에 한 일에 대해 누군가를 핑하는 것이 반드시 응답을 이끌어 낼 필요는 없다고 생각했습니다. :-)
templatetypedef

나는 그것이 매우 익숙하지 않은,하지만 난 그냥보고 종이 나는 유일한 이유는 우리가 대체하는 경우가 스플레이 작업, 예를 들어 후 잠재적 인 기능에 의한 작은 변화를하려는 생각, 매우 약 로그 로그 또는과를 l o g 여전히 모든 것이 잘 작동하는 것 같습니다 (증명하지는 않았지만 간단한 수학이 필요한 것 같습니다). 그러나 s 로 남겨두면 상각 분석은 정확하지만 좋은 상한은 아닙니다 ( ( m + n ) 2 같은 것 ). 그것은 나무의 어떤 속성과도 전혀 관련이 없습니다. loglogloglogs(m+n)2
사이드

나는 항상 x의 순위를 "x의 자손을 포함하는 이상적인 이진 검색 트리의 깊이"로 블랙 박스로 만들었지 만 유용한 직관보다 니모닉입니다.
Jeffε

답변:


13

로그 합계 가능성을내는 방법

요소 x에 대한 각 액세스에 대해 사전 경로라고 하는 x 의 검색 경로 P 에있는 요소 만 사후 트리라고하는 일부 트리로 재배 열하 는 BST 알고리즘 를 고려해 봅시다 . 어떤 요소를 위해 ,하자 ( )S ' ( ) 를 루트로하는 서브 트리의 크기 전에 각각 재 배열 후. 따라서 S ( )S ' ( A는 ) IFF에 따라 다를 수도 P .AxPxas(a)s(a)as(a)s(a)aP

또한 는 언제든지 검색 경로에서 많은 요소를 끊임없이 재정렬합니다. 이 유형의 알고리즘을 "로컬"알고리즘이라고합니다. 예를 들어, 재생 트리는 로컬입니다. 지그재그, 지그재그로 한 번에 최대 3 개의 요소 만 재 배열합니다.A

이제 트리 뒤에 애프터 트리에 "많은"잎을 만드는 로컬 알고리즘에는 다음과 같은 멋진 속성이 있습니다.

매핑을 만들 수 있습니다 그러한를f:PP

  1. 많은 선형있다 P는 , 여기서 S ' ( F ( ) ) S ( ) / 2 .aPs(f(a))s(a)/2
  2. 지속적으로 많은있다 P는 여기서 ' ( F (aP 크지 만 하찮게 대부분에있을 수 , n은 .s(f(a))n
  3. 다른 요소 , s ' ( f ( a ) ) aP .s(f(a))s(a)

검색 경로 변경을 펼쳐서이를 확인할 수 있습니다. 매핑은 실제로 매우 자연 스럽습니다. 이 논문 인 Splaying의 Global Geometric View 는 위의 관찰을 보는 방법을 자세히 보여줍니다.

이 사실을 알고 나면 로그 합계 가능성을 선택하는 것이 매우 당연합니다. 우리는 전체 재 배열 비용을 지불하기 위해 type-1 요소의 잠재적 변경을 사용할 수 있기 때문입니다. 또한 다른 유형의 요소의 경우 최대 로그에 의한 잠재적 변경에 대해 지불해야합니다. 따라서 대수 상각 비용을 도출 할 수 있습니다.

사람들이 이것이 "흑 마술"이라고 생각하는 이유는 이전 분석이 검색 경로의 전체적인 변화를 "펼치지"않고 실제로 한 단계에서 어떤 일이 일어나는지 확인하기 때문입니다. 대신, 그들은 각각의 "로컬 변환"에 대한 잠재력의 변화를 보여준 다음, 이러한 잠재적 변화가 마술처럼 망원경 될 수 있음을 보여줍니다.

추신이 논문은 심지어 로그의 합계 가능성의 한계를 보여줍니다. 즉 , 로컬 알고리즘에만 잠재적 인 로그 합을 통해 액세스 보조의 만족을 증명할 수 있습니다 .

로그 합계 잠재력의 해석

Georgakopoulos와 McClurkin의 논문 에서 BST의 잠재력을 정의하는 또 다른 방법이 있습니다. 이는 Sleator Tarjan의 논문에서 로그의 합계와 본질적으로 동일합니다. 그러나 이것은 나에게 좋은 직감을 제공합니다.

이제 종이 표기법으로 전환합니다. 모든 노드 u에 가중치 를 할당합니다 . W ( u )u 의 서브 트리 가중치의 합 이라고합시다 . (이것은 모든 노드의 가중치가 1 일 때 u 의 서브 트리 크기입니다 .)w(u)uW(u)uu

이제 노드에서 순위를 정의하는 대신 가장자리에 순위를 정의하여 진행률 이라고 합니다.

pf(e)=log(W(u)/W(v)).

그리고 나무 S 의 잠재력S

Φ(S)=eSpf(e).

이 가능성은 자연스럽게 해석됩니다. 검색하는 동안 모서리 를 탐색하면 검색 공간이 u 의 자손에서 v 의 자손으로 감소하고 W ( u ) / W ( v )의 감소는 검색 공간을 줄입니다.(u,v)uvW(u)/W(v) . 우리의 진척도는이 '진보'에 대한 로그 측정 값이므로 그 이름입니다. [2.4 절부터]

이것은 Sleator Tarjan의 잠재력과 거의 동일하며 경로에 추가적입니다.

편집 : 이 대안 적 정의와 그 직관은 오래 전에 Kurt Mehlhorn에 의해 설명되었습니다. 그의 책 "데이터 구조와 알고리즘"제 1 권 III 장을 참조하십시오. 6.1.2 플레이 트리, 페이지 263-274.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.