Quale algoritmo possiamo usare per trovare tutte le radici intere di un polinomio con coefficienti interi?
Osservo che Sage riesce a trovare le radici in pochi secondi anche quando tutti i coefficienti di sono molto grandi. Come è in grado di farlo?
Quale algoritmo possiamo usare per trovare tutte le radici intere di un polinomio con coefficienti interi?
Osservo che Sage riesce a trovare le radici in pochi secondi anche quando tutti i coefficienti di sono molto grandi. Come è in grado di farlo?
Risposte:
In ogni caso, la documentazione di Sage spiega chiaramente come stanno eseguendo la ricerca di root: "Il metodo successivo, che viene usato se K è un dominio integrale, è tentare di fattorizzare il polinomio. Se ciò ha successo, allora per ogni grado uno fattore a * x + b, aggiungiamo -b / a come radice (purché questo quoziente sia effettivamente nell'anello desiderato). " Vedi http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Quindi la tua domanda diventa : in che modo fattorizzano efficacemente i polinomi con coefficienti interi? Apparentemente, Sage sta chiamando NTL per farlo (vedi http://www.shoup.net/ntl/doc/ZZXFactoring.txt per i dettagli NTL).
Se si desidera un metodo asintoticamente efficiente, è possibile fare riferimento al metodo di Lenstra, Lenstra e Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).