10 votos

¿Cuál es la más eficiente algoritmo de factorización cuando un valor aproximado de un factor es conocido

Si se me da el siguiente número:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350
692006139

Y me dijo que uno de los factores que está en el rango:

38035634573286525913223768327418691775212180785884 -
37933217936943673922808872755445625858565536638189

¿Cuál sería el más eficiente (clásica) algoritmo para el cálculo de los factores? Obviamente, la fuerza bruta estaría fuera de la cuestión, y la Cuadrática General y de Campo de Número de Tamices no sería capaz de usar la gama.

2voto

Kyle Puntos 26

Su rango tiene un límite superior de aproximadamente 2-3 por ciento más grande que el límite inferior. Así, la respuesta es que no hay mucho que usted puede hacer simplemente en base a una serie como esa. Esto es porque usted puede comenzar con una pequeña gama, decir 100-102. A continuación, 102-102*1.02, entonces 102*1.02-102*1.02^2, y así sucesivamente. De continuar así, usted sólo necesita alrededor de registro de base 1.02 $n$ pasos para cubrir toda la gama de factores (bueno, la mitad que para llegar a la raíz cuadrada). Por lo tanto, si usted tenía un buen algoritmo utilizando rangos de finura, podría tener un buen algoritmo en general.

Sólo se debe multiplicar la complejidad de su caso especial del algoritmo por un factor linear, y usted tiene la complejidad de un general válido algoritmo de factorización. Desde lineal factor de pequeños granos en el mundo de la factorización de enteros, un intervalo que sólo se multa a la suma de cinco por ciento es por lo tanto esencialmente inútil en la simplificación del problema.

Ahora, su rango es muy cerca de la plaza de la raíz, así que tal vez usted está pensando en algo se puede hacer a partir de eso. Esto no ayuda, porque usted podría proceder como he mencionado antes, pero en cada paso de multiplicar la gama o número de factor por un entero con el fin de transformar el problema en uno donde la gama cubre cualquier valor calculado con base en el número de factor (al igual que su raíz cuadrada). Luego de un algoritmo que podría utilizar un rango con una finura en el orden de un par por ciento, ubicados en cualquier lugar específico con respecto a la cantidad de factor, puede ser usado para construir un algoritmo de propósito general en el costo de un factor linear.

Por tanto, la respuesta a tu pregunta es, sin duda ninguna, una amplia gama como que no es útil. Sólo tendría que olvidarse de la gama y el uso de un algoritmo de propósito general.

1voto

Alex M. Puntos 9816

La pregunta, en toda su generalidad, realmente no tiene una respuesta, en mi opinión. Considere el problema formulado de la siguiente manera:

encontrar un computacionalmente eficiente algoritmo para factorizar $N$ sabiendo que tiene un divisor en el rango de $[a,b] = \{a, a+1, \dots, b-1, b\}$

y lo llaman "el problema de $P(N,a,b)$". Como se va a ver, una buena respuesta puede ser dada solamente si la información acerca del tamaño de $b-a$ es dado.

Si $b-a$$O(\log^k N)$, entonces la fuerza bruta es exponencialmente rápido, por lo que "muy rápida" (en el sentido de la complejidad computacional) y, si $k$ es pequeña, también es rápido en la práctica el hardware actual.

Por otro lado, la instancia muy especial $P(N,1,N)$ es precisamente el problema de la factorización de enteros - que muestra que, en general, $P(N,a,b)$ es equivalente al problema de la factorización de enteros, por lo que muchos de los algoritmos de existir, ninguno de ellos rápido (en el sentido de la complejidad computacional).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X