1 svar
100 visningar
coffeshot 429
Postad: 28 aug 14:06

Bitkostad för tvåpotensalgorithm: varför tänker jag fel?

Hej,

Det är ett steg i följande uppgift som jag inte förstår

Så här tänkte jag: om vi tänker oss att multiplikation är O(k2)O(k^2) där kk är antalet bitar för de två talen som multipliceras.

Sen tittar vi på pow <- pow * pow.

Iteration Värde på pow innan multiplikationen utförs Värde på pow efter multiplikationen utförts 
i=1 2 2*2=4=2²
i=2 2²*2²=2⁴
i=3 2⁴ 2⁴*2⁴=2⁸
... ... ...

Då tänker jag så här: Det är "Värde på pow innan multiplikationen utförs" som påverkar bitkomplexiteten. I i=1, då beräknar vi 2*2. Att lagra talet 2 kräver 2 bitar.

P.s.s., i i=2, då beräknar vi 4*4. Att lagra resultatet (16, 2⁴), det kräver 5 bitar.

Därför blir min slutsats i varje iteration så multipliceras två stycken tal som tar upp 2i-1+12^{i-1}+1.

Bitkomplexiteten "per varv" blir således (2i-1+1)2(2^{i-1}+1)^2. Loopen körs logm\log m gånger, så jag ska summera över 1logm(2i-1+1)2)\sum_1^{\log m} (2^{i-1}+1)^2). Men det är inte så facit gör:

Varför tänker jag fel?

Micimacko 4136
Postad: 28 aug 16:25

Jag tror inte du tänker så fel. Ditt i kommer gå upp till log m=n, så du får lite grovt avrundat om du fortsätter n*(2^n)^2=n*4^n=O(4^n)

Svara
Close