多項式の整数根


10

整数係数を持つ多項式すべての整数根を見つけるためにどのようなアルゴリズムを使用できますか?f(x)

すべての係数が非常に大きい場合でも、Sageは数秒以内に根を見つけることができることを観察しました。どのようにしてそれを行うことができますか?f(x


1
与えられた多項式の整数根を返すアルゴリズムを探していますか?はいの場合、それは決定不可能であり、質問はここではトピックから外れています。より広い範囲を持つコンピュータサイエンスでそれを尋ねることができます。
Kaveh 2013

7
つかまっている。決定不可能であることはなぜ問題を主題外にするのですか?これは正当な研究レベルの質問です。
Jeffε

2
それでは、セージはそれをどのように行うのでしょうか?決定不可能であることは、たとえ決定不可能であることがよく知られていても、理論的には問題になりません。理論的なコンピューター科学者は、決定不可能な問題を常に解決します。たとえば、コンピューター支援検証のすべてをご覧ください。
Jeffε

11
カヴェ、あなたの言っていることは真実ではありません。決定できないのは、多くの変数を含むディオファントス方程式の可解性です(そのため、簡単に無限に多くの実際の解があり、整数/有理解が検索されます)。しかし、この質問はユニ変量多項式についてです(あれば当然決定可能である、F xは程度であるD、そこまでしているDの根と一つ一つの整数である確認することができます)。fバツfバツdd
Mahdi Cheraghchi 2013

1
@Pratik一変量の場合、グレブナー基底は必要ありません。
Yuval Filmus

回答:


10

の係数が整数または有理数であり、整数の根が必要であると仮定すると、最も簡単なアプローチは、整数または有理根の定理を使用することです。http://en.wikipedia.org/wiki/Rational_root_theoremを参照してください DWによって指摘されているように、定数係数を因数分解することが難しい場合、これは問題になる可能性があります/math/123018/polynomial-参照) and-integer-rootsf

いずれにせよ、Sageのドキュメントでは、ルート検索の方法を明確に説明しています。「Kが積分領域の場合に使用される次の方法は、多項式を因数分解することです。これが成功した場合、すべての次数1係数a * x + b、-b / aをルートとして追加します(この商が実際に目的のリングにある限り)。 " http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.htmlを 参照してください

だからあなたの質問はどのように効率的に多項式を整数係数で因数分解するのですか? どうやら、セージはそれを行うためにNTLを呼び出しています(NTLの詳細についてはhttp://www.shoup.net/ntl/doc/ZZXFactoring.txtを参照してください)。

漸近的に効率的な方法が必要な場合は、Lenstra、Lenstra、およびLovaszの方法を参照できます(https://openaccess.leidenuniv.nl/handle/1887/3810)。


1
役立つヒントをありがとう!魅力的です。これをアルゴリズムに変換する方法とその実行時間を詳しく説明するために、回答を編集してもかまいませんか?ワーストケースの実行時間は指数関数的ですか(それは因数分解に時間がかかる可能性があるため、先行係数と後続係数の指数が指数関数的に多くなる可能性があるため)?もしそうなら、より良いアルゴリズムがありますか、それともこれができる最高のものですか?また、このアプローチは合理的な根だけを見つけ、非合理的な根は見つけませんか?
DW 2013

質問をもう一度読んで、あなたがそれを別様に解釈していることに気付いたとき、私はもはや完全に確信が持てませんが、質問が整数の根について尋ねていることは私や一部のコメント者には明らかでした。そのように読みませんか?
2013

@minar、あなたは正しいです。質問をもう一度読んだので、そのように見えます。私は質問を早く読みすぎたに違いありません。(私は当初、質問を整数係数をもつ多項式のすべての根が欲しいと示唆していると誤解していましたが、質問を読み直すと、それは誤解のように見えます。)
DW

2
漸近的かつ実際的に効率な方法の場合、最もよく知られているアルゴリズムはvan Hoeijによるものです(こちらを参照)。実際、NTLが使用しているようです。
ブルーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.