다항식의 정수근


10

정수 계수 를 갖는 다항식 의 모든 정수 근을 찾기 위해 어떤 알고리즘을 사용할 수 있습니까?에프(엑스)

세이지가 모든 계수 가 매우 큰 경우에도 몇 초 안에 뿌리를 찾을 수 있음을 관찰합니다 . 어떻게 그렇게 할 수 있습니까?에프(엑스)


1
주어진 다항식의 정수 루트를 반환하는 알고리즘을 찾고 있습니까? 그렇다면, 그것은 결정 불가능하고 문제는 여기서 논외입니다. 더 넓은 범위의 컴퓨터 과학 에 요청할 수 있습니다 .
— Kaveh

7
기다려. 결정 불가능한 이유는 무엇입니까? 이것은 합법적 인 연구 수준의 질문입니다.
— Jeffε

2
그렇다면 Sage는 어떻게합니까? 결정 불가능한 것으로 알려져 있지만 결정 불가능한 것으로 이론적으로 문제가되지는 않습니다. 이론적 인 컴퓨터 과학자들은 결정 불가능한 문제를 항상 해결합니다. 예를 들어 모든 컴퓨터 보조 검증을 참조하십시오.
— Jeffε

11
Kaveh, 당신이 말하는 것은 사실이 아닙니다. 결정 불가능한 것은 많은 변수를 가진 Diophantine 방정식의 용해도입니다 (따라서 무한히 많은 실제 솔루션이 있고 정수 / 합리적 솔루션을 찾고 있습니다). 그러나이 질문은 단 변량 다항식 에 관한 것입니다. 물론 결정 할 수 있습니다 ( f ( x ) 가 d 도인 경우 최대 d 개의 근이 있고 어느 것이 정수인지 확인할 수 있습니다). 에프(엑스)에프(엑스)디디
— Mahdi Cheraghchi

1
@Pratik 일 변량의 경우 Gröbner 염기가 ​​필요하지 않습니다.
— 유발 Filmus

답변:


10

의 계수 가 정수 또는 유리수이고 정수 근을 원한다고 가정하면 가장 간단한 방법은 정수 또는 유리수 정리를 사용하는 것입니다. 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 ) 방법을 참조하십시오 .


1
유용한 힌트를 주셔서 감사합니다! 매혹적인. 이 알고리즘을 알고리즘으로 바꾸는 방법과 실행 시간은 무엇입니까? 최악의 경우 실행 시간이 지수입니까? (지수를 계산하는 데 시간이 걸리는 시간이 걸릴 수 있으며, 그에 따라 선행 및 후행 계수의 지수가 많이 나올 수 있기 때문에) 그렇다면 더 나은 알고리즘이 있습니까, 아니면 가장 좋은 알고리즘입니까? 또한이 접근법은 합리적인 뿌리만을 찾지는 않지만 비이성적 인 뿌리는 찾지 않습니까?
— DW

질문을 다시 읽고 당신이 그것을 다르게 해석하는 것을 보았을 때, 나는 더 이상 완전히 확신하지 못하지만, 질문에 정수 뿌리에 대해 묻는 것은 나에게 그리고 어떤 주석가에게 분명해 보였다. 그렇게 읽지 않습니까?
— 나르

@minar, 네 말이 맞아. 이제 질문을 다시 읽었으므로 그렇게 보입니다. 질문을 너무 빨리 읽었어야합니다. (처음에는 정수 계수를 갖는 다항식의 모든 근을 원하지만 질문을 다시 읽으면 오해처럼 보입니다.)
— DW

2
점진적 이고 실질적 으로 효율적인 방법의 경우 가장 잘 알려진 알고리즘은 van Hoeij입니다 ( 여기 참조 ). 실제로 NTL이 사용하고있는 것 같습니다.
— Bruno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.