알 수없는 작은 다항식으로 나눌 때 큰 고정 다항식의 나머지를 찾습니다.


9

유한 필드에서 작업한다고 가정합니다. 이 필드에 대해 큰 고정 다항식 p (x) (즉, 차수 1000)가 제공됩니다. 이 다항식은 미리 알려져 있으며 "초기 단계"에서 많은 리소스를 사용하여 계산을 수행 할 수 있습니다. 이러한 결과는 비교적 작은 조회 테이블에 저장 될 수 있습니다.

"초기 단계"의 끝에서, 알려지지 않은 작은 다항식 q (x)가 주어질 것이다 (즉, 5도 이하).

"초기 단계"에서 복잡한 계산을 수행 할 수 있다면 p (x) mod q (x)를 계산하는 빠른 방법이 있습니까? 한 가지 확실한 방법은 가능한 모든 q (x) 값에 대해 p (x) mod q (x)를 계산하는 것입니다. 더 좋은 방법이 있습니까?

답변:


3

다음 알고리즘은 기본 필드의 순서가 매우 작은 경우에 효과적입니다. s.

우리가 알고 있다고 가정 q 일정 정도의 돌이킬 수 없다 d. 그런 다음 modq, 우린 알아 xsd=x보유합니다. 따라서 를 사전 계산하면 충분합니다 .p(x)modxsdx

일반적으로 는 수없는 다항식 의 곱으로 분해 될 수 있습니다 . 이 경우, 유사한 인자 계산에 적용 모듈 각각 별도로하고 함께 결과를 조립할. 따라서 각 에 대해 를 계산해야합니다 .q(x)q=q1qrpq1,,qrp(x)modxsdxdd


2

나는 이것을 할 수있는 매우 빠른 방법이 있다고 생각합니다. 아직 알려지지 않은 다항식의 계수를 보자q 있다 bi그래서 q=i=0dbixi 어디 d작은 숫자입니다. 이제 컴퓨팅을 시작하겠습니다p(modq) 어디 p=i=0Daixi, 어디 D 크고 ai알려져 있습니다. 우리는 평등을 사용하여 정도를 줄임으로써aDxD=aDbdi=1d1bdixDi. 결국 우리가 얻는 것은 학위입니다<d1 계수가 다항식 인 다항식 bi (부터 ai알려져 있습니다). 이 다항식은 일단 계산하면 빠르게 계산할 수 있습니다q.


-1

아래이 게시물에 대한 훌륭한 의견을보십시오. :)


전처리; 입력: p(x)

  1. 인자 p(x) 같이 p(x)=i=01000(xiri).

  2. 이것을 테이블로 저장 T 뚜렷한 뿌리 rj 그리고 그들의 각각의 다중성 mj.

온라인 단계; 입력: q(x)

  1. 인자 q(x) 같이 q(x)=i=05(xiri).

  2. 이것을 목록으로 저장 L 뚜렷한 뿌리 rj 그리고 그들의 각각의 다중성 mj.

  3. 동안 L 비어 있지 않은 경우 다음 루트 / 다중성을 제거하십시오. L 그리고 비슷한 용어들 T.

  4. 읽어 p(x)modq(x) 수정 된 테이블에서 T 출력.


다른 의견들 :

  • 분명히 당신은 테이블을 정렬하고 싶습니다 T 이진 검색 (또는 트리)으로 액세스하십시오.
  • (허락하다 d 정도이다 p(x).) 출력을 원한다면 p(x)modq(x) 계수 표현을하려면 마지막에 FFT를 여러 번 수행하여 O~(d) 시각.
  • 공식화 방법에 따라 용어를 다시 조합하는 다양한 방법을 미리 계산할 수 있습니다. T사전에 (동적 프로그래밍 스타일), 대부분의 (또는 모든) 곱셈은 단지 조회입니다. 지배 비용은 조회 횟수 또는 대략적인 수치입니다.O(logd). 만약d=1000, 이것은 소수의 구체적이고 산술적 인 연산입니다.

2
어떤 분야를 고려하고 있습니까? 이 표현이 원래 필드와 관련하여 얼마나 클 것으로 기대하십니까? 그리고 수정 된 테이블에서 출력을 읽고 출력 할 때 무엇을 의미합니까?
David Eppstein

2
이것은 둘 다있는 필드에서 작동하는 경우에만 작동합니다. pq스플릿. 그러나 이것은에 의존하는 것 같습니다q; 특히, 당신은 뿌리를 미리 계산할 수 없습니다p혼자. 또한, 뿌리를 계산q 이러한 큰 분야에서 시간이 걸립니다 (적어도) |p|; 이것은 순진한 알고리즘보다 낫지 않습니다.
David Harris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.