두 개의 n 자리 숫자를 곱하는 가장 빠른 알고리즘은 무엇입니까?


21

두 개의 n 자리 숫자를 곱하는 데 가장 빠른 알고리즘을 알고 싶습니다. 공간 복잡성을 완화 할 수 있습니다!


1
이론적 인 질문이나 실제적인 질문에 관심이 있습니까?
Yuval Filmus

둘 다, 그러나 더 실용적인 것으로 기울어졌습니다!
Andy

1
실용적인 질문으로 GMP를 사용하는 것이 좋습니다. 그들이 무엇을 사용하는지 궁금하다면 문서 나 소스 코드를보십시오.
Yuval Filmus

아무도 모른다. 아직 찾지 못했습니다.
JeffE

답변:


22

현재 Martin Fürer의 Fürer 알고리즘은 복소수에 푸리에 변환을 사용하는 의 시간 복잡성을가 집니다. 그의 알고리즘은 실제로 시간이 Schönhage 및 Strassen의 알고리즘을 기반으로합니다.nlog(n)2Θ(log(n))Θ(nlog(n)log(log(n)))

학교는 곱셈 알고리즘보다 빠르게되는 다른 알고리즘의 시간 복잡도 갖는다 카라 츠바 승산되어 O(nlog23)O(n1.585) 및 시간 복잡도를 갖는다 TOOM 3 알고리즘 의 Θ(n1.465)

이것들은 빠른 알고리즘입니다. 곱셈을위한 가장 빠른 알고리즘을 찾는 것은 Computer Science에서 열린 문제입니다.

참고 문헌 :

  1. 푸어 알고리즘
  2. 많은 수의 FFT 기반 곱셈
  3. 빠른 푸리에 변환
  4. 톰 – 쿡 곱셈
  5. Schönhage–Strassen 알고리즘
  6. 가라 쓰바 알고리즘

복잡도를 가진 알고리즘을 설명하는 D. Harvey와 J. van der Hoeven (2019 년 3 월) 의 최근 논문에 주목하십시오 . O(nlnn)
hardmath

9

avi로 나열된 FFT 알고리즘 은 큰 상수를 추가하므로 수천 비트 미만의 숫자에는 비실용적입니다.

이 목록 외에도 다른 흥미로운 알고리즘과 공개 질문이 있습니다.

  • RAM 모델의 선형 시간 곱셈 (사전 계산 사용)
  • 상수에 의한 곱셈은 서브 리니어 ( PDF )-총비트 복잡성을 얻는 서브 라인 수의 덧셈을 의미합니다. 이것은 본질적으로 긴 곱셈 (더 낮은 숫자에서s의 수를 기준으로 이동 / 추가) 인와 동일하지만속도 향상O(n2logn)1O(n2)O(logn)
  • 잔여 번호 시스템 및 기타 숫자 표현; 곱셈은 ​​거의 선형 시간입니다. 단점은 곱셈은 모듈 식이며 {오버 플로우 검출, 패리티, 크기 비교}는 숫자를 이진 또는 유사한 표현으로 다시 변환하고 전통적인 비교를 수행하는 것만 큼 어렵거나 거의 어렵다. 이 전환은 적어도 전통적인 곱셈 (현재 AFAIK)만큼 나쁩니다.
    • 다른 표현 :
      • [ 대수 표현 ] : 곱셈은 로그 표현을 더한 것입니다. 예 :
        16×32=2log216+log232=24+5=29
        • 단점은 대수적 표현으로의 변환이 곱셈처럼 어렵거나 어려울 수 있으며, 표현도 분수 / 비이성적 / 근사 적 등일 수 있습니다. 다른 연산 (더하기?)이 더 어려울 수 있습니다.
      • 정식 표현 : 소인수 분해의 지수로 숫자를 나타냅니다. 곱셈은 ​​지수를 더하는 것입니다. 예 :
        36×48=3251×223141=22324151
      • 단점은 곱셈보다 훨씬 어려운 문제 또는 인수 분해가 필요하다는 것입니다. 추가와 같은 다른 작업은 매우 어려울 수 있습니다.

1
나는 올바른 모듈러스를 가진 찌꺼기 / 중국 리머 인 정리에 기반한 접근 이 전환으로 인해 전통적인 곱셈보다 속도를 높일 수 있다고 믿는다 . 어느 시점에서 이것은 적어도 각주로 TAOCP의 4 장에있었습니다. (여전히 FFT 기반 방법에 접근하지는 않지만 흥미로운 역사적 메모입니다.)
Steven Stadnicki

@StevenStadnicki 쿨, 그 다음에 볼 필요가있다; 당신은 복잡성을 알고 있습니까?
Realz Slaw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.