(Entiendo la descripción del problema para que los números de entrada estén delimitados por una constante, por lo que no rastrearé la dependencia del límite).
El problema se puede resolver en tiempo lineal y espacio logarítmico utilizando sumas de logaritmos. Con más detalle, el algoritmo es el siguiente:
- Usando contadores binarios, cuente el número de ocurrencias de cada posible número de entrada en ambas listas.
Esto lleva tiempo , y los contadores usan el espacio O ( log n ) , ya que cada contador está limitado por un valor n .O ( n )O ( logn )norte
Supongamos que son los números primos debajo del límite O ( 1 ) . Mediante la distribución de cada contador para un número una a los factores primos de un (con multiplicidad apropiado), y restando los recuentos de una lista de la otra lista, se obtiene la siguiente en el tiempo O ( log n ) :pag1, ... , pkO ( 1 )unaunaO ( logn )
Calcule los números enteros con O ( log n ) bits de manera que el problema sea equivalente a determinar el signo de Λ : = ∑ k i = 1 β i log p i .β1, ... , βkO ( logn )Λ : = ∑ki = 1βyoIniciar sesiónpagyo
Si , responda que los productos son iguales.β1= ⋯ = βk= 0
De lo contrario . Según el teorema de Baker , podemos reducir el límite
| Λ | > 2 - C log n
para una constante determinada C . Por lo tanto, lo siguiente calcula correctamente el signo de Λ :Λ ≠ 0
El | Λ | > 2- CIniciar sesiónnorte
CΛ
- Emite el signo de , donde π i es una aproximación de log p i a m : = C log n + k + 1 bits de precisión.∑ki = 1βyoπyoπyoIniciar sesiónpagyom : = CIniciar sesiónn + k + 1
METRO( m )metroMETRO( m ) = O ( mIniciar sesiónmetro2O ( log∗m ))O ( m2)Iniciar sesiónpagyometroO ( M( m ) logm )∑yoβyoπyoO ( M( m ) )O ( M( m ) logm ) ⊆ O ( lognortep o l y (logIniciar sesiónn ) )
O ( n )