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


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)log⁡k)M(k)kO(slog2⁡s)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+⌊log⁡y⌋

따라서 . 이제 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.