한의


38

Yijie Han의 , 선형 공간, 정수 정렬 알고리즘에 익숙한 사람이 있습니까? 이 결과는 상당히 짧은 논문 ( O ( n log log n )의 결정적 정렬 및 선형 공간 J. Alg. 50 : 96–105, 2004)에 나타나며, 기본적으로 적절한 적응과 함께 초기 결과를 많이 결합합니다. 내 문제는 특정 세부 사항에 깊숙이 들어 가지 않고 손으로 직접 쓰는 것입니다. 이전 논문에 크게 의존하고 있으며 Han에 의해 또 다른 논문이 눈에 (다 ( 선형 공간에서 빠른 정수 정렬 개선)O(nloglogn)O(nloglogn). 정보와 계산 170 (1) : 81-94)는 거의 같은 스타일로 작성되었습니다. 이 두 논문, 특히 이전 결과를 적용하고 사용하는 방식을 이해하는 데 큰 어려움이 있습니다. 도움을 주시면 감사하겠습니다.

이것은 물론 적절한 질문으로 여겨지기에는 너무 광범위하고 모호하지만, 몇 가지 집중된 잘 정의 된 질문과 답변에 대한 토론을 발전시키기를 희망합니다.

여기에 첫 번째 구체적인 질문이 있습니다. 정보의 Lemma 2에서. Comp. 논문은 k 개의 RAM 워드로 각각 패킹 된 n 개의 작은 정수 세트에서 m 번째 가장 작은 정수를 찾기위한 재귀 시간 알고리즘이있다 . 알고리즘의 설명은 기본 사례 k = O ( n ) 가 처리되는 방법을 언급하지 않습니다 . 이 경우 O ( log k ) 시간으로 선택해야합니다 . 이것을 어떻게 할 수 있습니까?O(n/klogk)nkk=O(n)O(logk)


13
hanyij@umkc.edu에게 편지를 쓰는 것이 완벽 할 것입니다.
Joseph O'Rourke

예. 이전에이 일반적인 문제에 대해 논의했으며이를 해결하는 올바른 방법은 저자에게 이메일을 보내는 것입니다.
Suresh Venkat

17
여기에는 7 살이되었고 이미 동료 검토 과정을 거친 논문에 대한 특정 질문이 포함됩니다. Ari가 저자에게 이메일을 보낼 수는 있지만이 사이트에 대한 이상적인 질문 인 것 같습니다. 처짐을 이해하지 못합니다.
Ben 베넷

18
물론 내가 한 첫 번째 글은 한입니다. 대답이 없습니다. 그런 다음 정수 정렬 연구를 수행 한 다른 사람과의 연락을 통해 연락을 취했으며, 퍼서 할 때 논문이 너무 지저분해서 자신의 시간에 대한 추가 투자를 할 가치가 없다고 말했습니다. 그때 내가 여기 왔습니다. 한족을 알고 내 대리하여 관심을 가질 수있는 누군가가 있다면, 그것도 훌륭 할 것입니다.
Ari

4
Ω(nlogn)

답변:


18

나는 단지 같은 것을 궁금해했다.

다행스럽게도 2011 년에 출판 된 저널 기사를 찾을 수있었습니다. 또한 구독을 할 필요가 없습니다. 지수 트리 정렬의 구현 및 성능 분석

O(nloglogn)

Yijie Han은 선형 공간에서 예상 시간으로 복잡성을 줄이는 아이디어를 제공했습니다. [6] 그가 사용하는 기술은 Andersson의 지수 검색 트리 [8]에서 정수를 전달하고 정수 비트를 선형으로 나누는 시간입니다. 지수 검색 트리에 한 번에 하나씩 정수를 삽입하는 대신 한 번에 지수 검색 트리의 한 수준마다 모든 정수를 전달했습니다. 이러한 조정 된 통과는 선형 시간으로 다중 분할을 수행하여 알고리즘 속도를 높일 수있는 기회를 제공합니다. 이 아이디어는 속도를 높일 수 있지만 실제 구현에서는 정수를 일괄 처리하는 것이 매우 어렵습니다.

[6] Y. Han, O (n log log n) 시간 및 선형 공간의 결정 론적 정렬, 34th STOC, 2002.

A. Andersson, 선형 공간에서의 빠른 결정 론적 분류 및 탐색, 컴퓨터 과학 기초에 관한 IEEE 심포지엄, 1996.


왜 downvote입니까?
Suresh Venkat

1
이 저널 기사 링크를 지수 트리 위키 백과 페이지에 추가했습니다. 참고 :이 기사는 질문을 한 후에 게시되었을 수 있습니다.
AT

@AT, 답변을 조금 넓히고 질문에 어떻게 대답하는지 설명해 주시겠습니까? 현재 그것이 제공하는 유일한 것은 일부 저널의 기사에 대한 링크입니다.
Kaveh

1
글쎄, 나는 이미 한의 논문을 포기 했으므로이 도움을 제공하게되어 기쁩니다. 오늘 여기에 돌아 왔을 때 나는 아무것도 볼 것으로 기대하지 않았습니다. 감사! 이 새 논문을 읽고 Han의 논문을 발전시키는 데 도움이되는지 알아 보겠습니다.
Ari

2
(loglogn)h(h+1)!2(h+1)!h+22(h+2)!2(h+2)!=nh=Ω(logn/loglogn)(loglogn)

1

대답에 대해 잘 모르지만 (종이를 보지 못했지만) 이것이 도움이 될 것이라고 생각합니다. 숫자는 한 단어로 묶여 있으므로 한 단어의 연산에는 O (1) 시간이 걸립니다. 예를 들어, k 비트의 h 비트가 각각 있다면, 워드 크기는 k, h에 의존하며, 이는 또한 숫자의 범위에 의존한다. 따라서 숫자 범위를 줄여서 한 단어에 많은 숫자를 넣을 수있는 범위 축소 기술을 사용합니다. 그런 다음 적절한 비트 마스크를 만들면 한 번에 두 단어를 고려하여 더 짧은 정수와 더 큰 정수를 구분할 수 있습니다. 이것은 O (1) 시간 안에 수행 될 수 있습니다. (직관 :이 단어에 저장된 각 숫자에는 관련된 플래그 비트가 있고 두 개의 단어를 뺍니다 ... 플래그 비트가 진행되면 숫자가 작습니다).

마찬가지로 위의 방법을 사용하여 k (숫자 k) 시간에 k 숫자를 포함하는 모든 단어를 정렬 할 수도 있습니다 (비트 닉 정렬).

편집 : 알고리즘은 0에서 m-1 사이의 2k 숫자를 정렬하여 각 숫자의 크기 L = log (m + k) +2 인 단어로 묶습니다.

K1

K2

t = log k에 대해 0을 반복합니다.

1 부-원래 단어 Z를 두 단어 A와 B로 분리하십시오.

  1. K2K1

  2. 2tL

  3. B = Z- (Z & M).

2 부

  1. K1K1

  2. M = M- (M이 왼쪽으로 L-1 자리 이동했습니다).

  3. MIN = (B & M) 또는 (A- (A & M))

  4. MAX = (A & M) 또는 (B- (B & M))

  5. 2tL

  6. 마지막으로 적절하게 MAX와 MIN을 OR하면 Z가 다시 나타납니다.

스케치를했으며 필요한 세부 사항을 채울 수 있기를 바랍니다.


나는 당신이 무엇을 제안하는지 명확하지 않습니다. 정수는 이미 작고 k는 이미 한 단어로 묶여 있다고 가정합니다. 크기를 더 줄일 것을 제안하고 있습니까? 그렇다면 어떻게해야합니까? 또한 O (log k) 시간에 단일 단어로 묶인 bitonic 시퀀스를 정렬하거나 O (log ^ 2 k) 시간에 일반 (비 bitonic) 시퀀스를 정렬하는 방법을 알고 있습니다. O (log k) 시간에 일반 시퀀스를 정렬하는 알고리즘을 알고 있다면 더 자세히 설명해 주시겠습니까? (이러한 알고리즘은 물론 선택 문제를 해결할 것입니다.)
Ari

나는 더 이상 크기를 줄이지 않고 대답에 필요하지 않은 크기를 줄이는 방법을 제안하고있었습니다. 혼란을 드려 죄송합니다.
singhsumit

내가 오해하지 않는 한, 이것은 비트 닉 시퀀스를 정렬하는 알고리즘처럼 보입니다. 일반적인 순서는 정렬하지 않습니다. 예를 들어, 3이 가장 왼쪽 (가장 중요한) 필드에있는 순서 3,0,2,0을 정렬합니까?
Ari

3 0 2 0은 n이고 A = 3 2이고 B = 0 0이면 MAX는 3 2이고 MIN은 0 0입니다. 그런 다음 새로운 Z는 3 2 0 0입니다. 일반 시퀀스의 크기 순서는 2입니다. 각 반복 마다이 크기는 두 배가되고 마지막으로 로그 k 시간에 답을 얻습니다.
singhsumit

아니요. 숫자는 압축되지 않고 아래로만 이동합니다. 첫 번째 반복에서 우리는 위치의 높은 비트가 다른 숫자 쌍을 나누므로 A = 0 3 0 2 및 B = 0 00 0을 얻으므로 MIN = 0 00, MAX = 0 3 0 2, Z = 3 0 2 0. 두 번째 반복에서는 위치의 하위 비트가 다른 쌍을 분할하므로 다시 A = 0 3 0 2, B = 0 0 0 0이되고 다시 Z는 변경되지 않습니다.
Ari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.