خوارزمية فرق تسد

في علم الحاسوب ، يُشير مصطلح "فرق تسد" ، الذي كان في الأصل مبدأً سياسياً ، إلى نموذج تصميم خوارزمي . تقوم خوارزمية "فرق تسد" بتقسيم المشكلة بشكل متكرر إلى مشكلتين فرعيتين أو أكثر من النوع نفسه أو من نوع مشابه، حتى تصبح هذه المشكلات بسيطة بما يكفي لحلها مباشرة. ثم تُدمج حلول المشكلات الفرعية للحصول على حل للمشكلة الأصلية.

تُعدّ تقنية فرق تسد أساسًا للخوارزميات الفعّالة للعديد من المشكلات، مثل الفرز (مثل الفرز السريع ، والفرز بالدمجوضرب الأعداد الكبيرة (مثل خوارزمية كاراتسوبا )، وإيجاد أقرب زوج من النقاط ، والتحليل النحوي (مثل المحللات النحوية من أعلى إلى أسفلوحلّ مسائل SAT ، [ 1 ] وحساب تحويل فورييه المنفصل ( FFT ). [ 2 ]

قد يكون تصميم خوارزميات فرق تسد فعّالة أمرًا صعبًا. وكما هو الحال في الاستقراء الرياضي ، غالبًا ما يكون من الضروري تعميم المسألة لجعلها قابلة للحل التكراري . وعادةً ما يتم إثبات صحة خوارزمية فرق تسد بالاستقراء الرياضي، ويتم تحديد تكلفتها الحسابية غالبًا عن طريق حل العلاقات التكرارية .

فرق تسد

أسلوب فرق تسد لترتيب القائمة (38، 27، 43، 3، 9، 82، 10) ترتيبًا تصاعديًا. النصف العلوي: تقسيم القائمة إلى قوائم فرعية؛ المنتصف: ترتيب قائمة مكونة من عنصر واحد أمر بسيط؛ النصف السفلي: تجميع القوائم الفرعية المرتبة.

يُستخدم نموذج فرق تسد غالبًا لإيجاد الحل الأمثل للمشكلة. وتتلخص فكرته الأساسية في تقسيم المشكلة المعطاة إلى مشكلتين فرعيتين أو أكثر متشابهتين، ولكن أبسط، ثم حل كل منهما على حدة، ودمج حلولهما لحل المشكلة الأصلية. تُحل المشكلات البسيطة نسبيًا مباشرةً. على سبيل المثال، لترتيب قائمة معينة من n عددًا طبيعيًا ، تُقسم إلى قائمتين تحتوي كل منهما على n /2 عددًا تقريبًا، ثم تُرتب كل قائمة على حدة، ويُدمج الناتجان معًا بشكل مناسب للحصول على النسخة المرتبة من القائمة المعطاة (انظر الصورة). يُعرف هذا الأسلوب بخوارزمية فرز الدمج .

يُطلق مصطلح "فرق تسد" أحيانًا على الخوارزميات التي تُختزل كل مشكلة إلى مشكلة فرعية واحدة فقط، مثل خوارزمية البحث الثنائي لإيجاد سجل في قائمة مُرتبة (أو ما يُماثلها في الحوسبة العددية ، خوارزمية التنصيف لإيجاد الجذر ). [ 3 ] يمكن تنفيذ هذه الخوارزميات بكفاءة أعلى من خوارزميات "فرق تسد" العامة؛ وعلى وجه الخصوص، إذا استخدمت الاستدعاء الذاتي الذيل ، فيمكن تحويلها إلى حلقات بسيطة . مع ذلك، ووفقًا لهذا التعريف الواسع، يُمكن اعتبار أي خوارزمية تستخدم الاستدعاء الذاتي أو الحلقات "خوارزمية فرق تسد". لذلك، يرى بعض الباحثين أنه ينبغي استخدام مصطلح "فرق تسد" فقط عندما تُنتج كل مشكلة مشكلتين فرعيتين أو أكثر. [ 4 ] وقد اقتُرح مصطلح " الاختزال والتغلب " بدلاً من ذلك لفئة المشكلة الفرعية الواحدة. [ 5 ]

يُعد أحد التطبيقات المهمة لأسلوب فرق تسد هو التحسين، حيث إذا تم تقليل مساحة البحث ("تقليمها") بعامل ثابت في كل خطوة، فإن الخوارزمية الكلية لها نفس التعقيد التقاربي لخطوة التقليم، مع اعتماد الثابت على عامل التقليم (عن طريق جمع السلسلة الهندسية )؛ ​​وهذا ما يُعرف بالتقليم والبحث .

أمثلة تاريخية مبكرة

تتمثل الأمثلة المبكرة لهذه الخوارزميات في المقام الأول في خوارزمية التناقص والتغلب - حيث يتم تقسيم المشكلة الأصلية تباعاً إلى مشاكل فرعية فردية ، ويمكن حلها بالفعل بشكل تكراري.

تتمتع خوارزمية البحث الثنائي ، وهي خوارزمية تعتمد على مبدأ "التناقص والتغلب" حيث تكون المسائل الفرعية أصغر بنحو النصف من المسائل الأصلية، بتاريخ طويل. ورغم ظهور وصف واضح لهذه الخوارزمية على الحواسيب عام 1946 في مقال لجون موشلي ، فإن فكرة استخدام قائمة مرتبة من العناصر لتسهيل البحث تعود على الأقل إلى بابل عام 200  قبل الميلاد. [ 6 ] ومن الخوارزميات القديمة الأخرى التي تعتمد على مبدأ "التناقص والتغلب" خوارزمية إقليدس لحساب القاسم المشترك الأكبر لعددين عن طريق اختزالهما إلى مسائل فرعية أصغر فأصغر، ويعود تاريخها إلى عدة قرون قبل الميلاد.

يُعد وصف جاوس عام 1805 لما يسمى الآن بخوارزمية تحويل فورييه السريع كولي-توكي (FFT) مثالًا مبكرًا على خوارزمية فرق تسد مع مشاكل فرعية متعددة ، على الرغم من أنه لم يحلل عدد عملياتها كميًا، ولم تنتشر خوارزميات FFT على نطاق واسع حتى أعيد اكتشافها بعد أكثر من قرن.

خوارزمية فرز الدمج هي خوارزمية مبكرة ذات مشكلتين فرعيتين تم تطويرها خصيصًا لأجهزة الكمبيوتر وتم تحليلها بشكل صحيح ، وقد اخترعها جون فون نيومان في عام 1945. [ 8 ]

ومن الأمثلة البارزة الأخرى الخوارزمية التي اخترعها أناتولي أ. كاراتسوبا عام 1960 [ 9 ] والتي يمكنها ضرب عددين مكونين من n رقمًا فييا(نسجل23){\displaystyle O(n^{\log _{2}3})}العمليات (في تدوين Big O ). دحضت هذه الخوارزمية تخمين أندريه كولموغوروف لعام 1956 بأنΩ(ن2){\displaystyle \Omega (n^{2})}ستكون هناك حاجة إلى عمليات لإنجاز تلك المهمة.

كمثال آخر على خوارزمية فرق تسد التي لم تكن تعتمد في الأصل على الحواسيب، يقدم دونالد كنوث الطريقة التي يستخدمها مكتب البريد عادةً لتوجيه البريد: تُفرز الرسائل في أكياس منفصلة لمناطق جغرافية مختلفة، ويُفرز كل كيس من هذه الأكياس بدوره في مجموعات لمناطق فرعية أصغر، وهكذا حتى يتم تسليمها. [ 6 ] يرتبط هذا بفرز الجذر ، الذي وُصف لآلات فرز البطاقات المثقبة في وقت مبكر من عام 1929. [ 6 ]

المزايا

حل المشكلات الصعبة

تُعدّ استراتيجية "فرق تسد" أداةً فعّالةً لحلّ المشكلات المعقدة من الناحية المفاهيمية: فكل ما تتطلبه هو طريقة لتقسيم المشكلة إلى مشكلات فرعية، وحلّ الحالات البسيطة، ودمج المشكلات الفرعية في المشكلة الأصلية. وبالمثل، لا تتطلب استراتيجية "التقليل والتغلب" سوى اختزال المشكلة إلى مشكلة واحدة أصغر، مثل لغز برج هانوي الكلاسيكي ، الذي يُختزل فيه تحريك برج ارتفاعهن{\displaystyle n}لتحريك برج شاهق الارتفاعن-1{\displaystyle n-1}.

كفاءة الخوارزمية

غالباً ما يساعد نموذج فرق تسد في اكتشاف الخوارزميات الفعالة. كان هذا النموذج مفتاحاً، على سبيل المثال، لطريقة كاراتسوبا للضرب السريع، وخوارزميات الفرز السريع والفرز بالدمج، وخوارزمية ستراسن لضرب المصفوفات ، وتحويلات فورييه السريعة.

في جميع هذه الأمثلة، أدى أسلوب D&C إلى تحسين التكلفة التقاربية للحل. على سبيل المثال، إذا كانت (أ) الحالات الأساسية ذات حجم ثابت ومحدود، فإن جهد تقسيم المسألة ودمج الحلول الجزئية يتناسب طرديًا مع حجم المسألة.ن{\displaystyle n}و(ب) يوجد عدد محدودص{\displaystyle p}من المشكلات الفرعية ذات الحجم ~نص{\displaystyle {\frac {n}{p}}}في كل مرحلة، ستكون تكلفة خوارزمية فرق تسديا(نسجلصن){\displaystyle O(n\log _{p}n)}.

بالنسبة لأنواع أخرى من أساليب فرق تسد، يمكن تعميم أوقات التشغيل أيضًا. على سبيل المثال، عندما يستغرق (أ) عمل تقسيم المشكلة ودمج الحلول الجزئيةجن{\displaystyle cn}الوقت، أينن{\displaystyle n}حجم الإدخال وج{\displaystyle c}ب) عندما يكون ثابتًا ما؛ ب) عندمان<2{\displaystyle n<2}، يستغرق تنفيذ الخوارزمية وقتًا محدودًا بـج{\displaystyle c}ج) هناكq{\displaystyle q}مسائل فرعية حيث يكون حجم كل مسألة فرعية ~ن2{\displaystyle {\frac {n}{2}}}ثم، تكون أوقات التشغيل كما يلي:

  • إذا كان عدد المسائل الفرعيةq>2{\displaystyle q>2}إذاً، فإن وقت تشغيل خوارزمية فرق تسد يكون محدوداً بـيا(نسجل2q){\displaystyle O(n^{\log _{2}q})}.
  • إذا كان عدد المسائل الفرعية واحدًا بالضبط، فإن وقت تشغيل خوارزمية فرق تسد يكون محدودًا بـيا(ن){\displaystyle O(n)}[ 10 ]

أما إذا استغرق الأمر بدلاً من ذلك عملية تقسيم المشكلة ودمج الحلول الجزئيةجن2{\displaystyle cn^{2}}الوقت، وهناك مشكلتان فرعيتان لكل منهما حجمن2{\displaystyle {\frac {n}{2}}}إذاً، فإن وقت تشغيل خوارزمية فرق تسد يكون محدوداً بـيا(ن2){\displaystyle O(n^{2})}[ 10 ]

التوازي

تُعد خوارزميات فرق تسد مناسبة بشكل طبيعي للتنفيذ في أجهزة متعددة المعالجات ، وخاصة أنظمة الذاكرة المشتركة حيث لا يلزم التخطيط المسبق لتوصيل البيانات بين المعالجات لأنه يمكن تنفيذ المشكلات الفرعية المتميزة على معالجات مختلفة.

الوصول إلى الذاكرة

تميل خوارزميات فرق تسد بطبيعتها إلى الاستخدام الأمثل لذاكرة التخزين المؤقت . والسبب هو أنه بمجرد أن تصبح المسألة الفرعية صغيرة بما يكفي، يمكن، من حيث المبدأ، حلها وجميع مسائلها الفرعية داخل ذاكرة التخزين المؤقت ، دون الحاجة إلى الوصول إلى الذاكرة الرئيسية الأبطأ . تُسمى الخوارزمية المصممة لاستغلال ذاكرة التخزين المؤقت بهذه الطريقة " خوارزمية غير معتمدة على ذاكرة التخزين المؤقت" ، لأنها لا تتضمن حجم ذاكرة التخزين المؤقت كمعامل صريح . [ 11 ] علاوة على ذلك، يمكن تصميم خوارزميات فرق تسد للخوارزميات المهمة (مثل الفرز، وتحويل فورييه السريع، وضرب المصفوفات) لتكون خوارزميات مثالية غير معتمدة على ذاكرة التخزين المؤقت - فهي تستخدم ذاكرة التخزين المؤقت بطريقة مثالية على الأرجح، بمعنى تقاربي، بغض النظر عن حجم ذاكرة التخزين المؤقت. في المقابل، فإن النهج التقليدي لاستغلال ذاكرة التخزين المؤقت هو الحجب ، كما هو الحال في تحسين تداخل الحلقات ، حيث يتم تقسيم المسألة صراحةً إلى أجزاء ذات حجم مناسب - وهذا أيضًا يمكن أن يستخدم ذاكرة التخزين المؤقت على النحو الأمثل، ولكن فقط عندما يتم ضبط الخوارزمية لأحجام ذاكرة التخزين المؤقت المحددة لجهاز معين.

توجد نفس الميزة فيما يتعلق بأنظمة التخزين الهرمية الأخرى، مثل NUMA أو الذاكرة الافتراضية ، وكذلك بالنسبة لمستويات متعددة من ذاكرة التخزين المؤقت: بمجرد أن تصبح المشكلة الفرعية صغيرة بما يكفي، يمكن حلها ضمن مستوى معين من التسلسل الهرمي، دون الوصول إلى المستويات الأعلى (الأبطأ).

التحكم في التقريب

في العمليات الحسابية التي تتضمن تقريبًا، كالأعداد العشرية ، قد تُعطي خوارزمية فرق تسد نتائج أكثر دقة من طريقة تكرارية تبدو مكافئة لها ظاهريًا. على سبيل المثال، يمكن جمع N عددًا إما بحلقة بسيطة تُضيف كل قيمة إلى متغير واحد، أو بخوارزمية فرق تسد تُسمى الجمع الثنائي ، والتي تُقسّم مجموعة البيانات إلى نصفين، وتحسب مجموع كل نصف بشكل تكراري، ثم تجمع المجموعين. مع أن الطريقة الثانية تُجري نفس عدد عمليات الجمع التي تُجريها الأولى وتتحمل عبء الاستدعاءات التكرارية، إلا أنها عادةً ما تكون أكثر دقة. [ 12 ]

مشاكل التنفيذ

التكرار

تُنفَّذ خوارزميات فرق تسد بشكل طبيعي كإجراءات تكرارية . في هذه الحالة، تُخزَّن المسائل الفرعية الجزئية المؤدية إلى المسألة قيد الحل حاليًا تلقائيًا في مكدس استدعاءات الإجراءات . الدالة التكرارية هي دالة تستدعي نفسها ضمن تعريفها.

مكدس صريح

يمكن أيضًا تنفيذ خوارزميات فرق تسد بواسطة برنامج غير تكراري يخزن المسائل الفرعية الجزئية في بنية بيانات محددة، مثل مكدس أو طابور أو طابور أولوية . يتيح هذا الأسلوب مزيدًا من الحرية في اختيار المسألة الفرعية المراد حلها لاحقًا، وهي ميزة مهمة في بعض التطبيقات، مثل التكرار العرضي أولًا وطريقة التفرع والتقييد لتحسين الدوال. كما يُعد هذا الأسلوب الحل القياسي في لغات البرمجة التي لا تدعم الإجراءات التكرارية.

حجم الرزمة

في التطبيقات التكرارية لخوارزميات البحث والإنشاء، يجب التأكد من وجود ذاكرة كافية مخصصة لمكدس التكرار، وإلا فقد يفشل التنفيذ بسبب تجاوز سعة المكدس . تتميز خوارزميات البحث والإنشاء الموفرة للوقت عادةً بعمق تكرار صغير نسبيًا. على سبيل المثال، يمكن تنفيذ خوارزمية الفرز السريع بحيث لا تتطلب أبدًا أكثر منسجل2ن{\displaystyle \log _{2}n}استدعاءات متكررة متداخلة للفرزن{\displaystyle n}أغراض.

قد يكون منع تجاوز سعة المكدس صعبًا عند استخدام الإجراءات التكرارية، نظرًا لأن العديد من المترجمات تتعامل مع مكدس التكرار ككتلة متصلة من الذاكرة، وبعضها يحجز له مساحة ثابتة. إضافةً إلى ذلك، قد تخزن المترجمات معلومات أكثر مما هو مطلوب في مكدس التكرار، بما في ذلك عنوان الإرجاع، والمعاملات غير المتغيرة، والمتغيرات المحلية للإجراء. ونتيجةً لذلك، يمكن تقليل احتمالية تجاوز سعة المكدس عن طريق الحد من عدد المعاملات والمتغيرات المحلية في الإجراء التكراري، أو عن طريق استبدال التكرار ببنية بيانات مكدس صريحة.

اختيار الحالات الأساسية

في أي خوارزمية تكرارية، هناك حرية كبيرة في اختيار الحالات الأساسية ، وهي المشكلات الفرعية الصغيرة التي يتم حلها مباشرة من أجل إنهاء التكرار.

يُعدّ اختيار أصغر أو أبسط الحالات الأساسية الممكنة أكثر أناقةً، ويؤدي عادةً إلى برامج أبسط، نظرًا لقلة الحالات التي يجب مراعاتها وسهولة حلّها. على سبيل المثال، يمكن لخوارزمية تحويل فورييه السريع إيقاف الاستدعاء الذاتي عندما يكون المُدخل عينةً واحدة، ويمكن لخوارزمية فرز القوائم السريعة إيقاف الاستدعاء الذاتي عندما يكون المُدخل قائمةً فارغة؛ في كلا المثالين، توجد حالة أساسية واحدة فقط، ولا تتطلب أي معالجة.

من ناحية أخرى، غالبًا ما تتحسن الكفاءة إذا توقف الاستدعاء التكراري عند حالات أساسية كبيرة نسبيًا، وتم حل هذه الحالات بطريقة غير تكرارية، مما ينتج عنه خوارزمية هجينة . تتجنب هذه الاستراتيجية عبء الاستدعاءات التكرارية التي لا تُنجز عملًا يُذكر، وقد تسمح أيضًا باستخدام خوارزميات غير تكرارية متخصصة، تكون في تلك الحالات الأساسية أكثر كفاءة من الاستدعاء التكراري الصريح. يتمثل الإجراء العام لخوارزمية تكرارية هجينة بسيطة في اختصار الحالة الأساسية ، والمعروف أيضًا بالتكرار غير المباشر . في هذه الحالة، يتم التحقق مما إذا كانت الخطوة التالية ستؤدي إلى الحالة الأساسية قبل استدعاء الدالة، مما يتجنب استدعاء دالة غير ضروري. على سبيل المثال، في شجرة، بدلًا من الاستدعاء التكراري إلى عقدة فرعية ثم التحقق مما إذا كانت فارغة، فإن التحقق من كونها فارغة قبل الاستدعاء التكراري يتجنب نصف استدعاءات الدالة في بعض الخوارزميات على الأشجار الثنائية. بما أن خوارزمية D&C تُختزل في نهاية المطاف كل مسألة أو مسألة فرعية إلى عدد كبير من المسائل الأساسية، فإن هذه المسائل غالبًا ما تُهيمن على التكلفة الإجمالية للخوارزمية، خاصةً عندما يكون عبء التقسيم/الدمج منخفضًا. تجدر الإشارة إلى أن هذه الاعتبارات لا تعتمد على ما إذا كان المُصرّف يُنفّذ الاستدعاء الذاتي أم باستخدام مكدس صريح.

لذا، على سبيل المثال، ستتحول العديد من تطبيقات المكتبات لخوارزمية الفرز السريع إلى خوارزمية فرز إدراج بسيطة تعتمد على الحلقات (أو ما شابهها) بمجرد أن يصبح عدد العناصر المراد فرزها صغيرًا بما فيه الكفاية. لاحظ أنه إذا كانت القائمة الفارغة هي الحالة الأساسية الوحيدة، فإن فرز قائمة باستخدامن{\displaystyle n}ستتضمن المشاركات الحد الأقصىن{\displaystyle n}استدعاءات خوارزمية الفرز السريع التي لا تفعل شيئًا سوى العودة فورًا. زيادة الحالات الأساسية إلى قوائم بحجم 2 أو أقل ستؤدي إلى التخلص من معظم هذه الاستدعاءات عديمة الفائدة، وبشكل عام، تُستخدم حالة أساسية أكبر من 2 عادةً لتقليل الوقت المُستغرق في تكلفة استدعاء الدوال أو معالجة المكدس.

بدلاً من ذلك، يمكن استخدام حالات أساسية كبيرة تستخدم خوارزمية فرق تسد، ولكن تُنفذ الخوارزمية لمجموعة محددة مسبقًا من الأحجام الثابتة، حيث يمكن فك الخوارزمية بالكامل إلى كود خالٍ من التكرار والحلقات والشروط (مرتبط بتقنية التقييم الجزئي ). على سبيل المثال، يُستخدم هذا النهج في بعض تطبيقات تحويل فورييه السريع (FFT) الفعالة، حيث تكون الحالات الأساسية عبارة عن تطبيقات مفككة لخوارزميات FFT التي تعتمد على فرق تسد لمجموعة من الأحجام الثابتة. [ 13 ] يمكن استخدام طرق توليد الكود المصدري لإنتاج العدد الكبير من الحالات الأساسية المنفصلة اللازمة لتنفيذ هذه الاستراتيجية بكفاءة. [ 13 ]

يُعرف الشكل المعمم لهذه الفكرة باسم "فك التكرار" أو "التوسيع"، وقد تم اقتراح تقنيات متنوعة لأتمتة عملية توسيع الحالة الأساسية. [ 14 ]

البرمجة الديناميكية للمسائل الفرعية المتداخلة

في بعض المسائل، قد يؤدي التكرار المتفرع إلى تقييم المسألة الفرعية نفسها عدة مرات. في مثل هذه الحالات، قد يكون من المفيد تحديد حلول هذه المسائل الفرعية المتداخلة وحفظها، وهي تقنية تُعرف باسم التخزين المؤقت . وعند تطبيقها بشكل كامل، تُفضي إلى خوارزميات فرق تسد من الأسفل إلى الأعلى، مثل البرمجة الديناميكية .

انظر أيضاً

مراجع

  1. هيول، مارين جيه إتش ؛ كولمان، أوليفر؛ ويرينغا، سيرت؛ بير، أرمين (2012)، "المكعب والقهر: توجيه حلول CDCL SAT من خلال التنبؤات المسبقة"، الأجهزة والبرمجيات: التحقق والاختبار ، سلسلة محاضرات في علوم الحاسوب، المجلد  7261، سبرينغر برلين هايدلبرغ، الصفحات 50-65 ، doi : 10.1007/978-3-642-34188-5_8 ، ISBN  978-3-642-34187-8
  2. بلاهوت، ريتشارد (14 مايو 2014). خوارزميات سريعة لمعالجة الإشارات . مطبعة جامعة كامبريدج. الصفحات 139-143 . ISBN  978-0-511-77637-3.
  3. ^ توماس هـ. كورمين. تشارلز إي ليسرسون؛ رونالد ل. ريفست؛ كليفورد شتاين (31 يوليو 2009). مقدمة في الخوارزميات . مطبعة معهد ماساتشوستس للتكنولوجيا. رقم ISBN 978-0-262-53305-8.
  4. براسارد، جي، وبراتلي، بي. أساسيات الخوارزميات، برنتيس هول، 1996.
  5. أناني ف. ليفيتين، مقدمة في تصميم وتحليل الخوارزميات (أديسون ويسلي، 2002).
  6. 1 2 3 دونالد إي. كنوث، فن برمجة الحاسوب: المجلد 3، الفرز والبحث ، الطبعة الثانية (أديسون ويسلي، 1998).
  7. Heideman, MT, DH Johnson, and CS Burrus, “ Gauss and the history of the fast Fourier transform “, IEEE ASSP Magazine, 1, (4), 14–21 (1984).
  8. كنوت، دونالد (1998). فن برمجة الحاسوب: المجلد 3: الفرز والبحث . أديسون-ويسلي. ص 159. ISBN  0-201-89685-0.
  9. ^ كاراتسوبا، أناتولي أ . يوري ب. أوفمان (1962). "مقص كبير للسيارات". دوكلادي أكاديمي ناوك SSSR . 146 : 293 – 294.ترجمة كاراتسوبا، أ.؛ أوفمان، يو. (1963). "ضرب الأعداد متعددة الأرقام على الأوتوماتا" . الفيزياء السوفيتية دوكلادي . 7 : 595-596 . رمز Bibcode : 1963SPhD....7..595K .
  10. 1 2 كلاينبرج، جون؛ تاردوس ، إيفا (16 مارس 2005). تصميم الخوارزمية (1 ed.). تعليم بيرسون . ص 214 – 220. ISBN   9780321295354تم الاطلاع عليه بتاريخ 26 يناير 2025 .
  11. م. فريجو؛ سي إي ليسرسون؛ هـ. بروكوب (1999). "خوارزميات غير حساسة لذاكرة التخزين المؤقت" . الندوة السنوية الأربعون حول أسس علوم الحاسوب (رقم التصنيف 99CB37039) . الصفحات 285-297 . doi : 10.1109/SFFCS.1999.814600 . ISBN  0-7695-0409-4. S2CID 62758836 . 
  12. نيكولاس ج. هايام، " دقة جمع الفاصلة العائمة مجلة SIAM للحوسبة العلمية 14 (4)، 783-799 (1993).
  13. 1 2 فريجو، م.؛ جونسون، س. ج. (فبراير 2005). "تصميم وتنفيذ FFTW3" (ملف PDF) . وقائع معهد مهندسي الكهرباء والإلكترونيات . 93 (2): 216-231 . Bibcode : 2005IEEEP..93..216F . CiteSeerX 10.1.1.66.3097 . doi : 10.1109/JPROC.2004.840301 . S2CID 6644892 .  
  14. رادو روجينا ومارتن رينارد، " فك التكرار لبرامج فرق تسد " في اللغات والمترجمات للحوسبة المتوازية ، الفصل 3، الصفحات 34-48. سلسلة محاضرات في علوم الحاسوب ، المجلد 2017 (برلين: سبرينغر، 2001).