الگوریتم9-2: ضرب اعداد صحیح بزرگ
DESCRIPTION
الگوریتم9-2: ضرب اعداد صحیح بزرگ. مسئله: ضرب دو عدد صحیح بزرگ u و v large _ integer prod ( large_integer u, large_integer v) { large_inreger x , y , w , z ; int n , m ; n = maximum(number of digits in u,number of digits in v) if (u = = 0 || v = = 0) - PowerPoint PPT PresentationTRANSCRIPT
بزرگ : 2-9الگوریتم صحیح اعداد ضرب
بزرگ مسئله: صحیح عدد دو vو u ضرب
large _ integer prod ( large_integer u, large_integer v)
{
large_inreger x , y , w , z ;
int n , m ;
n = maximum(number of digits in u,number of digits in v)
if (u = = 0 || v = = 0)
return 0 ;
else if (n < = threshold) return u × v obtained in the usual way;
else {
m = Į n / 2 ⌡;
x = u divide 10 ^ m ; y = rem 10 ^ m;
w = v divide 10 ^ m ; z = rem 10 ^ m;
return prod (x ,w) × 10 ^2m + ( prod ( x, z) + prod (w, y )) × 10 ^ m + prod ( y, z);
}
}
) ضرب لگوریتم ا برای حالت بدترین در زمانی پیچیدگی تحلیل( صحیح اعداد
: اصلی صحیح عمل عدد یک در دهدهی رقم یک دستکاریدر بزرگ
اعمال انجام یا کردن، تفریق ، کردن جمع ، divide 10 ^ mهنگام
rem 10 ^m 10× یا ^ m .یک را هر اعمال این می mاز انجام باردهد.
: ورودی . n اندازه صحیح عدد دو از یک هر ارقام تعداد ،
ازای از nکه n > sبه T ( n ) = 4 T (n / 2) + cnاست2توانی
T ( s ) = 0
T ( n ) Є θ ( n² )
روش از توان نمی مسائلی چه درکرد استفاده وحل تقسیم
اندازه- 1• با می nمسایلی تقسیم مسئله زیر چند بهبرابر تقریبا نیز ها مسئله زیر اندازه که . nشود است
. کند می ایجاد نمایی زمان
اندازه- 2• با ای اندازه nمساله به مسئله nتقریبا زیراندازه آن n/cبا در . cکه شود می تقسیم است ثابت
.nlognزمان کند می ایجاد
شطرنجی صفحه کردن فرش
صفحه • .2k*2kابعاد است شکل • به .Lموزاییک است •. ماند می خالی ها خانه از یکی حالت بدترین در•
4*4
ها ای جمله چند ضرب
• P(x)=anxn+an-1xn-1+an-2xn-2 . . . a2x2 + a1x1+a0
• Q(x)=bnxn+bn-1xn-1+bn-2xn-2 . . . b2x2 + b1x1+b0
• R(x)= P(x)Q(x)
• P(x)=anxn+an-1xn-1+an-2xn-2 . . . a2x2 + a1x1+a0
• Q(x)=bnxn+bn-1xn-1+bn-2xn-2 . . . b2x2 + b1x1+b0
• R(x)= P(x)Q(x)=a0b0 + a0b1x1+a0b2x2 + . .+ a0bn-2xn-2 + a0bn-1xn-1 + a0bnxn
a1b0x+ a1b1x2+a1b2x3 + . .+ a1bn-2xn-1 + a1bn-1xn + a1bnxn+1
a2b0 x2+ a2b1x3+a2b2x4 + . .+ a2bn-2xn + a2bn-1xn+1 + a2bnxn+2
.
.
.
• R(x)= P(x)Q(x)=a0b0 + a0b1x1+a0b2x2 + . .+ a0bn-2xn-2 + a0bn-1xn-1 + a0bnxn
a1b0x+ a1b1x2+a1b2x3 + . .+ a1bn-2xn-1 + a1bn-1xn + a1bnxn+1
a2b0 x2+ a2b1x3+a2b2x4 + . .+ a2bn-2xn + a2bn-1xn+1 + a2bnxn+2
.
.
.a0b0
• R(x)= P(x)Q(x)=a0b0 + a0b1x1+a0b2x2 + . .+ a0bn-2xn-2 + a0bn-1xn-1 + a0bnxn
a1b0x+ a1b1x2+a1b2x3 + . .+ a1bn-2xn-1 + a1bn-1xn + a1bnxn+1
a2b0 x2+ a2b1x3+a2b2x4 + . .+ a2bn-2xn + a2bn-1xn+1 + a2bnxn+2
.
.
.a0b0 + (a1b0+a0b1)x +
• R(x)= P(x)Q(x)=a0b0 + a0b1x1+a0b2x2 + . .+ a0bn-2xn-2 + a0bn-1xn-1 + a0bnxn
a1b0x+ a1b1x2+a1b2x3 + . .+ a1bn-2xn-1 + a1bn-1xn + a1bnxn+1
a2b0 x2+ a2b1x3+a2b2x4 + . .+ a2bn-2xn + a2bn-1xn+1 + a2bnxn+2
.
.
.a0b0 + (a1b0+a0b1)x + (a0b2 + a1b1 + a2b0)x2 +
• R(x)= P(x)Q(x)=a0b0 + a0b1x1+a0b2x2 + . .+ a0bn-2xn-2 + a0bn-1xn-1 + a0bnxn
a1b0x+ a1b1x2+a1b2x3 + . .+ a1bn-2xn-1 + a1bn-1xn + a1bnxn+1
a2b0 x2+ a2b1x3+a2b2x4 + . .+ a2bn-2xn + a2bn-1xn+1 + a2bnxn+2
.
.
.a0b0 + (a1b0+a0b1)x + (a0b2 + a1b1 + a2b0)x2 + . . .
•k ام =ci=جمله
k
i=0•R(x)= P(x)Q(x)=
2n
i=0
cixi
aibk-i
•R(x)= P(x)Q(x)=
2n
i=0
cixi
دو به بنابراین : forنیاز محاسبه O(n2)برای
وحل تقسیم روشایها جمله چند ضرب برای
• R(x)= P(x)Q(x)
• P(x) =Ax(n/2) + B• Q(x) = C x(n/2) + D
•A , B ,C ,D مرتبه از ای جمله .n/2جند است • R(x)= P(x)Q(x)=(Ax(n/2)+B)(Cx(n/2) +D)• = ACxn +(AD+BC)x(n/2)+BD
ها • ضرب . 4تعداد است تا• ضرب T(n)=4T(n/2)+cn عمل• T(n)=θ(n2)
• . است نشده بهتر الگوریتم
• R(x)= P(x)Q(x)=(Ax(n/2)+B)(Cx(n/2) +D)• = ACxn +(AD+BC)x(n/2)+BD
• AD+BC=(A-B)(D-C)+AC+BD
• R(x)= ACxn +((A-B)(D-C)+AC+BD)x(n/2)+BD• R(x)= ACxn +((A-B)(D-C)+AC+BD)x(n/2)+BD
•. است الزم ضرب سه• T(n)=3T(n/2)+cn• T(n)= θ(nlog 3)
• . است بهتر عملکرد