정수 계수 를 갖는 다항식 의 모든 정수 근을 찾기 위해 어떤 알고리즘을 사용할 수 있습니까?
세이지가 모든 계수 가 매우 큰 경우에도 몇 초 안에 뿌리를 찾을 수 있음을 관찰합니다 . 어떻게 그렇게 할 수 있습니까?
정수 계수 를 갖는 다항식 의 모든 정수 근을 찾기 위해 어떤 알고리즘을 사용할 수 있습니까?
세이지가 모든 계수 가 매우 큰 경우에도 몇 초 안에 뿌리를 찾을 수 있음을 관찰합니다 . 어떻게 그렇게 할 수 있습니까?
답변:
의 계수 가 정수 또는 유리수이고 정수 근을 원한다고 가정하면 가장 간단한 방법은 정수 또는 유리수 정리를 사용하는 것입니다. http://en.wikipedia.org/wiki/Rational_root_theorem을 참조하십시오 . DW에서 지적한 것처럼, 상수 계수를 고려하기 어려운 경우 문제가 될 수 있습니다 ( /math/123018/polynomial- 그리고 정수 뿌리 )
어쨌든 Sage 문서는 루트 검색을 수행하는 방법을 명확하게 설명합니다. "K가 필수 도메인 인 경우 다음 방법은 다항식을 인수 분해하는 것입니다. 이것이 성공하면 모든 학위에 대해 인수 a * x + b, 우리는 -b / a를 루트로 추가합니다 (이 몫이 실제로 원하는 링에있는 한). " http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html을 참조 하십시오 .
그래서 당신의 질문은 어떻게 정수 계수로 다항식을 효율적으로 인수 분해합니까? 분명히, Sage는 NTL에 전화하여이를 수행합니다 ( NTL 세부 사항 은 http://www.shoup.net/ntl/doc/ZZXFactoring.txt 참조).
무증상으로 효율적인 방법을 원한다면 Lenstra, Lenstra 및 Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ) 방법을 참조하십시오 .