나는 이제 사소한 하한을 보여줄 수 있다고 생각합니다. 아이디어는 비교 분기 프로그램 제품군으로 그러한 프로그램을 구현하는 것입니다. 작은 프로그램의 사용을 분기 우리의 가족, 즉한다는 '읽기 전용'가정 수단 , 공간. 그런 다음 Borodin 등이 증명 한 하한 S T = Ω ( n 2 ) 을 적용합니다 . "명백하지 않은 컴퓨터에서 정렬하기위한 시공간 트레이드 오프" 이것은 우리에게 시간 동안 n 2 / log n 하한을 제공합니다.O(logn)ST=Ω(n2)n2/logn
좀 더 자세하게 설명하자면, 우리는 위의 작업 5를 생략 할 수 있습니다. 느슨하게 말해서, 만약 우리가 이미 두리스트의 헤드를 비교하고리스트의 헤드를 인쇄 할 수 있다면,리스트의 헤드를 특정 레지스터에서 분리 할 필요가 없습니다. 이것을 가정하면, 머신의 모든 레지스터는 입력의 마지막 부분 문자열 만 저장한다는 것을 알 수 있습니다.
레지스터 프로그램에 줄의 코드와 k 개의 레지스터 X 1 , … , X k 가 있다고 가정합니다 .ℓkX1,…,Xk
수정 하십시오 . 길이 n의 문자열에 대한 비교 분기 프로그램을 다음과 같이 구성합니다. 각 튜플 노드 생성 ( I , D (1) , ... , D K ) 1 ≤ I ≤ ℓ 및 0 ≤ D (1) , ... , D K ≤ N . 아이디어는 레지스터 시스템의 계산이 분기 프로그램의 경로에 해당하며 노드 ( i , d 1 , … , d에 있음)입니다.nn(i,d1,…,dk)1≤i≤ℓ0≤d1,…,dk≤n 레지스터 머신에서 i 행에 있고 X i에 저장된 문자열의 길이는 d i 입니다. 이제 분기 프로그램의 방향 모서리를 정의해야합니다(i,d1,…,dk)iXidi
행 이 양식 인 경우i
만약 다음 고토 I를 1 다른 오도 I를 2Xu<Xvi1i2
그런 다음 모든 에 대해 노드 ( i , d 1 , … , d k ) 는 입력 의 d u- th 및 d v- th 요소를 비교 하고 "true"에지가 ( i 1 , d 1 , … , d k ) 및 "false"모서리는 ( i 2 , d 1 , … , d kd1,…,dk(i,d1,…,dk)dudv(i1,d1,…,dk) .(i2,d1,…,dk)
행 이 양식 인 경우i
, Goto line i 'X1←tail(X2)i′
다음 노드에서 화살표가 행은 ( I ' , D 2 - 1 , ... , D (K) ) .(i,d1,…,dk)(i′,d2−1,…,dk)
행 이 양식 인 경우i
print(head(Xu)), goto line i′
then there is an arrow from any node (i,d1,…,dk) to (i′,d1,…,dk) which is labelled by the du-th node of the input.
ℓ⋅nkO(logn)