الأحد، 18 نوفمبر 2018

كاراتسوبا الضرب



ومن الممكن أن تؤدي الضرب من أعداد كبيرة في (العديد) عمليات أقل من أسلوب القوة الغاشمة المعتادة "الضرب الطويل." كما اكتشف Karatsuba (Karatsuba وOfman 1962)، الضرب اثنين نأرقامأرقام يمكن القيام به مع تعقيد قليلا أقل من ن ^ 2استخدام الهويات من النموذج
 (أ + ب · 10 ^ ن) (ج + د · 10 ^ ن) = ميلان + [(أ + ب) (ج + د) -AC-BD] 10 ^ ن + دينار بحريني · 10 ^ (2N).
(1)
فالإجراء المتكرر يعطي تعقيدًا قليلاً O (ن ^ (lg3)) ، حيث lg3 = 1.58 ... <2(Borwein et al. 1989). أفضل تجليد معروف هو O (nlgnlglgn)خطوات ن >> 1(Schönhage and Strassen 1971، Knuth 1998). ومع ذلك ، من الصعب تنفيذ هذه الخوارزمية ، ولكن إجراءً يعتمد على التحويل السريع لـ Fourier سهل التنفيذ ويعطي تعقيدًا قليلاً O ((LGN) ^ (2 + إبسيلون) ن) (Brigham 1974، Borodin and Munro 1975، Borwein et al. 1989، Knuth 1998).
كمثال ملموس ، ضع في اعتبارك الضرب من رقمين كل اثنين فقط "أرقام" طويلة في الأساس ث،
N_1=a_0 + a_1w
(2)
N_2=b_0 + b_1w،
(3)
ثم منتجهم هو
P=N_1N_2
(4)
=a_0b_0 + (a_0b_1 + a_1b_0) ث + a_1b_1w ^ 2
(5)
=p_0 + p_1w + p_2w ^ 2.
(6)
بدلاً من تقييم منتجات الأرقام الفردية ، اكتب الآن
q_0=a_0b_0
(7)
q_1=(a_0 + A_1) (b_0 + b_1)
(8)
q_2=a_1b_1.
(9)
المصطلح الرئيسي هو q_1، والتي يمكن توسيعها تجمع لاعبو، ومكتوب في شروط p_jكما
 q_1 = p_1 + p_0 + p_2.
(10)
ومع ذلك ، منذ ذلك p_0 = q_0، وعلى p_2 = q_2الفور يتبع ذلك
p_0=q_0
(11)
p_1=q_1-q_0-q_2
(12)
p_2=q_2،
(13)
لذلك صتم تقييم "الأرقام" الثلاثة باستخدام ثلاث مضاعفات بدلاً من أربعة. يمكن تعميم هذه التقنية على الأرقام متعددة الأرقام ، مع المقايضة كونها تتطلب المزيد من الإضافات والطرح.
الآن النظر في أربعة أرقام "أرقام"
 N_1 = a_0 + a_1w + a_2w ^ 2 + a_3w ^ 3،
(14)
والتي يمكن كتابتها كرقم "رقمين" ممثلة في القاعدة ث ^ 2،
 N_1 = (a_0 + a_1w) + (a_2 + a_3w) ث ^ 2.
(15)
"الأرقام" في القاعدة الجديدة هي الآن
a_0 ^=a_0 + a_1w
(16)
A_1 ^=a_2 + a_3w،
(17)
وخوارزمية Karatsuba يمكن تطبيقها على N_1و N_2في هذا النموذج. لذلك ، لا تقتصر خوارزمية Karatsuba على ضرب الأرقام المكونة من رقمين ، ولكنها بشكل عام تعبر عن مضاعفة رقمين من حيث مضاعفات أعداد نصف الحجم. إن السرعة المقاربة التي تحصل عليها الخوارزمية بالتطبيق العودي على المنتجات الثانوية المطلوبة الأصغر هي O (ن ^ (lg3))(Knuth 1998).
عندما يتم تطبيق هذه التقنية بشكل متكرر على الأرقام متعددة الأرقام ، يتم الوصول إلى نقطة في العودية عندما يزيد الحمل الإضافي والطرح من كفاءة استخدام خوارزمية O (ن ^ 2) الضرب المعتادة لتقييم المنتجات الجزئية. الطريقة الأكثر فعالية عموما تعتمد على مزيج من Karatsuba والضرب التقليدية.

ليست هناك تعليقات:

إرسال تعليق