정수의 큰 거듭 제곱의 비트 수 계산


10

이진 표현에서 두 개의 정수 와 주어지면 의 비트 크기를 계산하는 복잡성은 무엇 입니까?N X Nxnxn

이를 수행하는 한 가지 방법은 충분한 정밀도 로 의 근사값 을 계산하여 를 계산하는 것 입니다. 이 나타나 컴퓨팅 와 의 정밀도의 비트가 수행 될 수 길이의 두 정수의 곱을 계산하는 데 필요한 시간이다 . 수율이 복잡성 (특히 간단한 생략) 알고리즘은 대략 만약 둘 다를의 비트 크기에 결합 된 및 (I 더 실수를하지 않는 경우).log 2 ( x ) log 2 ( x ) k O ( M ( k ) log k ) M ( k ) k O ( s log 2 S ) S (X)의 N1+log2(xn)=1+nlog2(x)log2(x)log2(x)kO(M(k)logk)M(k)kO(slog2s)sxn

우리는 이길 수 있습니까? 여기서 는 와 의 크기입니다 (크기가 비슷한 경우)? 이보다 복잡하거나 더 나은 간단한 알고리즘이 있습니까?X에 NO(slog2(s))sxn

참고 : Turing machine과 같은 이론적 모델의 복잡성에 관심이 있습니다.



@ vzn : 나는 이것이 유용하다고 생각하지 않습니다 ...
Bruno

왜 안돼? 이 질문에 RJLipton 적용으로 Dysons 추측 예에 알고리즘 공격을 생각 나게 1 , 2
vzn

내 질문에 대한 답을 찾았 기 때문에 다른 곳에서 질문 할 필요가 없습니다.
Bruno

답변:


1

[편집] 제안 된대로 자세한 내용을 제공하기 위해 답변을 편집합니다.

두 번째 질문에 대한 대답은 ' 아니요'입니다 .

제안. 컴퓨팅 정밀도까지 K 것은 어려운 등 최소한의 비트 크기 계산 같다 X 2 케이 .log(x)kx2k

증명. 하자 정수 y 의 비트 크기를 나타냅니다 . 먼저 통보 음이 아닌 정수 동안 그 Y 의 비트 크기 , Y가1 + 로그 Y .|y|yyy1+logy

따라서 . 이제 2 k log ( x )log ( x ) k 위치를 왼쪽 으로 이동 합니다. 따라서 하나 계산할 수 로그 ( X ) 정밀도에 K를 단순히 뺌으로써 제 1 의 비트 크기 (X) 2 K 와 결과 시프트 케이 오른쪽 위치.|엑스2케이|=1+2케이로그엑스2케이로그(엑스)로그(엑스)케이로그(엑스)케이1엑스2케이케이


1
의 비트 수가 왜 로그 x 에서 k 비트의 정밀도 를 계산할 수있게 합니까? 실제로 축소가 효과가 있습니까? 어떤 경우, 특별한 경우 , N = 2 , k는 매우 쉬웠다 / 어려워 모든 다른 가능한 값보다 N (비 - 전력의 명의)? 그 가능성을 배제 할 방법이 있습니까? 엑스2케이로그엑스케이=2케이
DW

@DW : vzn의 의견을 듣고이 질문으로 돌아갑니다. 내 증거는 다음과 같습니다. 정수 의 비트 수 는 1 + ⌊입니다.와이 입니다. 따라서 x 2 k 의 비트 수는 1 + 2 k log x 입니다. 또한, 2 유전율 로그 X는 동일하다 로그 X 하지만 시프트 K 왼쪽에 위치한다. 따라서2 유전율 로그 X ⌋는 (적어도) 당신에게 제공 K를 먼저 비트1+로그와이엑스2케이1+2케이로그엑스2케이로그엑스로그엑스케이2케이로그엑스케이 . 따라서 x 2 k 의 비트 수를 계산할 수 있으면결과에서 1 을빼서 log x 의 첫 번째 k 비트를 얻습니다. 이게 말이 되요? 로그엑스엑스2케이1케이로그엑스
Bruno

예, 더 이해가됩니다! 특히 경도를 보여 주려고하기 때문입니다. 이 자세한 설명으로 답변을 업데이트 해 보시기 바랍니다. 다시 돌아와서 자신의 질문에 대한 답변을 문서화 해 주셔서 감사합니다.
DW
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.