A função exponencial sobre números algébricos

8

Dado um número algébrico , estou interessado em encontrar uma aproximação de até uma determinada precisão, em que se refere à parte real do número complexo.α(eα)()

Formalmente, quero calcular um número racional r tal que

|(eα)r|2n

α é dado por um polinômio mínimo (padrão).

Quão rápido podemos resolver esse problema?


Quando α é dado como ponto flutuante, a seguinte referência

R. Brent. Avaliação rápida e múltipla de precisão de funções elementares. JACM, 1976.

parece dar uma resposta.

No entanto, não tenho certeza de que ele possa ser usado para o número algébrico α .

user22166
fonte
1
Exp e log podem ser aproximados para bits de precisão no tempo . Como a aproximação numérica da raiz não é significativamente mais rápida (ela certamente precisa de tempo pelo menos ), sua pergunta é essencialmente equivalente à complexidade da aproximação de . Para um polinômio fixo, o último pode ser feito no tempo usando o método Newton, mas não tenho certeza do que exatamente acontece quando o polinômio (e um intervalo limitado!) Faz parte da entrada. nO(M(n)logn)Ω(M(n))αO(M(n))
Emil Jerabek
(A complexidade de tempo assintótica de iteração de Newton é mais ou menos o tempo necessário para avaliar o polinômio em um dado de entrada para bits de precisão.)n
Emil Jerabek
1
Ah, mas tudo o que escrevi se aplica quando você deseja um erro relativo , ou seja, é gerado em uma representação expoente-mantissa, e o erro vinculado é válido para a mantissa. Da maneira como a pergunta é escrita, você não pode obter um limite melhor que o trivial , pois o tamanho da saída é exponencial no tamanho da entrada já no caso é um número inteiro e . r2O(n)αϵ=1
Emil Jeřábek 27/08/14
2
Para evitar o problema que Emil se refere à complexidade das funções reais, são estudados quando o domínio é um conjunto compacto como o intervalo de unidades. Se seu puder ser arbitrariamente grande, exp não poderá ser calculado em tempo polinomial. α
precisa
PS: esses algoritmos geralmente funcionam para todos os números reais computáveis, incluindo números algébricos; precisamos fornecer apenas boas aproximações arbitrárias para as entradas.
Kaveh

Respostas:

3

Como está escrito, o problema requer tempo , onde m é o comprimento da entrada (infelizmente você usou n para outra coisa). Com efeito, se por exemplo α é um número inteiro positivo (dado pela sua mínima polinomial x - α ) e n = 0 , o tamanho da saída é exponencial do tamanho da entrada. É claro que esse limite é ideal, pois existem várias maneiras de calcular o resultado no tempo 2 O ( m ) .2Ω(m)mnαxαn=02O(m)


Deixe-me tentar reformular a questão para que faça um pouco mais de sentido. A questão principal é como escolher a representação da entrada e saída, bem como a noção de aproximação, para que a exponenciação tenha uma chance de ser computável em tempo polinomial.

Uma maneira foi mencionada por Kaveh nos comentários: restringir o domínio a um intervalo finito fixo. Enquanto isso funciona, é desnecessariamente restritivo; em particular, não há uma boa maneira de transformar um número algébrico em um que seja delimitado, de modo que seus exponenciais tenham algo a ver um com o outro.

Uma abordagem mais flexível é representar a entrada como um número de ponto fixo e a saída como um número de ponto flutuante . Para ser específico, uma representação de ponto fixo é uma sequência denotando ± Σ j um j 2 j , onde um j{ 0 , 1 } , e uma representação de ponto flutuante é ± 2 e ×

±arar1a0.a1as
±jaj2jaj{0,1} com uma interpretação semelhante, onde e é um número inteiro binário e um 0 = 1 . (Como uma exceção, nós também permitir 0 para representar a si mesmo.) Uma aproximação de uma verdadeira x a m bits deabsolutaprecisão é um verdadeiro x ' tal que | x - x | < 2 - m , e uma aproximação de m bits derelativaprecisão é
±2e×a0.a1as
ea0=10xmx|xx|<2mm tal que | 1 - x / x | < 2 - m . Usaremos precisão absoluta para aproximações de ponto fixo e precisão relativa para aproximações de ponto flutuante. Segue-se que em ambos os casos, também podemos assumir s m (até perda de um bit de precisão).x|1x/x|<2msm

Representações de ponto fixo e ponto flutuante de racionais gaussianos diádicos e aproximações de números complexos são definidas de forma semelhante, usando um par de reais. Em todos os lugares abaixo, indica o tamanho total da entrada.n

Agora, deixe (real ou complexa) exponenciação ser o seguinte problema: a entrada é uma representação de ponto fixo de um número e um unária número natural m , e a saída é uma aproximação de ponto flutuante de e x a m bits de precisão relativa. Dualmente, o logaritmo toma como entrada um número de ponto flutuante x e m unário , e a saída é uma aproximação de ponto fixo do log x (por exemplo, o ramo principal no caso complexo) a m bits de precisão absoluta.xmexmxmlogxm

Enquanto mantemos limites de tempo de execução que satisfazem algumas condições de regularidade moderada e ignoramos fatores multiplicativos constantes, temos:

  • A complexidade da exponenciação, logaritmo ou qualquer função analítica semelhante é pelo menos a complexidade da multiplicação de números inteiros: por exemplo, podemos ler de exp ( a 2 - t ) = a 2 - t + a 2 2 - 2 t - 1 + O ( a 3 2 - 3 t ) para t suficientemente grande , linear no comprimento de a .a2exp(a2t)=a2t+a222t1+O(a323t)ta
  • Exponenciação e logaritmo têm a mesma complexidade. A razão é que podemos calcular o inverso de uma função agradável pela iteração de Newton (ou métodos mais sofisticados, como no Brent ), usando a avaliação da própria função. A iteração normalmente envolve multiplicações ou divisões, mas podemos pagá-las pelo ponto anterior.

Quanto aos números algébricos , eles podem ser representados por seu polinômio mínimo f (escrito como uma sequência de coeficientes inteiros em binário) junto com alguns meios para distinguir entre as raízes do mesmo polinômio. Uma maneira natural de fazer isso é exigir um intervalo ou disco de isolamento: um par de números de pontos fixos c , ρ tal que | c - α | < ρ . Precisamos pelo menos exigir que α seja uma raiz única de f com essa propriedade, mas algo mais forte pode ser mais adequado. Mais sobre isso mais tarde.αfc,ρ|cα|<ραf

Deixe a aproximação do número algébrico ser o seguinte problema: dado um número algébrico na representação acima, e m em unário, calcule uma aproximação (complexa) de ponto fixo de α a m bits de precisão absoluta.αmαm

A pergunta original solicitou , mas deixe-me ignorá-lo por enquanto e definir a exponenciação algébrica de números como o seguinte problema: dado α e m, como acima, calcule uma aproximação (complexa) de ponto flutuante de e α a m bits relativos precisão.Reeααmeαm

Fato: Até fatores lineares, a complexidade da exponenciação algébrica de números é a mesma que a complexidade da aproximação de números algébricos mais a complexidade da exponenciação complexa.

Esboço de prova: por um lado, podemos primeiro calcular a aproximação de ponto fixo de e exponenciá-la. Observe que m + O ( 1 ) bits de precisão absoluta para α determinam e α a m bits de precisão relativa e vice-versa.αm+O(1)αeαm

Por outro lado, se podemos fazer exponenciação algébrica de números, também podemos fazer exponenciação simples, pois podemos facilmente converter um número de ponto fixo (considerado exato) em sua representação como um número algébrico. Pelos comentários acima, isso significa que também podemos calcular logaritmos no mesmo tempo. Assim, podemos aproximar um número algébrico primeiro aproximando e, em seguida, obtendo um logaritmo. QEDeα

Isso divide a questão em dois problemas não relacionados. O limite superior mais conhecido na exponenciação é

Teorema ( Brent ): Se podemos multiplicar números inteiros de bits no tempo M ( n ) , podemos calcular exponenciação complexa (e logaritmo) no tempo O ( M ( n ) log n ) .nM(n)O(M(n)logn)

O limite inferior mais conhecido é o mencionado acima. O limite superior mais conhecido em M ( n ) é n log nΩ(M(n))M(n) pelo algoritmo de Fürer.nlogn2O(logn)

Descobrir o estado da arte para a aproximação de números algébricos (ou seja, encontrar raízes) é um pouco mais difícil, pois ainda é uma área de pesquisa ativa, e as formulações de limites na literatura geralmente não são tão claras quanto se deseja. Vamos significam O ( f ( n ) p o l y L o g ( f ( n ) ) ) .O~(f(n))O(f(n)polylog(f(n)))

Para uma aproximação real da raiz, Pan e Tsigaridas fornecem:

Teorema: real número aproximação algébrica pode ser feito em tempo , onde d = ° ( f ) , e τ é máximo de bits de comprimentos dos coeficientes de f .O~(d2τ+dm)d=deg(f)τf

No mesmo artigo, eles mencionam como o limite mais conhecido para a aproximação de raízes complexas . Em um artigo um pouco mais recente ( http://arxiv.org/abs/1404.4775 ), eles parecem reivindicar os mesmos limites para o caso complexo e para o caso real, supondo que o disco de isolamento fornecido tenha uma taxa de isolamento (o distância do centro do disco à outra raiz mais próxima de f dividida pelo raio do disco) pelo menos 1 + 1 / log d , aproximadamente, mas está escrito de uma maneira bastante confusa e posso interpretá-lo mal.O~(d3+d2m)f1+1/logd


Agora, a complicação final. Eu defini o problema como aproximação de , enquanto a pergunta pede Re e α . Isto, na verdade, faz com que o problema mais difícil: se Re e α « Im e α , em seguida, uma aproximação x + i y de e α para m bits de precisão relativa tem erro y 2 - m , o que pode muito bem ser superior a x em si, e em qualquer caso, não é garantido para ser delimitada por x 2 - m .eαReeαReeαImeαx+iyeαmy2mxx2m

Para exponenciação de razões exatas, podemos contornar o problema:

Proposição: Dado m unário , onde x , y são racionais binários (ou números exatos de pontos fixos), podemos calcular uma aproximação de ponto flutuante de Re e α para m bits de precisão relativa no mesmo tempo limite exponenciação complexa como definida acima, até fator linear. ( Ou seja, O ( M ( n ) log n ) usando o algoritmo de Brent.)α=x+iymx,yReeαmO(M(n)logn)

Esboço de prova: temos . Podemos aproximar e X , e os números de ponto flutuante são facilmente multiplicado, o problema consiste em aproximar cos y com erro relativo 2 - m . Podemos calcular o número inteiro k mais próximo de 2 y / π , onde cos y é ± cos y ' ou ± sin y , onde y = y -Reeα=excosyexcosy2mk2y/πcosy±cosy±siny satisfaz| y| π/4. O problema surge quando precisamos calcular opecadoy'ey'é muito pequeno, pois, para termospecadoy'ambits de precisão relativa, precisamos dem+log| y-1| bits de precisão absoluta. Suponha quey=u/v, ondeu,vsão números inteiros dados como entrada. Seyy=ykπ2|y|π/4sinyysinymm+log|y1|y=u/vu,vyé pequeno, temos uma boa aproximação racional de : | π - 2 uπ Agora,πé conhecido por ter uma medida irrationality finitoν(a corrente é ligada7.6063porSalikhov). Isso implica | y| 1

|π2ukv|2|y|k.
πν7.6063 que fornece um limite superior linear nolog| y-1| em termos do comprimento da entrada. Podemos assim calculary'com a precisão desejada; avaliarsiny'não é então um problema (sey'é suficientemente pequena, podemos apenas terpecadoy'y'). QED
|y|12kν1vν,
log|y1|ysinyysinyy

Não sei se o mesmo vale para algébrica . No argumento acima, pode-se obter um limite no log | y | do teorema de Baker , no entanto, nenhuma de suas versões que eu vi é boa o suficiente para tornar linear a precisão necessária no tamanho da entrada: em particular, os limites envolvem um polinômio (bastante desagradável) em deg ( f ) . Isso torna o algoritmo resultante polinomial no tamanho da entrada, mas com um expoente ridículo.αlog|y|deg(f)

Emil Jeřábek
fonte
Penso que a questão principal é que a exponenciação sobre números inteiros não é computável em poli-tempo. Portanto, uma maneira de lidar com a exponenciação sobre números reais é separar essa questão das demais: 1. encontre um número inteiro tal que 0 b / k < 1 , 2. calcule r = ( b / k ) e , 3. retorne ( r , k , e ) como resposta. k0b/k<1r=(b/k)e(r,k,e)
Kaveh
Desculpe, estou perdida. O que é e para que é ( r , k , e ) uma resposta? De qualquer forma, o objetivo de usar uma representação diferente para entrada e saída, como acima, é tornar o tempo polinomial da exponenciação de número inteiro: você pode calcular 2 a trivialmente apenas criando um expoente de ponto flutuante e e a funciona da mesma forma (o expoente é a / log 2 e, em seguida, prossiga para aproximar o número limitado exp ( a - k,b,e(r,k,e)2aaeaa/log2 para obter a mantissa). exp(aa/log2log2)
Emil Jeřábek
Desculpe Emil, eu estava um pouco enigmático. Considere o problema em que queremos calcular . O que eu estava tentando dizer era que o único problema que impede a computação ou de maneira eficiente é o resultado da ineficiência da exponenciação em números inteiros. be
Kaveh
Sim, em certo sentido, o problema é que a exponenciação de número inteiro é ineficiente (ou melhor, o resultado é muito grande). No entanto, não entendo como sua proposta deve funcionar. Como você representa ? Se E é um n bit inteiro, em seguida, se digamos b / k 1 / 2 , então r 2 - 2 n é exponencialmente pequena, portanto, que estão de volta em um quadrado. De qualquer forma, desde que você está representando efetivamente o resultado como k e r , este é essencialmente um base- k ponto flutuante, exceto que não é normalizado e krenb/k1/2r22nkerkkpode variar, o que dificulta o cálculo dessas representações. Quais são os benefícios?
Emil Jeřábek