Welchen Algorithmus können wir verwenden, um alle ganzzahligen Wurzeln eines Polynoms mit ganzzahligen Koeffizienten zu finden?
Ich beobachte, dass Sage die Wurzeln innerhalb weniger Sekunden finden kann, selbst wenn alle Koeffizienten von sehr groß sind. Wie ist das möglich?
ds.algorithms
na.numerical-analysis
user12290
quelle
quelle
Antworten:
In jedem Fall erklärt die Sage-Dokumentation deutlich, wie sie die Wurzelsuche durchführen: "Die nächste Methode, die verwendet wird, wenn K eine integrale Domäne ist, besteht darin, zu versuchen, das Polynom zu faktorisieren. Wenn dies erfolgreich ist, dann für jeden Grad eins Faktor a * x + b addieren wir -b / a als Wurzel (solange sich dieser Quotient tatsächlich im gewünschten Ring befindet). " Siehe http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Ihre Frage lautet also: Wie faktorisieren sie Polynome effizient mit ganzzahligen Koeffizienten? Anscheinend ruft Sage NTL an, um dies zu tun ( Einzelheiten zu NTL finden Sie unter http://www.shoup.net/ntl/doc/ZZXFactoring.txt ).
Wenn Sie eine asymptotisch effiziente Methode wünschen, können Sie sich auf die Methode von Lenstra, Lenstra und Lovasz beziehen ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).
quelle