선형 곱셈, 덧셈 및 비교 (정수)에 얼마나 가깝습니까?


21

에 accoring에 KW 레이건의 기사 "연결 별" , 그는 그것이 추가, 곱셈,을 비교 한 작업이 선형 시간에 계산 가능한이되도록 정수의 표현을 찾기 위해 열린 여전히 문제가 있다는 말에 언급 :

더하기, 곱하기 및 비교가 모두 선형 시간으로 가능하도록 정수 표현이 있습니까? 기본적으로, 이산 주문 된 선형 시간이 있습니까?

(1) 비교하지 않고 선형 시간 곱셈과 덧셈에 얼마나 가까이 다가 갈 수 있습니까? 여기서는 문제 크기가 다를 수 있으므로 정수 크기를 변경할 수있는 데이터 구조 / 알고리즘이 필요할 수 있다고 가정합니다.

(2) 완전한 문제를 위해 정수를 곱하고, 더하고, 비교하기위한 최적의 체계를 찾을 것이라고 가정 할 수 있습니다. 선형 시간에 대해이 세 가지 작업 중 최악의 상황 (가장 최악의 경우)을 얼마나 가깝게 얻을 수 있습니까? 그리고 그 메모에서 다른 작업은 얼마나 빠릅니까?

공식적인 문제 진술

Emil Jeřábek이 언급했듯이, 우리는 사소한 경우를 배제 하고이 질문에 대한 최악의 경우 행동에 집중하고 싶습니다.

따라서 음수가 아닌 정수 y 에 대해 0 x < n0 y < n 인 경우 더하기, 곱하기를 수행하고 xy 사이의 \를 비교할 수있는 데이터 구조 / 알고리즘을 찾을 수 있습니까 ? 에서 O ( N 로그 ( N ) ) 의 시간과 O ( 로그 2 ( N ) ) 공간을?xy0x<n0y<nxyO(nlog(n))O(log2(n))


1
음이 아닌 정수에 대해 시간 에서 이러한 작업을 수행하는 체계를 만들 수 있습니다. 여기서 n 은 가장 큰 정수의 비트 크기입니다 (우리는 n을 미리 알고 있다고 가정 합니다). 우리가 더 잘할 수 있는지 궁금해하고 계산되는 현재 정수에 비례 하여이 작업을 수행합니다. Θ(n)nn
매트 Groff

5
@TysonWilliams : 예! 이진!
Jeffε

2
이러한 모든 연산에 대해 선형 시간을 얻는 대신 정수로 표시되어 모든 연산에 시간 있습니까? O(nlogn)
Emil Jeřábek은 Monica를 지원합니다 : Monica

4
실제로, 사소한 긍정적 인 대답이 있습니다. 비트의 패딩으로 이진수로 정수를 나타냅니다 . 이 표현은 표현이 이진 표현의 길이에서 선형 길이를 가져야한다는 효과에 대한 조건을 포함해서는 안됩니까? n2
에밀 예라 벡은 모니카 지원

5
@ EmilJeřábek : 어떤 함수 f ( n ) = Θ ( log n ) 에 대해 정수 의 표현이 f ( n ) 비트 를 사용하기 를 원한다고 가정 합니다. nf(n)f(n)=Θ(logn)
Jeffε

답변:


14

아마도 가장 좋은 대답은 아니지만 아마도 이것은 유용한 출발점이 될 것입니다. 음이 아닌 정수를 나타내려면 2부터 시작하는 모듈로 순차 소수의 잔차 세트로 저장할 수 있습니다.이 형식에서는 비교가 어려울 수 있지만 곱셈과 덧셈을 매우 빠르게 수행 할 수 있습니다. 첫번째 소수 의 곱은 p n # = exp ( ( 1 + o ( 1 ) ) n log n )에 의해 근사 됩니다 . 따라서 정수 N 을 나타내 려면 첫 번째 n 소수 소수의 모듈로가 필요합니다 .n

pn#=exp((1+o(1))nlogn).
Nn . 우리가 어떤 나타낼 수 있기 때문에 N < P N #을 잔기 제 모듈로 사용하여 N 소수 잔기, 우리는 취할 수 N 로그 N α 로그 ( N을 ) . 첨가 및 곱셈은 잔기 쌍 사이에서 직접 수행 될 수있다. 이러한 쌍은 n 개이며 최대 소수는 약 n log ( n ) 입니다. 따라서 추가해야합니다N<exp((1+o(1))nlogn)N<pn#nnlognlog(N)nnlog(n) , Schonhage-Strassen을 통한 곱셈은 O ( n log log ( N ) 로그 로그 로그 로그 ( N ) log log log ( N ) )에 있어야합니다. 이후 n은 로그 N α 로그 N을 다음 대략적인주는 N 에서 O ( 로그 N을 / 로그 기록 N을 )O(nloglog(N))O(nloglog(N)loglogloglog(N)logloglog(N))nlognlogNnO(logN/loglogN). 이것은 대략 추가 복잡성 및 승산을 줄 것이다 O ( 로그 N 로그 로그 로그 N 로그 로그 로그 로그 N )를 .O(logN)O(logNlogloglogNloglogloglogN)

1
vzn

1
@ vzn : 예, 비교를 위해 언급 할 것이지만 혼합 기수 표현을 통해 더 빠른 비교 작업이있을 수 있습니다.
Joe Fitzsimons
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.