الخوارزميات التجريبية

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

ملخص

تُكمّل أساليب الخوارزميات التجريبية الأساليب النظرية لتحليل الخوارزميات . [ 2 ] ومن خلال التطبيق المنهجي للأساليب التجريبية، ولا سيما من الإحصاء ، يُمكن في كثير من الأحيان الحصول على رؤى ثاقبة حول سلوك الخوارزميات، مثل خوارزميات الاستدلال عالية الأداء للمسائل التوافقية المعقدة التي يصعب (حاليًا) تحليلها نظريًا. [ 3 ] كما يُمكن استخدام الأساليب التجريبية لتحقيق تحسينات جوهرية في كفاءة الخوارزميات . [ 4 ]

تُحدد عالمة الحاسوب الأمريكية كاثرين ماكجيوخ فرعين رئيسيين لعلم الخوارزميات التجريبي: الأول (المعروف بالتحليل التجريبي ) يُعنى بتحليل وتوصيف سلوك الخوارزميات ، والثاني (المعروف بتصميم الخوارزميات أو هندسة الخوارزميات ) يركز على الأساليب التجريبية لتحسين أداء الخوارزميات . [ 5 ] يعتمد الأول غالبًا على تقنيات وأدوات من علم الإحصاء ، بينما يعتمد الثاني على مناهج من علم الإحصاء والتعلم الآلي والتحسين . تُستخدم أدوات التحليل الديناميكي ، وخاصةً أدوات تحليل الأداء ، بشكل شائع عند تطبيق الأساليب التجريبية لاختيار وتحسين أنواع مختلفة من الخوارزميات لاستخدامها في سياقات متنوعة. [ 6 ] [ 7 ] [ 8 ]

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

تحليل الأداء في تصميم الخوارزميات المعقدة

في غياب الخوارزميات التجريبية، قد يتضمن تحليل تعقيد الخوارزمية أساليب نظرية متنوعة قابلة للتطبيق على مختلف الحالات التي يمكن استخدام الخوارزمية فيها. [ 10 ] غالبًا ما تُعدّ اعتبارات الذاكرة والتخزين المؤقت عوامل مهمة يجب مراعاتها عند الاختيار النظري لخوارزمية معقدة، أو عند تحديد منهجية تحسينها، لغرض معين. [ 11 ] [ 12 ] يُعدّ تحليل أداء البرامج تقنية ديناميكية لتحليل البرامج ، تُستخدم عادةً لإيجاد وتحليل نقاط الاختناق في كود التطبيق بأكمله [ 13 ] [ 14 ] [ 15 ] أو لتحليل التطبيق بأكمله لتحديد الكود ذي الأداء الضعيف. [ 16 ] يمكن لأداة تحليل الأداء الكشف عن الكود الأكثر صلة بمشاكل أداء التطبيق. [ 17 ]

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

قد يوفر تحليل الأداء فهمًا بديهيًا لسلوك الخوارزمية [ 20 ] من خلال عرض نتائج الأداء كتمثيل مرئي. [ 21 ] وقد طُبِّق تحليل الأداء، على سبيل المثال، أثناء تطوير خوارزميات مطابقة الأحرف البديلة . اعتمدت الخوارزميات المبكرة لمطابقة الأحرف البديلة، مثل خوارزمية wildmat لريتش سالز [ 22 ] ، عادةً على الاستدعاء الذاتي ، وهي تقنية وُجِّهت إليها انتقادات بسبب أدائها. [ 23 ] طُوِّرت خوارزمية كراوس لمطابقة الأحرف البديلة بناءً على محاولة صياغة بديل غير استدعائي باستخدام حالات اختبار [ 24 ] ، تلتها تحسينات مُقترحة من خلال تحليل الأداء [ 25 ] ، مما أدى إلى استراتيجية خوارزمية جديدة وُضِعت في ضوء تحليل الأداء إلى جانب اعتبارات أخرى. [ 26 ] توفر أدوات تحليل الأداء التي تجمع البيانات على مستوى الكتل الأساسية [ 27 ] أو التي تعتمد على دعم الأجهزة [ 28 ] نتائج دقيقة بما يكفي لمساعدة مطوري البرامج في تحسين الخوارزميات لجهاز كمبيوتر أو حالة معينة. [ 29 ] يمكن أن يساعد تحليل الأداء المطورين على فهم خصائص الخوارزميات المعقدة المطبقة في المواقف المعقدة، مثل خوارزميات التطور المشترك المطبقة على مشاكل اختبارية عشوائية، وقد يساعد ذلك في تحسين التصميم. [ 30 ]

انظر أيضاً

مراجع

  1. فليشر، رودولف؛ وآخرون  ، محررون. (2002). الخوارزميات التجريبية، من تصميم الخوارزمية إلى البرمجيات القوية والفعالة . سبرينغر إنترناشونال بابليشينغ إيه جي.
  2. موريه، برنارد م. إي. (1999). نحو منهج في الخوارزميات التجريبية . سلسلة DIMACS في الرياضيات المتقطعة وعلوم الحاسوب النظرية. المجلد 59. سلسلة DIMACS في الرياضيات المتقطعة وعلوم الحاسوب النظرية. الصفحات 197-213 . doi : 10.1090/dimacs/059/10 . ISBN   9780821828922. S2CID 2221596 . 
  3. هرومكوفيتش، يوراي (2004). الخوارزميات للمسائل الصعبة . سبرينغر إنترناشونال بابليشينغ إيه جي.
  4. غوزمان، جون بول؛ ليموانكو، تيريزيتا (2017). "نهج تجريبي لتحليل الخوارزميات يؤدي إلى تقريبات لتعقيد الوقت في Big Theta" (ملف PDF) . مجلة البرمجيات . 12 (12).
  5. ماكجيوخ، كاثرين (2012). دليل الخوارزميات التجريبية . مطبعة جامعة كامبريدج. ISBN 978-1-107-00173-2.
  6. ^ كوبا ، إميليو. ديميتريسكو، كاميل؛ فينوكتشي، ايرين (2014). "التوصيف الحساس للإدخال" . معاملات IEEE في هندسة البرمجيات . 40 (12): 1185-1205 . سايتسيركس 10.1.1.707.4347 . دوى : 10.1109/TSE.2014.2339825 . 
  7. موريه، برنارد إم إي؛ بادر، ديفيد أ.؛ وارنو، تاندي (2002). "هندسة الخوارزميات عالية الأداء لعلم الوراثة الحاسوبي" (ملف PDF) . مجلة الحوسبة الفائقة . 22 (1): 99-111 . doi : 10.1023/a:1014362705613 . S2CID 614550 . 
  8. زابارانوكس، ديميتريس؛ هاوسويرث، ماتياس (2012). تحليل الأداء الخوارزمي . المؤتمر الثالث والثلاثون لجمعية ACM SIGPLAN حول تصميم لغات البرمجة وتنفيذها . مكتبة ACM الرقمية. الصفحات 67-76 . CiteSeerX 10.1.1.459.4913 .  
  9. "حول الخوارزميات التجريبية: مقابلة مع كاثرين ماكجيوخ وبرنارد موريه" . مجلة Ubiquity . أغسطس 2011. مكتبة ACM الرقمية. 2011.
  10. ^ جرزيجورز ، ميريك (2018). "الغموض الكبير" . كود الأداء_.
  11. كولكر، جوناس (2009). "متى تفشل صيغة Big-O؟" . ستاك أوفرفلو .
  12. ليمير، دانيال (2013). "ترميز Big-O والأداء في العالم الحقيقي" . ووردبريس.
  13. "تحديد نقاط الاختناق في التطبيق" . مساعدة dotTrace 2018.1 . JetBrains. 2018.
  14. شميتزر، شاي (2005). "تحديد نقاط الاختناق في التعليمات البرمجية باستخدام محلل الأحداث" . وثائق JDeveloper لشبكة أوراكل التقنية . شركة أوراكل.
  15. شين، دو؛ بوشيفانيك، دينيس؛ لو، تشي؛ غريتشانيك، مارك (2015). "أتمتة اكتشاف اختناقات الأداء باستخدام تحليل التطبيقات القائم على البحث" (ملف PDF) . وقائع الندوة الدولية لعام 2015 حول اختبار البرمجيات وتحليلها . مكتبة ACM الرقمية. الصفحات 270-281 . doi : 10.1145/2771783.2771816 . ISBN  9781450336208. S2CID 8625903 . 
  16. "تحليل الأداء والذاكرة وتغطية التعليمات البرمجية" . مركز تعلم التحليل . شركة سمارت بير للبرمجيات. 2018.
  17. جانسن، ثوربن (2017). "11 نصيحة بسيطة لتحسين أداء جافا" . نصائح وحيل وموارد للمطورين على Stackify .
  18. أوسوليفان، برايان؛ ستيوارت، دون؛ غورزن، جون (2008). "25. تحديد الخصائص وتحسين الأداء" . هاسكل في العالم الحقيقي . دار نشر أورايلي ميديا.
  19. ليندن، دوغ (2007). "تحليل الأداء والتحسين" . ويكي سكند لايف.
  20. باتيس، ريتشارد إي. (2007). "تحليل الخوارزميات، البرمجة المتقدمة/التطبيق العملي، 15-200" . كلية علوم الحاسوب، جامعة كارنيجي ميلون.
  21. ويكهام، هادلي (2014). "تحسين الكود" . لغة البرمجة المتقدمة R. تشابمان وهال/سي آر سي.
  22. ^ سالز ريتش (1991). "wildmat.c" . جيثب .
  23. كانتاتوري، أليساندرو (2003). "خوارزميات مطابقة الأحرف البديلة" .
  24. كراوس، كيرك (2008). "مطابقة الأحرف البديلة: خوارزمية" . مجلة دكتور دوبز .
  25. كراوس، كيرك (2014). "مطابقة الأحرف البديلة: طريقة تجريبية لترويض خوارزمية" . مجلة دكتور دوبز .
  26. كراوس، كيرك (2018). "مطابقة الأحرف البديلة: خوارزمية محسّنة للبيانات الضخمة" . التطوير من أجل الأداء.
  27. غريهان، ريك (2005). "محللات أداء التعليمات البرمجية: اختيار أداة لتحليل الأداء" (ملف PDF) . شركة فريسكيل لأشباه الموصلات.أما إذا كنت بحاجة، من ناحية أخرى، إلى تتبع التعليمات البرمجية الخاصة بك بدقة متناهية، وضبط تعليمات الآلة الفردية بدقة، فلا يمكن التغلب على محلل الأداء النشط المزود بخاصية عد الدورات.
  28. هوف، ريتشارد؛ وآخرون (2006). "تقييم أداء البنية الدقيقة على مستوى الدورة". وقائع ورشة عمل حول الهندسة المعمارية الاستبطانية . معهد جورجيا للتكنولوجيا. CiteSeerX 10.1.1.395.9306 .  
  29. خامباريا، أديتيا؛ بانو، سايرة (2013). تحليل البرامج باستخدام أدوات القياس الديناميكية وأدوات الأداء . المؤتمر الدولي لمعهد مهندسي الكهرباء والإلكترونيات حول الاتجاهات الناشئة في الحوسبة والاتصالات وتكنولوجيا النانو . مكتبة IEEE Xplore الرقمية.
  30. ^ جاسكوفسكي، فويتشخ؛ ليسكوفسكي، باول. زوبيرت، مارسين جريزيجورز؛ كرافيك، كرزيستوف (2016). “ملف تعريف الأداء: طريقة تقييم الأداء متعدد المعايير للمشاكل القائمة على الاختبار” (PDF) . الرياضيات التطبيقية وعلوم الكمبيوتر . 26 . دي جروتر: 216.