Acho que agora posso demonstrar um limite inferior não trivial. A idéia é implementar qualquer programa com uma família de programas de comparação de ramificações. A suposição `` somente leitura '' significa que nossa família de programas de ramificação usa pouco espaço, isto é, . Em seguida, aplicamos o limite inferior S T = Ω ( n 2 ) comprovado por Borodin et al. em "Uma troca de tempo e espaço para classificação em máquinas não esquecidas". Isso nos dá um limite inferior de n 2 / log n para o tempo.O ( logn )ST= Ω ( n2)n2/ logn
Um pouco mais detalhadamente: podemos dispensar a operação 5 acima. Em termos gerais, se já podemos comparar os cabeçalhos de duas listas e imprimir o cabeçalho de uma lista, não há necessidade de isolar o cabeçalho de uma lista em um registro específico. Supondo isso, vemos que todo registro na máquina apenas armazena uma substring final da entrada.
Suponha que nosso programa de registro tenha linhas de código ek registradores, X 1 , … , X k .ℓkX1, … , Xk
Fix . Construímos o programa de ramificação de comparação para cadeias de comprimento n da seguinte maneira. Crie um nó para cada tupla ( i , d 1 , … , d k ) em que 1 ≤ i ≤ ℓ e 0 ≤ d 1 , … , d k ≤ n . A idéia é que os cálculos na máquina de registro correspondam aos caminhos no programa de ramificação, e estamos no nó ( i , d 1 , … , dnn( i , d1, … , Dk)1 ≤ i ≤ ℓ0 ≤ d1, … , Dk≤ n se estamos na linha i na máquina registradora e o comprimento da string armazenada em X i é d i . Agora, temos que definir as arestas direcionadas do programa de ramificação( i , d1, … , Dk)EuXEudEu
Se a linha tiver a formaEu
Se Then GoTo i 1 pessoa Goto i 2Xvocê< XvEu1Eu2
então, para todo o nó ( i , d 1 , … , d k ) é rotulado comparando-se o elemento d u -th e d v -th da entrada e fazendo com que a borda "true" vá para ( i 1 , d 1 , …d1, … , Dk( i , d1, … , Dk)dvocêdv e a aresta "falsa" para ( i 2 , d 1 , … , d k( i1, d1, … , Dk) .( i2, d1, … , Dk)
Eu
X1← t a i l ( X2)Eu′
existe uma seta de qualquer nó para (( i , d1, … , Dk)( i′, d2- 1 , … , dk)
Eu
p r i n t ( h e a d( Xvocê) ))Eu′
( i , d1, … , Dk)( i′, d1, … , Dk)dvocê
l de ⋅ nkO ( logn )