Radici intere di un polinomio


10

Quale algoritmo possiamo usare per trovare tutte le radici intere di un polinomio con coefficienti interi?f(x)

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?f(x)


1
Stai cercando un algoritmo per restituire una radice intera di un dato polinomio? Se sì, questo è indecidibile e la domanda è fuori tema qui. Puoi chiederlo su Informatica che ha un ambito più ampio.
Kaveh,

7
Resisti. Perché essere indecidibili rende la domanda fuori tema? Questa è una domanda legittima a livello di ricerca.
Jeffε

2
Quindi, come fa Sage? Essere indecidibili - anche se è noto per essere indecidibili - non rende il problema teoricamente poco interessante. Gli scienziati informatici teorici risolvono continuamente problemi indecidibili - vedi, ad esempio, tutta la verifica assistita da computer.
Jeffε

11
f(x)f(x)dd

1
@Pratik Non hai bisogno delle basi Gröbner nel caso univariato.
Yuval Filmus,

Risposte:


10

f

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 ).


1
Grazie per il suggerimento utile! Affascinante. Potresti essere disposto a modificare la tua risposta per elaborare come trasformarlo in un algoritmo e qual è il suo tempo di esecuzione? Il tempo di esecuzione nel caso peggiore è esponenziale (perché può richiedere del tempo subesponenziale per essere considerato, e quindi potrebbero esserci in modo esponenziale molti divisori del coefficiente iniziale e finale)? In tal caso, esistono algoritmi migliori o si tratta del migliore che si possa fare? Inoltre, questo approccio non trova solo le radici razionali, ma non quelle irrazionali?
DW,

Rileggendo la domanda e vedendo che la interpreti in modo diverso, non ne sono più completamente sicuro, ma a me e ad alcuni commentatori è sembrato chiaro che la domanda ponga delle radici intere. Non la leggi così?
Minar

@minar, hai ragione. Ora che rileggo la domanda, sembra così. Devo aver letto la domanda troppo in fretta. (Inizialmente ho interpretato erroneamente la domanda implicando che vogliamo tutte le radici di un polinomio con coefficienti interi, ma nel rileggere la domanda, sembra una cattiva interpretazione.)
DW

2
Per un metodo asintoticamente e praticamente efficiente, l'algoritmo più noto è di van Hoeij (vedi qui ). In realtà, NTL sembra utilizzarlo.
Bruno,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.