خوارزمية الضرب
خوارزمية الضرب هي خوارزمية (أو طريقة) لضرب عددين . وتختلف كفاءة الخوارزميات باختلاف حجم العددين. توجد العديد من الخوارزميات المعروفة، وقد أُجريت أبحاث كثيرة في هذا المجال.
أقدم وأبسط طريقة، والمعروفة منذ القدم باسم الضرب المطول أو الضرب المدرسي ، هي ضرب كل رقم في العدد الأول بكل رقم في العدد الثاني وجمع النتائج. ويبلغ تعقيدها الزمني 10 ...حيث n هو عدد الأرقام. عند إجراء هذه العملية يدويًا، يمكن إعادة صياغتها كضرب بطريقة الشبكة أو ضرب الشبكة . في البرمجيات، قد يُطلق عليها اسم "الإزاحة والجمع" نظرًا لأن إزاحة البتات والجمع هما العمليتان الوحيدتان المطلوبتان.
في عام 1960، اكتشف أناتولي كاراتسوبا طريقة كاراتسوبا للضرب ، مما أدى إلى طفرة في الأبحاث المتعلقة بخوارزميات الضرب السريع. تستخدم هذه الطريقة ثلاث عمليات ضرب بدلاً من أربع لضرب عددين مكونين من رقمين. (يمكن استخدام صيغة معدلة منها لضرب الأعداد المركبة بسرعة). عند تطبيقها بشكل تكراري ، يكون تعقيدها الزمني 10 ...يؤدي تقسيم الأعداد إلى أكثر من جزأين إلى عملية ضرب توم-كوك ؛ فعلى سبيل المثال، استخدام ثلاثة أجزاء ينتج عنه خوارزمية توم-3 . يمكن استخدام أجزاء كثيرة لتقريب الأس إلى 1 بشكل كبير، ولكن العامل الثابت يزداد أيضًا، مما يجعل ذلك غير عملي.
في عام 1968، تم اكتشاف خوارزمية شونهاج-ستراسن ، التي تستخدم تحويل فورييه على قيمة مطلقة . ويبلغ تعقيدها الزمني 10 ...في عام 2007، اقترح مارتن فورر خوارزمية ذات تعقيد. في عام 2014، اقترح هارفي، ويوريس فان دير هوفن ، وليسيرف فكرة معقدةوبذلك أصبح الثابت الضمني صريحًا؛ وقد تم تحسين ذلك إلىفي عام 2018. وأخيرًا، في عام 2019، ابتكر هارفي وفان دير هوفن خوارزمية مجرية ذات تعقيدوهذا يتوافق مع تخمين شونهاج وستراسن بأن هذا سيكون الحد الأمثل، على الرغم من أن هذا لا يزال مجرد تخمين حتى اليوم.
يمكن أيضًا استخدام خوارزميات ضرب الأعداد الصحيحة لضرب كثيرات الحدود عن طريق طريقة استبدال كرونكر .
الضرب المطول
إذا تم استخدام نظام الترقيم الموضعي ، فإن طريقة طبيعية لضرب الأعداد تُدرَّس في المدارس باسم الضرب المطوّل ، والذي يُسمى أحيانًا ضرب المرحلة الابتدائية ، أو الخوارزمية القياسية : يتم ضرب العدد المضروب في كل رقم من أرقام العدد المضروب فيه ، ثم تُجمع جميع النتائج بعد إزاحتها بشكل صحيح. ويتطلب ذلك حفظ جدول الضرب للأرقام المفردة.
هذه هي الخوارزمية المعتادة لضرب الأعداد الكبيرة يدويًا في النظام العشري. الشخص الذي يقوم بعملية الضرب المطولة على الورق سيكتب جميع النواتج ثم يجمعها معًا؛ أما مستخدم المعداد فسيقوم بجمع النواتج بمجرد حساب كل منها.
مثال
يستخدم هذا المثال الضرب الطويل لضرب 23,958,233 (المضروب) في 5,830 (المضروب فيه) ويصل إلى 139,676,498,390 كنتيجة (ناتج).
23958233 × 5830 ——————————————— 00000000 ( = 23,958,233 × 0) 71874699 ( = 23,958,233 × 30) 191665864 ( = 23,958,233 × 800) + 119791165 ( = 23,958,233 × 5,000) ——————————————— 139676498390 ( = 139,676,498,390)
ملاحظات أخرى
في بعض البلدان مثل ألمانيا ، يتم تصوير عملية الضرب المذكورة أعلاه بشكل مشابه ولكن مع الحفاظ على الناتج الأصلي أفقيًا وبدء الحساب من الرقم الأول للمضاعف: [ 1 ]
23958233 · 5830 ——————————————— 119791165 191665864 71874699 00000000 ——————————————— 139676498390
يصف الكود الزائف أدناه عملية الضرب المذكورة أعلاه. يحتفظ الكود بصف واحد فقط لحساب المجموع الذي يُمثل النتيجة النهائية. تجدر الإشارة إلى أن عامل الجمع '+=' يُستخدم للدلالة على الجمع مع قيمة موجودة، ولعملية التخزين (كما هو الحال في لغات مثل جافا وسي) لضمان الإيجاز.
اضرب ( أ [ 1..ص ] ، ب [ 1..ق ] ، الأساس ) // المعاملات التي تحتوي على الأرقام الموجودة في أقصى اليمين عند الفهرس 1product = [ 1 .. p + q ] // تخصيص مساحة للنتيجةfor b_i = 1 to q // for all digits in bالحمل = 0for a_i = 1 to p // for all digits in aproduct [ a_i + b_i - 1 ] += carry + a [ a_i ] * b [ b_i ]الحمل = حاصل ضرب [ أ_i + ب_i - 1 ] / الأساسحاصل ضرب [ a_i + b_i - 1 ] = حاصل ضرب [ a_i + b_i - 1 ] mod القاعدةحاصل ضرب [ b_i + p ] = حمل // الرقم الأخير يأتي من الحمل النهائيإرجاع المنتجالاستخدام في أجهزة الكمبيوتر
تُنفّذ بعض الرقاقات عملية الضرب الطويل، إما في مكوناتها المادية أو في شفرتها البرمجية ، لأحجام كلمات مختلفة للأعداد الصحيحة والأعداد العشرية. في العمليات الحسابية ذات الدقة العشوائية ، يشيع استخدام الضرب الطويل مع ضبط الأساس على 2^ w ، حيث w هو عدد البتات في الكلمة، لضرب أعداد صغيرة نسبيًا. لضرب عددين مكونين من n خانة باستخدام هذه الطريقة، نحتاج إلى حوالي n^ 2 عملية. وبشكل أدق، يتطلب ضرب عددين مكونين من n خانة باستخدام الضرب الطويل Θ ( n^ 2 ) عملية أحادية الخانة (جمع وضرب).
عند تطبيق خوارزميات الضرب الطويلة في البرمجيات، يجب التعامل مع تجاوز السعة أثناء عمليات الجمع، وهو ما قد يكون مكلفًا. يتمثل الحل النموذجي في تمثيل العدد بأساس صغير، b ، بحيث يكون، على سبيل المثال، 8b عددًا صحيحًا قابلًا للتمثيل آليًا. يمكن بعد ذلك إجراء عدة عمليات جمع قبل حدوث تجاوز السعة. عندما يصبح العدد كبيرًا جدًا، نضيف جزءًا منه إلى النتيجة، أو نحمل الجزء المتبقي ونعيده إلى عدد أقل من b . تُسمى هذه العملية بالتطبيع . استخدم ريتشارد برنت هذا النهج في حزمة فورتران الخاصة به، MP. [ 2 ]
استخدمت الحواسيب في البداية خوارزمية مشابهة جدًا للضرب المطول في النظام الثنائي، لكن المعالجات الحديثة طورت دوائر إلكترونية مُحسّنة لإجراء عمليات ضرب سريعة باستخدام خوارزميات أكثر كفاءة، على حساب تعقيد تصميم الأجهزة. في النظام الثنائي، يُطلق على الضرب المطول أحيانًا اسم "الإزاحة والجمع" ، لأن الخوارزمية تُبسط العملية وتقتصر على الإزاحة إلى اليسار (الضرب في قوى العدد اثنين) ثم الجمع. تُنفذ معظم المعالجات الدقيقة المتوفرة حاليًا هذه الخوارزمية أو خوارزميات مشابهة (مثل ترميز بوث ) لأحجام مختلفة من الأعداد الصحيحة والأعداد العشرية، إما في مضاعفات الأجهزة أو في الشفرة الدقيقة .
في المعالجات المتوفرة حاليًا، عادةً ما تكون تعليمة الإزاحة الثنائية أسرع (ولكن ليس دائمًا) من تعليمة الضرب، ويمكن استخدامها للضرب (الإزاحة إلى اليسار) والقسمة (الإزاحة إلى اليمين) على قوى العدد اثنين. يمكن تنفيذ الضرب والقسمة على عدد ثابت باستخدام سلسلة من عمليات الإزاحة والجمع أو الطرح. على سبيل المثال، هناك عدة طرق للضرب في 10 باستخدام الإزاحة الثنائية والجمع فقط.
(( x << 2 ) + x ) << 1 # هنا يتم حساب 10*x على النحو التالي: (x*2^2 + x)*2 ( x << 3 ) + ( x << 1 ) # هنا يتم حساب 10*x على النحو التالي: x*2^3 + x*2في بعض الحالات، تتفوق هذه التسلسلات من عمليات الإزاحة والجمع أو الطرح على مضاعفات الأجهزة، وخاصةً وحدات القسمة. القسمة على عدد من الشكلأوغالباً ما يمكن تحويلها إلى تسلسل قصير كهذا.
خوارزميات الضرب اليدوي
إلى جانب عملية الضرب المطوّلة التقليدية، توجد عدة طرق أخرى تُستخدم لإجراء عملية الضرب يدويًا. وقد تُصمّم هذه الخوارزميات لتحقيق السرعة، أو سهولة الحساب، أو لأغراض تعليمية، خاصةً عندما لا تتوفر أجهزة الكمبيوتر أو جداول الضرب .
طريقة الشبكة
طريقة الشبكة ( أو طريقة المربعات) هي طريقة تمهيدية لضرب الأعداد متعددة الأرقام ، وغالبًا ما تُدرَّس للتلاميذ في المرحلة الابتدائية . وقد أصبحت جزءًا أساسيًا من منهج الرياضيات الوطني للمرحلة الابتدائية في إنجلترا وويلز منذ أواخر التسعينيات. [ 3 ]
يتم تقسيم كلا العاملين ("تقسيمهما") إلى أجزاء المئات والعشرات والآحاد، ثم يتم حساب نواتج الأجزاء بشكل صريح في مرحلة ضرب بسيطة نسبياً، قبل أن يتم جمع هذه المساهمات لإعطاء الإجابة النهائية في مرحلة جمع منفصلة.
على سبيل المثال، يمكن حساب العملية الحسابية 34 × 13 باستخدام الشبكة:
300 40 90 + 12 ———— 442
| × | 30 | 4 |
|---|---|---|
| 10 | 300 | 40 |
| 3 | 90 | 12 |
ثم يتم الجمع للحصول على 442، إما في مجموع واحد (انظر إلى اليمين)، أو من خلال تكوين المجاميع صفًا تلو الآخر
- (300 + 40) + (90 + 12) = 340 + 102 = 442.
يُعرف أسلوب الحساب هذا (وإن لم يكن بالضرورة مع ترتيب الشبكة الصريح) أيضاً باسم خوارزمية المنتجات الجزئية . ويتمثل جوهره في حساب عمليات الضرب البسيطة بشكل منفصل، مع ترك جميع عمليات الجمع لمرحلة التجميع النهائية.
يمكن من حيث المبدأ تطبيق طريقة الشبكة على عوامل أي حجم، على الرغم من أن عدد نواتج الضرب الفرعية يصبح معقدًا مع ازدياد عدد الأرقام. ومع ذلك، تُعتبر هذه الطريقة مفيدة وواضحة لتقديم فكرة ضرب الأعداد متعددة الأرقام؛ وفي عصر تُجرى فيه معظم عمليات الضرب باستخدام الآلة الحاسبة أو جداول البيانات ، قد تكون هذه الطريقة عمليًا هي خوارزمية الضرب الوحيدة التي سيحتاجها بعض الطلاب.
ضرب الشبكة


تُعدّ عملية الضرب الشبكي، أو الغربالي، مكافئةً خوارزميًا لعملية الضرب المطوّل. تتطلب هذه العملية إعداد شبكة (مخطط مرسوم على الورق) تُوجّه الحساب وتفصل عمليات الضرب عن عمليات الجمع . وقد عُرفت هذه الطريقة في أوروبا عام ١٢٠٢ في كتاب فيبوناتشي " ليبر أباتشي" . وصف فيبوناتشي العملية بأنها ذهنية، حيث استخدم يديه اليمنى واليسرى لإجراء العمليات الحسابية الوسيطة. قدّم ماتراكجي ناسوح ستة أشكال مختلفة لهذه الطريقة في كتابه "عمدة الحساب" الذي يعود إلى القرن السادس عشر. وقد شاع استخدامها في مدارس إندرون في جميع أنحاء الإمبراطورية العثمانية. [ ٤ ] كما استخدمت عظام نابيير ، أو قضبان نابيير، هذه الطريقة أيضًا، كما نشرها نابيير عام ١٦١٧، وهو عام وفاته.
كما هو موضح في المثال، يُكتب المضروب والمضروب أعلى ويمين الشبكة أو المنخل. وقد ورد ذلك في كتاب "الحساب" لمحمد بن موسى الخوارزمي ، وهو أحد مصادر ليوناردو التي ذكرها سيجلر، مؤلف كتاب "كتاب فيبوناتشي"، 2002.
- أثناء مرحلة الضرب، يتم ملء الشبكة بمنتجات مكونة من رقمين للأرقام المقابلة التي تحدد كل صف وعمود: رقم العشرات يوضع في الزاوية العلوية اليسرى.
- خلال مرحلة الجمع، يتم جمع الشبكة على الأقطار.
- وأخيرًا، إذا كانت مرحلة الحمل ضرورية، يتم تحويل الإجابة كما هو موضح على طول الجانبين الأيسر والسفلي من الشبكة إلى الشكل الطبيعي عن طريق حمل أرقام العشرات كما هو الحال في الجمع الطويل أو الضرب.
مثال
تُظهر الصور على اليمين كيفية حساب 345 × 12 باستخدام الضرب الشبكي. كمثال أكثر تعقيدًا، انظر إلى الصورة أدناه التي توضح عملية ضرب 23,958,233 في 5,830 (المُضاعَف)؛ والنتيجة هي 139,676,498,390. لاحظ أن 23,958,233 يقع على طول الجزء العلوي من الشبكة، و5,830 يقع على طول الجانب الأيمن. تملأ نواتج الضرب الشبكة، ومجموع هذه النواتج (على القطر) يقع على طول الجانبين الأيسر والسفلي. ثم يتم جمع هذه المجاميع كما هو موضح.
2 3 9 5 8 2 3 3 +---+---+---+---+---+---+---+---+- |1 /|1 /|4 /|2 /|4 /|1 /|1 /|1 /| | / | / | / | / | / | / | / | / | 5 01|/ 0|/ 5|/ 5|/ 5|/ 0|/ 0|/ 5|/ 5| +---+---+---+---+---+---+---+---+- |1 /|2 /|7 /|4 /|6 /|1 /|2 /|2 /| | / | / | / | / | / | / | / | / | 8 02|/ 6|/ 4|/ 2|/ 0|/ 4|/ 6|/ 4|/ 4| +---+---+---+---+---+---+---+---+- |0 /|0 /|2 /|1 /|2 /|0 /|0 /|0 /| | / | / | / | / | / | / | / | / | 3 17|/ 6|/ 9|/ 7|/ 5|/ 4|/ 6|/ 9|/ 9| +---+---+---+---+---+---+---+---+- |0 /|0 /|0 /|0 /|0 /|0 /|0 /|0 /| | / | / | / | / | / | / | / | / | 0 24|/ 0|/ 0|/ 0|/ 0|/ 0|/ 0|/ 0| +---+---+---+---+---+---+---+---+- 26 15 13 18 17 13 09 00 | 01 002 0017 ٠٠٠٢٤ 000026 0000015 00000013 000000018 0000000017 00000000013 000000000009 0000000000000 ————————————— 139676498390 |
= 139,676,498,390 |
تكاثر الفلاحين الروس
تُعرف الطريقة الثنائية أيضًا باسم ضرب الفلاحين، نظرًا لاستخدامها الواسع بين عامة الناس الذين لم يحفظوا جداول الضرب اللازمة للضرب المطوّل. [ 5 ] وقد استُخدمت هذه الخوارزمية في مصر القديمة. [ 6 ] من أهم مزاياها سهولة تعلمها، وعدم حاجتها للحفظ، وإمكانية تطبيقها باستخدام رموز، مثل رقائق البوكر ، في حال عدم توفر الورق والقلم. أما عيبها، فهو أنها تتطلب خطوات أكثر من الضرب المطوّل، مما يجعلها غير عملية للأعداد الكبيرة.
وصف
يحتوي أحد الأعمدة على الأرقام الناتجة عن تقسيم المضاعف إلى النصف بشكل متكرر مع تجاهل الباقي. ويحتوي عمود آخر مجاور له على نتائج مضاعفة المضاعف بشكل متكرر. يتم حساب الناتج بشطب كل صف ينتهي فيه الرقم الأول برقم زوجي، ثم جمع الأرقام المتبقية في العمود الثاني للحصول على الناتج.
أمثلة
يستخدم هذا المثال عملية الضرب البسيطة لضرب 11 في 3 للوصول إلى نتيجة 33.
عشري: ثنائي: 11 3 1011 11 5 6 101 110 2121011001 24 1 11000 —— —————— 33 100001
وصف الخطوات بشكل صريح:
- الرقمان 11 و 3 مكتوبان في الأعلى
- يُقسم العدد 11 على اثنين (5.5) ويُضاعف العدد 3 (6). يُهمل الجزء الكسري (يصبح 5.5 هو 5).
- يُقسم العدد ٥ على اثنين (٢٫٥) ويُضاعف العدد ٦ (١٢). يُهمل الجزء الكسري (٢٫٥ يصبح ٢). الرقم في العمود الأيسر (٢) زوجي ، لذا يُهمل الرقم في العمود الأيمن (١٢).
- يتم تقسيم العدد 2 إلى النصف (1) ويتم مضاعفة العدد 12 (24).
- يتم جمع جميع القيم التي لم يتم شطبها: 3 + 6 + 24 = 33.
تنجح هذه الطريقة لأن عملية الضرب عملية توزيعية ، لذا:
مثال أكثر تعقيدًا، باستخدام الأرقام من الأمثلة السابقة (23,958,233 و 5,830):
عشري: ثنائي: 583023958233101101100011010110110110010010110110012915 47916466 101101100011 10110110110010010110110010 1457 95832932 10110110001 101101101100100101101100100 72819166586410110110001011011011001001011011001000364383331728101101100101101101100100101101100100001827666634561011011010110110110010010110110010000091 1533326912 1011011 1011011011001001011011001000000 45 3066653824 101101 10110110110010010110110010000000 2261333076481011010110110110010010110110010000000011 12266615296 1011 1011011011001001011011001000000000 5 24533230592 101 10110110110010010110110010000000000 249066461184101011011011001001011011001000000000001 98132922368 1 1011011011001001011011001000000000000 ———————————— 1022143253354344244353353243222210110 (قبل الحمل) 139676498390 10000010000101010111100011100111010110
الضرب في ربع مربع
يمكن استخدام هذه الصيغة في بعض الحالات لتسهيل إكمال عمليات الضرب:
في الحالة التيوبما أن هي أعداد صحيحة، فإن
لأنوإما أن يكون كلاهما زوجيًا أو كلاهما فرديًا. هذا يعني أن
ويكفي (مسبقًا) حساب الجزء الصحيح من المربعات المقسومة على 4 كما في المثال التالي.
أمثلة
فيما يلي جدول بحث عن المربعات الربعية مع تجاهل الباقي للأرقام من 0 إلى 18؛ وهذا يسمح بضرب الأرقام حتى 9×9 .
| ن | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| ⌊ n 2 /4⌋ | 0 | 0 | 1 | 2 | 4 | 6 | 9 | 12 | 16 | 20 | 25 | 30 | 36 | 42 | 49 | 56 | 64 | 72 | 81 |
على سبيل المثال، عند ضرب 9 في 3، فإن مجموع وفرق هذين العددين ينتج عنه 12 و6 على التوالي. وبالرجوع إلى جدول الضرب، نجد أن هاتين القيمتين هما 36 و9، وفرقهما هو 27، وهو حاصل ضرب 9 في 3.
تاريخ الضرب بربع المربع
في عصور ما قبل التاريخ، كان الضرب بربع مربع يتضمن دالة الجزء الصحيح ؛ والتي تنسبها بعض المصادر [ 7 ] [ 8 ] إلى الرياضيات البابلية (2000-1600 قبل الميلاد).
نشر أنطوان فوازان جدولًا لأرباع المربعات من 1 إلى 1000 في عام 1817 كوسيلة مساعدة في الضرب. ونشر صموئيل لوندي جدولًا أكبر لأرباع المربعات من 1 إلى 100000 في عام 1856، [ 9 ] ونشر جوزيف بلاتر جدولًا من 1 إلى 200000 في عام 1888. [ 10 ]
استُخدمت مضاعفات ربع المربع في الحواسيب التناظرية لتكوين إشارة تناظرية ناتجة عن ضرب إشارتين تناظريتين. في هذا التطبيق، يُحسب مجموع وفرق جهدَي دخل باستخدام مكبرات العمليات . ويُقارب مربع كل منهما باستخدام دوائر خطية مجزأة . وأخيرًا، يُحسب فرق المربعين ويُضاعف بمعامل ربع باستخدام مكبر عمليات آخر.
في عام 1980، اقترح إيفريت ل. جونسون استخدام طريقة الربع المربع في مضاعف رقمي . [ 11 ] لتكوين حاصل ضرب عددين صحيحين من 8 بت، على سبيل المثال، يقوم الجهاز الرقمي بتكوين المجموع والفرق، ويبحث عن كلتا الكميتين في جدول المربعات، ويأخذ الفرق بين النتائج، ويقسم على أربعة عن طريق إزاحة بتتين إلى اليمين. بالنسبة للأعداد الصحيحة ذات 8 بت، سيحتوي جدول المربعات الربعية على 2 9 − 1=511 مدخلاً (مدخل واحد للنطاق الكامل 0..510 من المجاميع الممكنة، والفروق باستخدام أول 256 مدخلاً فقط في النطاق 0..255) أو 2 9 − 1=511 مدخلاً (باستخدام تقنية المكملات الثنائية وقناع 9 بت للفروق السالبة، مما يتجنب اختبار إشارة الفروق)، كل مدخل بعرض 16 بت (قيم المدخل من (0²/4)=0 إلى (510²/4)=65025).
لقد أفادت تقنية المضاعف الربع مربع أنظمة 8 بت التي لا تدعم أي مضاعف مادي. وقد قام تشارلز بوتني بتطبيق هذه التقنية على جهاز 6502. [ 12 ]
التعقيد الحسابي لعملية الضرب
يتناول أحد فروع البحث في علوم الحاسوب النظرية عدد عمليات الحساب أحادية البت اللازمة لضرب عددين.الأعداد الصحيحة ذات n بت. يُعرف هذا بالتعقيد الحسابي لعملية الضرب. الخوارزميات المعتادة التي تُنفذ يدويًا لها تعقيد تقاربي يبلغلكن في عام 1960 اكتشف أناتولي كاراتسوبا أن التعقيد الأفضل ممكن (باستخدام خوارزمية كاراتسوبا ). [ 13 ]
حالياً، الخوارزمية ذات أفضل تعقيد حسابي هي خوارزمية ديفيد هارفي وجوريس فان دير هوفن لعام 2019 ، والتي تستخدم استراتيجيات استخدام التحويلات النظرية للأعداد التي تم تقديمها مع خوارزمية شونهاج-ستراسن لضرب الأعداد الصحيحة باستخدام فقطالعمليات. [ 14 ] يُعتقد أن هذه هي أفضل خوارزمية ممكنة، ولكن الحدود الدنيا لـغير معروفة.
ضرب كاراتسوبا
عملية الضرب في كاراتسوبا هي خوارزمية فرق تسد من النوع O( n log 2 3 ) ≈ O( n 1.585 )، والتي تستخدم التكرار لدمج العمليات الحسابية الفرعية.
بإعادة كتابة الصيغة، يصبح من الممكن إجراء حسابات فرعية/استدعاء ذاتي. وباستخدام الاستدعاء الذاتي، يمكن حل هذه المسألة بسرعة.
يتركويتم تمثيله على النحو التالي:سلاسل مكونة من - أرقام في نظام أساسي مالأي عدد صحيح موجبأقل منيمكن كتابة الرقمين المعطاينين على النحو التالي:
أينوأقل منثم يصبح المنتج
أين
تتطلب هذه الصيغ أربع عمليات ضرب، وكانت معروفة لتشارلز باباج . [ 15 ] لاحظ كاراتسوبا أنيمكن حسابها بثلاث عمليات ضرب فقط، مع إضافة بضع عمليات جمع إضافية.وكما في السابق، يمكن للمرء أن يلاحظ ذلك
بسبب تكلفة الاستدعاء الذاتي، فإن عملية الضرب في كاراتسوبا أبطأ من عملية الضرب الطويلة للقيم الصغيرة لـ n ؛ لذلك تتحول التطبيقات النموذجية إلى عملية الضرب الطويلة للقيم الصغيرة لـ n .
الحالة العامة مع ضرب الأعداد N
من خلال استكشاف الأنماط بعد التوسع، يمكن ملاحظة ما يلي:
يرتبط كل حد من حدود المجموع برقم ثنائي فريد من 0 إلى ، على سبيل المثالإلخ. علاوة على ذلك؛ يتم رفع قيمة B إلى الرقم 1، في هذه السلسلة الثنائية، مضروبة في m.
إذا عبرنا عن هذا بعبارات أقل، فسنحصل على:
، أينيعني الرقم في العدد i في الموضع j. لاحظ أن
تاريخ
كانت خوارزمية كاراتسوبا أول خوارزمية معروفة للضرب أسرع بشكل مقارب من الضرب الطويل، [ 16 ] وبالتالي يمكن اعتبارها نقطة البداية لنظرية الضرب السريع.
توم-كوك
تُعرف طريقة أخرى للضرب باسم "توم-كوك" أو "توم-3". تقوم هذه الطريقة بتقسيم كل عدد مُراد ضربه إلى عدة أجزاء. وتُعدّ "توم-كوك" إحدى تعميمات طريقة "كاراتسوبا". يُمكن لـ"توم-كوك" الثلاثية إجراء عملية ضرب بحجم 3N بتكلفة خمس عمليات ضرب بحجم N. يُسرّع هذا العملية بمقدار 9/5، بينما تُسرّعها طريقة "كاراتسوبا" بمقدار 4/3.
على الرغم من أن استخدام المزيد من الأجزاء قد يقلل الوقت المستغرق في عمليات الضرب المتكررة، إلا أن العبء الإضافي الناتج عن عمليات الجمع وإدارة الأرقام يزداد أيضًا. لهذا السبب، تُعدّ طريقة تحويل فورييه أسرع عادةً للأعداد التي تتكون من عدة آلاف من الأرقام، وتزداد سرعتها تدريجيًا مع ازدياد حجم الأعداد.
شارع شونهاج

يمكن كتابة كل عدد في النظام العددي (الأساس B) على شكل متعدد الحدود:
علاوة على ذلك، يمكن اعتبار عملية ضرب عددين بمثابة حاصل ضرب كثيرتي حدود:
بما أن معامل المنتج أحدهما يحتوي على عملية التفاف، والآخر يمكنه استخدام تحويل فورييه السريع (FFT):
وبالتالي، يتم اختزال عملية الضرب إلى تحويل فورييه السريع (FFT) .عمليات الضرب، وعكس تحويل فورييه السريع. ينتج عن ذلك تعقيد زمني قدره O ( n log( n ) log(log n )) .
تاريخ
ابتكر ستراسن الخوارزمية (1968). وقد تم جعلها عملية وتقديم ضمانات نظرية في عام 1971 من قبل شونهاج وستراسن مما أدى إلى ظهور خوارزمية شونهاج-ستراسن . [ 17 ]
مزيد من التحسينات
في عام 2007، قام عالم الرياضيات السويسري مارتن فورر من جامعة ولاية بنسلفانيا بتحسين التعقيد التقاربي لعملية ضرب الأعداد الصحيحة إلىباستخدام تحويلات فورييه على الأعداد المركبة ، [ 18 ] حيث يرمز log * إلى اللوغاريتم المتكرر . قدّم أنينديا دي، وتشاندان ساها، وبيوش كورور، ورامبراساد سابثارشي خوارزمية مشابهة باستخدام الحساب النمطي في عام 2008، محققين نفس زمن التشغيل. [ 19 ] في سياق ما سبق، ما حققه هؤلاء المؤلفون هو إيجاد N أقل بكثير من 2 ^ (3k + 1)، بحيث يكون لـ Z / NZ جذر من الرتبة (2^ m ) للوحدة. هذا يُسرّع الحساب ويقلل من التعقيد الزمني. مع ذلك، فإن هذه الخوارزميات الأخيرة أسرع من خوارزمية شونهاج-ستراسن فقط للمدخلات الكبيرة جدًا وغير العملية.
في عام 2014، قدم هارفي وجوريس فان دير هوفن وليسيرف [ 20 ] خوارزمية جديدة تحقق زمن تشغيل قدره، مما يوضح الثابت الضمني فيكما اقترحوا نسخة معدلة من خوارزميتهم تحققلكن صحتها تعتمد على تخمينات قياسية حول توزيع أعداد ميرسين الأولية . في عام 2016، اقترح كوفانوف وتومي خوارزمية لضرب الأعداد الصحيحة تعتمد على تعميم لأعداد فيرما الأولية ، والتي تحقق، على ما يبدو، حدًا أقصى للتعقيد قدرهيتطابق هذا مع النتيجة الشرطية التي توصل إليها هارفي وفان دير هوفن وليسيرف عام 2015، ولكنه يستخدم خوارزمية مختلفة ويعتمد على تخمين مختلف. [ 21 ] في عام 2018، استخدم هارفي وفان دير هوفن نهجًا قائمًا على وجود متجهات شبكية قصيرة مضمونة بنظرية مينكوفسكي لإثبات حد تعقيد غير مشروط قدره[ 22 ]
في مارس 2019، أعلن ديفيد هارفي وجوريس فان دير هوفن عن اكتشافهما لخوارزمية ضرب من رتبة O ( n log n ) . [ 23 ] نُشرت هذه الخوارزمية في مجلة حوليات الرياضيات عام 2021. [ 14 ] ولأن شونهاج وستراسن توقعا أن n log( n ) هي "أفضل نتيجة ممكنة"، قال هارفي: "... من المتوقع أن يكون عملنا بمثابة نهاية المطاف لحل هذه المشكلة، على الرغم من أننا لا نعرف حتى الآن كيفية إثبات ذلك بدقة." [ 24 ] ومع ذلك، فإن الخوارزمية الجديدة غير عملية إلى حد كبير: فهي أسرع من خوارزمية شونهاج-ستراسن فقط إذا تجاوز عدد الأرقام n log n. [ 14 ]
الحدود الدنيا
يوجد حد أدنى بسيط لـ Ω ( n ) لضرب عددين من n بت على معالج واحد؛ ولا توجد خوارزمية مطابقة معروفة (على الأجهزة التقليدية، أي على أجهزة تورينج المكافئة) ولا أي حد أدنى أدق. وتفترض فرضية هارتمانيس-ستيرنز أنلا يمكن تحقيق ذلك. تقع عملية الضرب خارج نطاق AC 0 [ p ] لأي عدد أولي p ، مما يعني عدم وجود مجموعة من الدوائر ذات العمق الثابت، والحجم متعدد الحدود (أو حتى شبه الأسي) باستخدام بوابات AND وOR وNOT وMOD p التي يمكنها حساب ناتج الضرب. وينتج هذا عن اختزال MOD q إلى عملية ضرب ذات عمق ثابت . [ 25 ] كما تُعرف حدود دنيا لعملية الضرب لبعض فئات برامج التفرع . [ 26 ]
ضرب الأعداد المركبة
تتضمن عملية الضرب المعقدة عادةً أربع عمليات ضرب وعمليتي جمع.
أو
كما لاحظ بيتر أونجار في عام 1963، يمكن تقليل عدد عمليات الضرب إلى ثلاث، باستخدام نفس الحساب تقريبًا لخوارزمية كاراتسوبا . [ 27 ] يمكن حساب حاصل الضرب ( أ + ب1 ) × ( ج + د1 ) بالطريقة التالية.
- k 1 = c · ( a + b )
- k 2 = a · ( d − c )
- k 3 = b · ( c + d )
- الجزء الحقيقي = k 1 − k 3
- الجزء التخيلي = k 1 + k 2 .
تستخدم هذه الخوارزمية ثلاث عمليات ضرب فقط، بدلاً من أربع، وخمس عمليات جمع أو طرح بدلاً من اثنتين. إذا كانت عملية الضرب الواحدة أكثر تكلفة من ثلاث عمليات جمع أو طرح، كما هو الحال عند الحساب اليدوي، فسيتحقق تحسن في السرعة. أما في الحواسيب الحديثة، فقد تستغرق عملية الضرب والجمع نفس الوقت تقريبًا، لذا قد لا يكون هناك تحسن في السرعة. يُصاحب ذلك احتمال فقدان بعض الدقة عند استخدام الأعداد العشرية.
في تحويلات فورييه السريعة (FFT) (أو أي تحويل خطي )، تُحسب عمليات الضرب المركبة بمعاملات ثابتة c + di (تُسمى عوامل التدوير في تحويلات فورييه السريعة)، وفي هذه الحالة، يمكن حساب عمليتي جمع مسبقًا ( d − c و c + d ). وبالتالي، لا يلزم سوى ثلاث عمليات ضرب وثلاث عمليات جمع. [ 28 ] مع ذلك، قد لا يكون استبدال عملية ضرب بعملية جمع بهذه الطريقة مفيدًا مع وحدات الفاصلة العائمة الحديثة . [ 29 ]
ضرب كثيرات الحدود
يمكن توسيع جميع خوارزميات الضرب المذكورة أعلاه لتشمل ضرب كثيرات الحدود . وبدلاً من ذلك، يمكن استخدام تقنية استبدال كرونكر لتحويل مسألة ضرب كثيرات الحدود إلى عملية ضرب ثنائية واحدة. [ 30 ]
يمكن تعميم طرق الضرب الطويلة للسماح بضرب الصيغ الجبرية:
14ac - 3ab + 2 مضروبًا في ac - ab + 1
14ac -3ab 2 ac -ab 1 ———————————————————— 14a 2 c 2 -3a 2 bc 2ac -14a 2 bc 3 a 2 b 2 -2ab 14ac -3ab 2 ——————————————————————————————————————— 14a 2 c 2 -17a 2 bc 16ac 3a 2 b 2 -5ab +2 ======================================== [ 31 ]
كمثال آخر على الضرب العمودي، ضع في اعتبارك ضرب 23 طنًا طويلًا (طن)، و12 قنطارًا (قنطارًا)، و2 ربع (ربع) في 47. يستخدم هذا المثال وحدات قياس أفوردوبوا : 1 طن = 20 قنطارًا، 1 قنطار = 4 ربع.
t cwt qtr 23 12 2 47 × ———————————————— 1. اضرب كل شيء في 47 1081 564 94 ———————————————— 2أ. حمل ربع الكمية وأضفها إلى مائة (94 = 23 × 4 + 2) (564)9423 2 ————— 587 2 2ب. حمل وزن 100 رطل وأضفه إلى t (587 = 29 × 20 + 7) (1081)5872 29 7 ———————————————— 3. الإضافة النهائية 1110 7 2 ================= الإجابة: 1110 طن 7 قنطار 2 ربع
يمكن استخدام نفس التصميم والأساليب لأي قياسات تقليدية وعملات غير عشرية مثل نظام الجنيه الإسترليني والدولار البريطاني القديم .
انظر أيضاً
- المضاعف الثنائي
- مضاعف دادا
- خوارزمية القسمة
- مخطط هورنر لتقييم كثير الحدود
- اللوغاريتم
- خوارزمية ضرب المصفوفات
- الحساب الذهني
- التحويل النظري العددي
- عملية استئصال الصفائح الدموية
- المسطرة الحاسبة
- نظام تراختنبرغ
- نظام الأعداد المتبقية § الضرب لخوارزمية ضرب سريعة أخرى، فعالة بشكل خاص عند إجراء العديد من العمليات بالتتابع، كما هو الحال في الجبر الخطي
- شجرة والاس
مراجع
- ↑ "الضرب" . www.mathematische-basteleien.de . تم الاطلاع عليه بتاريخ 15-03-2022 .
- ↑ برنت، ريتشارد ب. (مارس 1978). "حزمة حسابية متعددة الدقة بلغة فورتران". معاملات ACM في البرمجيات الرياضية . 4 : 57-70 . CiteSeerX 10.1.1.117.8425 . doi : 10.1145/355769.355775 . S2CID 8875817 .
- ↑ إيسون، غاري (13 فبراير 2000). "العودة إلى المدرسة للآباء" . بي بي سي نيوز .إيستواي، روب (10 سبتمبر 2010). "لماذا لا يستطيع الآباء تعليم أبنائهم الرياضيات اليوم؟" . بي بي سي نيوز.
- ↑ كورلو، إم إس؛ بورلباو، إل إم؛ كابرارو، آر إم؛ كورلو، إم إيه؛ هان، إس. (2010). "مدرسة القصر العثماني إنديرون والرجل ذو المواهب المتعددة، ماتراكجي ناسوه" . مجلة الجمعية الكورية لتعليم الرياضيات، السلسلة د: البحوث في تعليم الرياضيات . 14 (1): 19-31 .
- ↑ بوغومولني، ألكسندر . "التكاثر عند الفلاحين" . www.cut-the-knot.org . تاريخ الاسترجاع: 4 نوفمبر 2017 .
- ↑ ويلز، د. (1987). قاموس بنجوين للأرقام الغريبة والمثيرة للاهتمام . كتب بنجوين. ص 44. ISBN 978-0-14-008029-2.
- ↑ ماكفارلاند، ديفيد (2007)، جداول الأرباع: الجداول السابقة، وتقسيم العمل في بناء الجداول، والتطبيقات اللاحقة في الحواسيب التناظرية ، ص 1
- ↑ روبسون، إليانور (2008). الرياضيات في العراق القديم: تاريخ اجتماعي . مطبعة جامعة برينستون. ص 227. ISBN 978-0691201405.
- ↑ "مراجعات" ، مجلة المهندس المدني والمعماري : 54-55 ، 1857.
- ↑ هولمز، نيفيل (2003)، "الضرب بأرباع المربعات"، المجلة الرياضية ، 87 (509): 296-299 ، doi : 10.1017/S0025557200172778 ، JSTOR 3621048 ، S2CID 125040256 .
- ↑ إيفرت ل. جونسون (مارس 1980)، "مضاعف ربع مربع رقمي"، معاملات IEEE للحاسبات ، المجلد C-29، العدد 3، واشنطن العاصمة، الولايات المتحدة الأمريكية: جمعية IEEE للحاسبات، الصفحات 258-261 ، doi : 10.1109/TC.1980.1675558 ، ISSN 0018-9340 ، S2CID 24813486
- ↑ بوتني، تشارلز (مارس 1986). "أسرع عملية ضرب 6502 حتى الآن" . خط تجميع أبل . 6 (6).
- ↑ "الطريقة العبقرية التي تضرب بها الحواسيب الأعداد الكبيرة" . يوتيوب . 2025-01-02.
- 1 2 3 هارفي، ديفيد؛ فان دير هوفن، يوريس (2021). "ضرب الأعداد الصحيحة في الوقت المناسب( ملف PDF) . حوليات الرياضيات . السلسلة الثانية. 193 (2): 563-617 . doi : 10.4007/annals.2021.193.2.4 . MR 4224716. S2CID 109934776 .
- ↑ تشارلز باباج، الفصل الثامن - من المحرك التحليلي، معالجة أعداد أكبر، مقتطفات من حياة فيلسوف ، لونجمان جرين، لندن، 1864؛ الصفحة 125.
- ↑ د. كنوت، فن برمجة الحاسوب ، المجلد 2، القسم 4.3.3 (1998)
- ^ شونهاج، أ. ستراسين، ف. (1971). ""الضرب الكبير في زحلة"" . الحوسبة . 7 ( 3– 4): 281– 292. دوى : 10.1007/BF02242355 . S2CID 9738629 .
- ↑ فورر، م. (2007). "ضرب الأعداد الصحيحة بشكل أسرع" (ملف PDF) . وقائع الندوة السنوية التاسعة والثلاثين لجمعية ACM حول نظرية الحوسبة، 11-13 يونيو 2007، سان دييغو، كاليفورنيا، الولايات المتحدة الأمريكية . الصفحات 57-66 . doi : 10.1145/1250790.1250800 . ISBN 978-1-59593-631-8. S2CID 8437794 .
- ↑ دي، أ.؛ ساها، س.؛ كورور، ب.؛ سابثارشي، ر. (2008). "ضرب الأعداد الصحيحة السريع باستخدام الحساب النمطي". وقائع الندوة السنوية الأربعين لجمعية آلات الحوسبة حول نظرية الحوسبة (STOC) . الصفحات 499-506 . arXiv : 0801.1416 . doi : 10.1145/1374376.1374447 . ISBN 978-1-60558-047-0. S2CID 3264828 .
- ^ هارفي ، ديفيد. فان دير هوفن، يوريس؛ ليسيرف، جريجوار (2016). “حتى الضرب الأعداد الصحيحة أسرع”. مجلة التعقيد . 36 : 1 – 30. أرخايف : 1407.3360 . دوى : 10.1016/j.jco.2016.03.001 . السيد 3530637 .
- ↑ كوفانوف، سفياتوسلاف؛ ثومي، إيمانويل (2019). "الضرب السريع للأعداد الصحيحة باستخدام أعداد فيرما الأولية المعممة". الرياضيات الحاسوبية 88 (317): 1449-1477 . arXiv : 1502.02800 . doi : 10.1090/mcom/3367 . S2CID 67790860 .
- ↑ هارفي، د.؛ فان دير هوفن، ج. (2019). "ضرب الأعداد الصحيحة بشكل أسرع باستخدام متجهات الشبكة القصيرة". سلسلة الكتاب المفتوح . 2 : 293-310 . arXiv : 1802.07932 . doi : 10.2140/obs.2019.2.293 . S2CID 3464567 .
- ↑ هارتنيت، كيفن (11 أبريل 2019). "علماء الرياضيات يكتشفون الطريقة المثلى للضرب" . مجلة كوانتا . تم الاطلاع عليه بتاريخ 3 مايو 2019 .
- ↑ جيلبرت، لاكلان (4 أبريل 2019). "عبقري رياضيات يحل مسألة ضرب عمرها 48 عامًا" . جامعة نيو ساوث ويلز . تاريخ الاسترجاع: 18 أبريل 2019 .
- ↑ أرورا، سانجيف؛ باراك، بواز (2009). التعقيد الحسابي: منهج حديث . مطبعة جامعة كامبريدج. ISBN 978-0-521-42426-4.
- ↑ أبلاييف، ف.؛ كاربينسكي، م. (2003). "حد أدنى لضرب الأعداد الصحيحة في برامج التفرع العشوائية المرتبة للقراءة لمرة واحدة" (ملف PDF) . المعلومات والحوسبة . 186 (1): 78-89 . doi : 10.1016/S0890-5401(03)00118-4 .
- ↑ كنوت، دونالد إي. (1988)، فن برمجة الحاسوب، المجلد 2: الخوارزميات شبه العددية ، أديسون-ويسلي ، الصفحات 519، 706
- ↑ دوهاميل، ب.؛ فيترلي، م. (1990). "تحويلات فورييه السريعة: مراجعة تعليمية وأحدث التقنيات" (ملف PDF) . معالجة الإشارات . 19 (4): 259-299. انظر القسم 4.1. رمز Bibcode : 1990SigPr..19..259D . doi : 10.1016/0165-1684(90)90158-U .
- ↑ جونسون، إس جي؛ فريجو، إم. (2007). "خوارزمية FFT معدلة ذات أساس منقسم مع عدد أقل من العمليات الحسابية" (ملف PDF) . معاملات IEEE لمعالجة الإشارات . 55 (1): 111-119. انظر القسم الرابع. رمز Bibcode : 2007ITSP...55..111J . doi : 10.1109/TSP.2006.882087 . S2CID 14772428 .
- ^ فون تسور جاتن، يواكيم ؛ جيرهارد ، يورغن (1999)، جبر الكمبيوتر الحديث ، مطبعة جامعة كامبريدج، الصفحات من 243 إلى 244، ISBN 978-0-521-64176-0.
- ↑ كاسل، فرانك (1900). رياضيات ورشة العمل . لندن: ماكميلان وشركاه. ص 74 .
للمزيد من القراءة
- وارن الابن، هنري س. (2013). متعة المخترق ( الطبعة الثانية). أديسون ويسلي - بيرسون للتعليم، المحدودة. ISBN 978-0-321-84268-8.
- سافارد، جون جي جي (2018) [2006]. "تقنيات حسابية متقدمة" . كوادريبلوك . مؤرشف من الأصل بتاريخ 3 يوليو 2018. تم الاطلاع عليه بتاريخ 16 يوليو 2018 .
- يوهانسون، كيني (2008). حسابات الإزاحة والجمع منخفضة الطاقة والتعقيد (ملف PDF) (أطروحة دكتوراه). دراسات لينشوبينغ في العلوم والتكنولوجيا ( الطبعة الأولى). لينشوبينغ، السويد: قسم الهندسة الكهربائية، جامعة لينشوبينغ . ISBN 978-91-7393-836-5ISSN 0345-7524 . العدد 1201. مؤرشف (PDF) من الأصل بتاريخ 13 أغسطس 2017. تم الاطلاع عليه بتاريخ 23 أغسطس 2021 . (x+268 صفحة)
روابط خارجية
الحساب الأساسي
خوارزميات متقدمة
- خوارزميات الحساب الحاسوبي
- الضرب
