ضرب توم-كوك
خوارزمية Toom-Cook ، والمعروفة أحيانًا باسم Toom-3 ، سميت على اسم Andrei Toom ، الذي قدم الخوارزمية الجديدة ذات التعقيد المنخفض، و Stephen Cook ، الذي قام بتنظيف وصفها، هي خوارزمية ضرب للأعداد الصحيحة الكبيرة.
بفرض وجود عددين صحيحين كبيرين، a و b ، تقوم خوارزمية توم-كوك بتقسيم a و b إلى k أجزاء أصغر، طول كل منها l ، ثم تُجري عمليات حسابية على هذه الأجزاء. مع ازدياد قيمة k ، يمكن دمج العديد من عمليات الضرب الفرعية، مما يقلل من التعقيد الحسابي الإجمالي للخوارزمية. بعد ذلك، يمكن حساب عمليات الضرب الفرعية بشكل متكرر باستخدام ضرب توم-كوك مرة أخرى، وهكذا. على الرغم من أن مصطلحي "توم-3" و"توم-كوك" يُستخدمان أحيانًا بشكل خاطئ كمرادفين، إلا أن "توم-3" هو مجرد حالة واحدة من خوارزمية توم-كوك، حيث k = 3.
يُقلل برنامج Toom-3 عمليات الضرب من تسع إلى خمس، ويعمل فيبشكل عام، توم-يركض في، أين،هو الوقت الذي يقضيه في عمليات الضرب الجزئي، وهو الوقت المستغرق في عمليات الجمع والضرب بثوابت صغيرة (كنوث، ص 296). خوارزمية كاراتسوبا مكافئة لخوارزمية توم-2، حيث يُقسّم العدد إلى عددين أصغر. تُقلّل هذه الخوارزمية أربع عمليات ضرب إلى ثلاث، وبالتالي تعمل عند.
على الرغم من أن الأسيمكن ضبطها بشكل تعسفي بالقرب من 1 عن طريق زيادةينمو الحد الثابت في الدالة بسرعة كبيرة. [ 1 ] [ 2 ] كان معدل نمو مخططات توم-كوك ذات المستويات المختلطة لا يزال مشكلة بحثية مفتوحة في عام 2005. [ 3 ] يحقق تطبيق وصفه دونالد كنوث التعقيد الزمني التالي[ 4 ]
بسبب تكلفتها الإضافية، فإن خوارزمية توم-كوك أبطأ من الضرب الطويل مع الأعداد الصغيرة، ولذلك تُستخدم عادةً لعمليات الضرب متوسطة الحجم، قبل خوارزمية شونهاج-ستراسن الأسرع تقاربياً (ذات التعقيد الزمني).يصبح ذلك عملياً.
وصف توم هذه الخوارزمية لأول مرة في عام 1963، ونشر كوك خوارزمية محسنة (مكافئة تقاربياً) في أطروحته للدكتوراه في عام 1966. [ 5 ]
تفاصيل
يناقش هذا القسم بالتفصيل كيفية إجراء عملية ضرب كثيرات الحدود Toom- k لأي قيمة معطاة لـ k ، وهو تبسيط لوصف عملية ضرب كثيرات الحدود Toom-Cook الذي وصفه ماركو بودراتو. [ 6 ] تتكون الخوارزمية من خمس خطوات رئيسية:
في نظام تمثيل الأعداد الصحيحة الكبيرة، يُمثَّل كل عدد صحيح بسلسلة من الأرقام في الترميز الموضعي ، حيث يُحدد الأساس أو الجذر بقيمة (كبيرة عادةً) b ؛ في هذا المثال، نستخدم b = 10000، بحيث يُقابل كل رقم مجموعة من أربعة أرقام عشرية (في نظام حاسوبي، يكون b عادةً قوة للعدد 2). لنفترض أن العددين الصحيحين المراد ضربهما هما:
م = 12 3456 7890 1234 5678 9012 ن = 9 8765 4321 9876 5432 1098.
هذه أصغر بكثير مما تتم معالجته عادةً باستخدام Toom-Cook (عملية الضرب في المدرسة الابتدائية ستكون أسرع) ولكنها ستخدم لتوضيح الخوارزمية.
الانقسام
في Toom- k ، نريد تقسيم العوامل إلى k أجزاء.
تتمثل الخطوة الأولى في اختيار الأساس B = b i ، بحيث يكون عدد أرقام كل من m و n في الأساس B على الأكثر k (مثلاً، 3 في العدد 3). ويُعطى اختيار نموذجي لـ i بالصيغة التالية:
في مثالنا ، سنقوم بحساب العدد 3، لذا نختار B = b² = 10⁸ . ثم نفصل m و n إلى أرقامهما الأساسية B : mᵢ و nᵢ .
ثم نستخدم هذه الأرقام كمعاملات في كثيرات الحدود من الدرجة ( k - 1) p و q ، مع الخاصية التي تكون فيها p ( B ) = m و q ( B ) = n :
إن الغرض من تعريف هذه كثيرات الحدود هو أنه إذا استطعنا حساب حاصل ضربها r ( x ) = p ( x ) q ( x ) ، فإن إجابتنا ستكون r ( B ) = m × n .
في حالة كون الأعداد المراد ضربها ذات أحجام مختلفة، من المفيد استخدام قيم مختلفة لـ k لكل من m و n ، والتي سنرمز لها بـ k<sub> m</sub> و k<sub> n</sub> . على سبيل المثال، تشير الخوارزمية "Toom-2.5" إلى خوارزمية Toom-Cook حيث k<sub> m</sub> = 3 و k <sub>n</sub> = 2. في هذه الحالة، يتم اختيار i في B = b <sub> i </sub> عادةً كما يلي:
تقييم
نهج توم-كوك لحساب حاصل ضرب كثير الحدودوهي من الأنواع الشائعة الاستخدام. لاحظ أن كثيرة الحدود من الدرجةيتم تحديده بشكل فريد بواسطةالنقاط (على سبيل المثال، خط مستقيم - يتم تحديد متعددة الحدود من الدرجة الأولى بنقطتين). الفكرة هي التقييموعند نقاط مختلفة. ثم اضرب قيمها عند هذه النقاط للحصول على نقاط على متعددة الحدود الناتجة. وأخيرًا، قم بالاستيفاء لإيجاد معاملاتها.
منذسنحتاجنقاط لتحديد النتيجة النهائية. لنسمي هذافي حالة توم-3،ستعمل الخوارزمية بغض النظر عن النقاط المختارة (مع بعض الاستثناءات الصغيرة، انظر شرط قابلية عكس المصفوفة في الاستيفاء )، ولكن من أجل تبسيط الخوارزمية، من الأفضل اختيار قيم عددية صغيرة مثل 0 و1 و-1 و-2.
إحدى القيم النقطية غير المألوفة التي تُستخدم بكثرة هي اللانهاية، وتُكتبأولتقييم متعدد الحدودفي الواقع، تعني كلمة "عند اللانهاية" أخذ نهايةمثليؤول إلى ما لا نهاية. وبالتالي،دائمًا ما تكون قيمة معاملها ذي الدرجة الأعلى (في المثال أعلاه المعامل).
في مثالنا Toom-3، سنستخدم النقاط،،،، وتُسهّل هذه الخيارات عملية التقييم، مما ينتج عنه الصيغ التالية:
وبالمثل بالنسبة لـفي مثالنا، القيم التي نحصل عليها هي:
كما هو موضح، قد تكون هذه القيم سالبة.
لغرض التوضيح لاحقاً، سيكون من المفيد النظر إلى عملية التقييم هذه على أنها عملية ضرب مصفوفة في متجه، حيث يحتوي كل صف من المصفوفة على قوى إحدى نقاط التقييم، ويحتوي المتجه على معاملات متعددة الحدود:
أبعاد المصفوفة هي d × k × m لـ p و d × k × n لـ q . صف اللانهاية يكون دائمًا أصفارًا باستثناء 1 في العمود الأخير.
تقييم أسرع
يمكن الحصول على التقييم متعدد النقاط بشكل أسرع من الصيغ المذكورة أعلاه. ويمكن تقليل عدد العمليات الأساسية (الجمع/الطرح). التسلسل الذي قدمه بودراتو [ 6 ] لـ Toom-3، والذي تم تنفيذه هنا على المعامل الأول (كثير الحدود p ) للمثال قيد التشغيل، هو التالي:
تتطلب هذه المتتالية خمس عمليات جمع/طرح، أي أقل بواحدة من التقييم المباشر. علاوة على ذلك، فإن الضرب فيفي حسابتم إنقاذه.
الضرب النقطي
بخلاف ضرب كثيرات الحدودو، بضرب القيم المقدرةوتتضمن هذه العملية ضرب الأعداد الصحيحة فقط ، وهي حالة مصغرة من المسألة الأصلية. نستدعي إجراء الضرب بشكل متكرر لضرب كل زوج من النقاط المحسوبة. في التطبيقات العملية، عندما تصبح المعاملات أصغر، ستتحول الخوارزمية إلى الضرب الطويل التقليدي . إذا كان r هو متعدد الحدود الناتج، ففي مثالنا لدينا:
كما هو موضح، يمكن أن تكون هذه القيم سالبة أيضًا. بالنسبة للأعداد الكبيرة بما يكفي، تُعد هذه الخطوة الأكثر تكلفة، وهي الخطوة الوحيدة التي لا تتناسب خطيًا مع أحجامو.
الاستيفاء
هذه هي الخطوة الأكثر تعقيدًا، وهي عكس خطوة التقييم: بالنظر إلىنقاط على متعددة الحدود المنتجة، نحتاج إلى تحديد معاملاتها. بعبارة أخرى، نريد حل معادلة المصفوفة هذه لإيجاد المتجه الموجود على الجانب الأيمن:
يتم إنشاء هذه المصفوفة بنفس طريقة إنشاء المصفوفة في خطوة التقييم، باستثناء أنهايمكننا حل هذه المعادلة باستخدام تقنية مثل طريقة الحذف الغاوسي ، لكنها مكلفة للغاية. بدلاً من ذلك، نستفيد من حقيقة أن هذه المصفوفة قابلة للعكس، شريطة اختيار نقاط التقييم بشكل مناسب (انظر أيضًا مصفوفة فاندرموند )، وبالتالي:
كل ما تبقى هو حساب حاصل ضرب المصفوفة في المتجه. على الرغم من أن المصفوفة تحتوي على كسور، فإن المعاملات الناتجة ستكون أعدادًا صحيحة ، لذا يمكن إجراء كل ذلك باستخدام العمليات الحسابية للأعداد الصحيحة، أي الجمع والطرح والضرب/القسمة على ثوابت صغيرة. يتمثل أحد تحديات التصميم الصعبة في Toom-Cook في إيجاد تسلسل فعال للعمليات لحساب هذا الناتج؛ أحد التسلسلات التي قدمها بودراتو [ 6 ] لـ Toom-3 هو التالي، والذي تم تنفيذه هنا على المثال قيد التشغيل:
نعرف الآن متعددة الحدود الخاصة بالمنتج:
لو كنا نستخدم مختلفًا، أو نقاط التقييم، ستتغير المصفوفة وبالتالي استراتيجية الاستيفاء لدينا؛ لكنها لا تعتمد على المدخلات وبالتالي يمكن ترميزها بشكل ثابت لأي مجموعة معينة من المعلمات.
إعادة التركيب
أخيرًا، نقوم بحساب قيمة r(B) للحصول على الإجابة النهائية. هذا أمرٌ بسيط لأن B هي قوة من قوى b، وبالتالي فإن عمليات الضرب في قوى B هي جميعها إزاحات بعدد صحيح من الأرقام في النظام العددي ذي الأساس b . في المثال المذكور، b = 10⁴ و B = b² = 10⁸ .
3084 8414 8617 5176 6740 4157 2123 7444 3422 4165 8197 1852 13 1284 3338 7466 + 121 9313 1840 121 9326 3124 6761 1632 4937 6009 5208 5858 8617 5176
وهذا في الواقع ناتج ضرب 1234567890123456789012 و 987654321987654321098.
الانقسام غير المتماثل
تعتمد خطوة الاستيفاء على درجة متعددة الحدود الناتجة، وهي مجموع درجات متعددات حدود العوامل، وليس على الدرجات الفردية. بينما يقسم برنامج Toom-3 الأساسي كل عامل إلى 3 أجزاء ( متعددات حدود تربيعية )، إذا اختلفت العوامل في الحجم، فقد يكون من المفيد تقسيم أحدها إلى جزأين ( متعددة حدود خطية ) والآخر إلى 4 أجزاء ( متعددة حدود تكعيبية ) بمعاملات ذات أحجام أكثر توازنًا. عندئذٍ، يمكن لخطوة الاستيفاء نفسها أن تُنتج متعددة حدود ناتجة من الدرجة الرابعة.
بالنسبة لـ Toom-3، هذا هو التقسيم البديل الوحيد المثير للاهتمام ( الحالة المنحطة المتمثلة في تقسيم أي من العاملين إلى جزء واحد فقط لا توفر أي توفير في الوقت)، ولكن Toom-Cook ذو الدرجة الأعلى يسمح بإمكانيات إضافية.
إضافةً إلى حالات التقسيم المتساوي، توجد حالات أنصاف أعداد صحيحة ، وهي حالات غير متناظرة دائمًا؛ حيث يكون العدد الإجمالي للأجزاء فرديًا، ودرجة متعددة الحدود الناتجة زوجية. على سبيل المثال، يقسم برنامج Toom-2.5 أحد العوامل إلى جزأين والآخر إلى ثلاثة أجزاء، بينما يستطيع برنامج Toom-3.5 تقسيم العوامل إلى 2+5 أو 3+4.
مصفوفات الاستيفاء لمختلف قيم k
نقدم هنا مصفوفات الاستيفاء الشائعة لبعض القيم الصغيرة الشائعة المختلفة لـ k m و k n .
توم-1
بتطبيق التعريف رسميًا، يمكننا اعتبار Toom-1 ( k<sub> m</sub> = k <sub>n</sub> = 1). لا ينتج عن هذا خوارزمية ضرب، بل خوارزمية تكرارية لا تتوقف أبدًا، إذ تُختزل كل حالة إدخال إلى استدعاء تكراري لنفس الحالة. تتطلب الخوارزمية نقطة تقييم واحدة، قيمتها غير مهمة، لأنها تُستخدم فقط لتقييم كثيرات الحدود الثابتة. بالتالي، فإن مصفوفة الاستيفاء هي مصفوفة الوحدة.
Toom-1.5
لا تزال خوارزمية Toom-1.5 ( حيث k <sub>m</sub> = 2 و k <sub>n</sub> = 1) خوارزميةً مُنحلة: فهي تُقلل أحد المدخلات بشكل متكرر عن طريق خفض حجمه إلى النصف، بينما تُبقي المدخل الآخر دون تغيير، وبالتالي لا يُمكننا تحويلها إلى خوارزمية ضرب إلا إذا وفرنا خوارزمية ضرب 1 × n كحالة أساسية (بينما تُختزل خوارزمية Toom-Cook الحقيقية إلى حالات أساسية ذات حجم ثابت). تتطلب هذه الخوارزمية نقطتي تقييم، تم اختيارهما هنا 0 و ∞. مصفوفة الاستيفاء الخاصة بها هي مصفوفة الوحدة.
تُعتبر الخوارزمية مكافئة بشكل أساسي لشكل من أشكال الضرب الطويل: حيث يتم ضرب كلا معاملي أحد العوامل في المعامل الوحيد للعامل الآخر.
توم-2
تتطلب عملية Toom-2 ( حيث k <sub>m</sub> = 2 و k<sub> n</sub> = 2) ثلاث نقاط تقييم، تم اختيارها هنا لتكون 0 و 1 و ∞. وهي مماثلة لعملية ضرب كاراتسوبا ، مع مصفوفة استيفاء كالتالي:
توم-2.5
تتطلب المعادلة Toom-2.5 ( حيث k<sub> m</sub> = 3 و k<sub> n</sub> = 2) أربع نقاط تقييم، تم اختيارها هنا لتكون 0 و 1 و -1 و ∞. وبالتالي، فإن مصفوفة الاستيفاء الخاصة بها هي:
ملحوظات
- ↑ كنوت، ص 296
- ↑ كراندال وبوميرانس، ص 474
- ↑ كراندال وبوميرانس، ص 536
- ↑ كنوت، ص 302
- ↑ النتائج الإيجابية ، الفصل الثالث من كتاب ستيفن أ. كوك: حول الحد الأدنى لوقت حساب الدوال .
- 1 2 3 ماركو بودراتو. نحو الضرب الأمثل لتوم-كوك لكثيرات الحدود أحادية ومتعددة المتغيرات في الخاصيتين 2 و0. في وقائع مؤتمر WAIFI'07 ، المجلد 4547 من سلسلة محاضرات علوم الحاسوب، الصفحات 116-133. 21-22 يونيو 2007. موقع المؤلف الإلكتروني
مراجع
- د. كنوت. فن برمجة الحاسوب ، المجلد 2. الطبعة الثالثة، أديسون-ويسلي، 1997. القسم 4.3.3.أ: الأساليب الرقمية، صفحة 294.
- R. Crandall & C. Pomerance. الأعداد الأولية - منظور حسابي . الطبعة الثانية، سبرينغر، 2005. القسم 9.5.1: طرق كاراتسوبا وتوم-كوك، صفحة 473.
- بودراتو، ماركو (2007). "نحو ضرب توم-كوك الأمثل لكثيرات الحدود أحادية ومتعددة المتغيرات في الخاصية 2 و0" . في: كارليت، كلود؛ سونار، بيرك (محرران). حساب الحقول المنتهية، ورشة العمل الدولية الأولى، WAIFI 2007، مدريد، إسبانيا، 21-22 يونيو 2007، وقائع المؤتمر . سلسلة محاضرات في علوم الحاسوب. المجلد 4547. سبرينغر. الصفحات 116-133 . doi : 10.1007/978-3-540-73074-3_10 . ISBN 978-3-540-73073-6.
- بودراتو، ماركو (8 أغسطس 2011). "الضرب الأمثل لكثيرات الحدود بتقنية توم-كوك / الالتفاف بتقنية توم-كوك، تطبيق لكثيرات الحدود" . تم الاطلاع عليه بتاريخ 22 سبتمبر 2023 .
روابط خارجية
- عملية الضرب الثلاثي باستخدام خوارزمية توم-كوك، من وثائق مكتبة GMP: "عملية الضرب الثلاثي باستخدام خوارزمية توم" . دليل مكتبة GNU MP للحساب متعدد الدقة (الإصدار 6.3.0) . مؤسسة البرمجيات الحرة، 30 يوليو 2023 [حقوق النشر 1991، 1993-2016، 2018-2020].
- خوارزميات الحساب الحاسوبي
- الضرب
