تحليل الإنهاء
دالة f ( n ): طالما n > 1 : إذا كان n % 2 == 0 : n = n / 2 وإلا : n = 3 * n + 1 |
| اعتبارًا من عام 2026، لا يزال من غير المعروف ما إذا كان برنامج بايثون هذا ينتهي لكل إدخال عدد صحيح؛ انظر تخمين كولاتز . |
في علم الحاسوب ، يُعد تحليل الإنهاء تحليلاً للبرنامج يهدف إلى تحديد ما إذا كان تقييم برنامج معين يتوقف عند كل مُدخل. وهذا يعني تحديد ما إذا كان البرنامج المُدخل يُحسب دالة كاملة .
يرتبط هذا ارتباطًا وثيقًا بمشكلة التوقف ، وهي تحديد ما إذا كان برنامج معين سيتوقف عند إدخال معين ، وهي مشكلة غير قابلة للحسم . يُعد تحليل الإنهاء أكثر صعوبة من مشكلة التوقف: ففي نموذج آلات تورينج ، كنموذج للبرامج التي تُنفذ وظائف قابلة للحساب، يهدف تحليل الإنهاء إلى تحديد ما إذا كانت آلة تورينج معينة هي آلة تورينج كلية ، وهذه المشكلة على مستوىمن التسلسل الهرمي الحسابي، وبالتالي فهو أصعب بكثير من مشكلة التوقف.
الآن بما أن السؤال عما إذا كانت الدالة القابلة للحساب كلية ليس شبه قابل للتقرير ، [ 1 ] فإن كل محلل إنهاء سليم (أي لا يتم إعطاء إجابة إيجابية لبرنامج غير منتهٍ) يكون غير مكتمل ، أي يجب أن يفشل في تحديد الإنهاء لعدد لا نهائي من البرامج المنتهية، إما عن طريق التشغيل إلى الأبد أو التوقف بإجابة غير محددة.
مقاوم للإنهاء
يُعد برهان الإنهاء نوعًا من البراهين الرياضية التي تلعب دورًا حاسمًا في التحقق الرسمي لأن الصحة الكاملة للخوارزمية تعتمد على الإنهاء .
تتضمن إحدى الطرق العامة والبسيطة لبناء براهين الإنهاء ربط مقياس بكل خطوة من خطوات الخوارزمية. يُستمد هذا المقياس من نطاق علاقة راسخة ، مثل الأعداد الترتيبية . إذا "انخفض" المقياس وفقًا لهذه العلاقة في كل خطوة ممكنة من خطوات الخوارزمية، فلا بد أن تنتهي الخوارزمية، لأنه لا توجد سلاسل تنازلية لانهائية بالنسبة لعلاقة راسخة.
يمكن لبعض أنواع تحليل الإنهاء أن تولد تلقائيًا أو تشير ضمنيًا إلى وجود دليل على الإنهاء.
مثال
من الأمثلة على بنية لغات البرمجة التي قد تنتهي أو لا تنتهي الحلقة ، إذ يمكن تشغيلها بشكل متكرر. أما الحلقات التي تُنفذ باستخدام متغير عداد ، كما هو شائع في خوارزميات معالجة البيانات، فعادةً ما تنتهي، كما يوضح مثال الشفرة الزائفة أدناه:
i := 0 كرر حتى i = SIZE_OF_DATA process_data(data[i])) // معالجة جزء البيانات في الموضع i i := i + 1 // الانتقال إلى جزء البيانات التالي المراد معالجته
إذا كانت قيمة SIZE_OF_DATA غير سالبة وثابتة ومحدودة، فستنتهي الحلقة في النهاية، بافتراض أن process_data تنتهي أيضًا.
يمكن إثبات أن بعض الحلقات تنتهي دائمًا أو لا تنتهي أبدًا من خلال الفحص البشري. على سبيل المثال، الحلقة التالية، نظريًا، لن تتوقف أبدًا. ومع ذلك، قد تتوقف عند تنفيذها على جهاز فعلي بسبب تجاوز سعة الحساب : إما مما يؤدي إلى استثناء أو يتسبب في التفاف العداد إلى قيمة سالبة، مما يسمح بتحقيق شرط الحلقة.
i := 1 كرر حتى i = 0 i := i + 1
في تحليل الإنهاء، يمكن أيضًا محاولة تحديد سلوك إنهاء برنامج ما بناءً على مدخلات غير معروفة. يوضح المثال التالي هذه المشكلة.
i := 1 كرر حتى i = غير معروف i := i + 1
هنا، يُعرَّف شرط الحلقة باستخدام قيمة غير معروفة (UNKNOWN)، حيث تكون قيمة هذه القيمة غير معروفة (على سبيل المثال، يتم تحديدها من خلال إدخال المستخدم عند تنفيذ البرنامج). يجب أن يأخذ تحليل الإنهاء في الاعتبار جميع القيم الممكنة لـ UNKNOWN، وأن يكتشف أنه في حالة UNKNOWN = 0 (كما في المثال الأصلي)، لا يمكن إظهار الإنهاء.
مع ذلك، لا توجد طريقة عامة لتحديد ما إذا كان تعبير يتضمن تعليمات تكرارية سيتوقف، حتى عند تكليف البشر بفحصه. والسبب النظري لذلك هو عدم إمكانية حسم مشكلة التوقف: إذ لا يمكن أن توجد خوارزمية تحدد ما إذا كان أي برنامج معين سيتوقف بعد عدد محدود من خطوات الحساب.
عمليًا، يصعب إثبات إنهاء البرنامج (أو عدم إنهائه) لأن كل خوارزمية تعمل بمجموعة محدودة من الطرق القادرة على استخلاص المعلومات ذات الصلة من برنامج معين. قد تنظر إحدى الطرق في كيفية تغير المتغيرات بالنسبة لشرط معين في حلقة تكرارية (مما قد يُظهر إنهاء تلك الحلقة)، بينما قد تحاول طرق أخرى تحويل حسابات البرنامج إلى بنية رياضية والعمل عليها، وربما استخلاص معلومات حول سلوك الإنهاء من بعض خصائص هذا النموذج الرياضي. ولكن نظرًا لأن كل طريقة لا تستطيع "رؤية" سوى أسباب محددة للإنهاء (أو عدمه)، فإنه حتى من خلال الجمع بين هذه الطرق، لا يمكن تغطية جميع الأسباب المحتملة للإنهاء (أو عدمه).
الدوال التكرارية والحلقات متكافئة في التعبير؛ أي تعبير يتضمن حلقات يمكن كتابته باستخدام التكرار، والعكس صحيح. لذا، فإن إنهاء التعبيرات التكرارية غير قابل للتقرير بشكل عام. يمكن إثبات أن معظم التعبيرات التكرارية الشائعة الاستخدام (أي غير الشاذة ) تنتهي بوسائل مختلفة، تعتمد عادةً على تعريف التعبير نفسه. على سبيل المثال، سينقص وسيط الدالة في التعبير التكراري لدالة المضروب أدناه بمقدار 1 دائمًا؛ وبفضل خاصية الترتيب الجيد للأعداد الطبيعية ، سيصل الوسيط في النهاية إلى 1، وبالتالي سينتهي التكرار.
دالة حساب المضروب (الوسيط كعدد طبيعي) إذا كان الوسيط = 0 أو الوسيط = 1 ، تُرجع 1، وإلا تُرجع الوسيط * مضروب(الوسيط - 1)
الأنواع التابعة
يُعدّ التحقق من الإنهاء بالغ الأهمية في لغات البرمجة ذات الأنواع المعتمدة وأنظمة إثبات النظريات مثل Rocq و Agda . تستخدم هذه الأنظمة تماثل كاري-هاورد بين البرامج والبراهين. تقليديًا، كانت البراهين على أنواع البيانات المُعرّفة استقرائيًا تُوصف باستخدام مبادئ الاستقراء. مع ذلك، تبيّن لاحقًا أن وصف البرنامج عبر دالة مُعرّفة تكراريًا مع مطابقة الأنماط يُعدّ طريقةً أكثر طبيعيةً للإثبات من استخدام مبادئ الاستقراء مباشرةً. لسوء الحظ، يؤدي السماح بالتعريفات غير المنتهية إلى تناقض منطقي في نظريات الأنواع ، ولهذا السبب تتضمن Agda وRocq أدوات تحقق من الإنهاء مُدمجة.
أنواع بأحجام مختلفة
إحدى طرق التحقق من الإنهاء في لغات البرمجة المعتمدة على الأنواع هي الأنواع المُصغَّرة. الفكرة الأساسية هي إضافة تعليقات توضيحية للأنواع التي يمكننا استدعاء الدوال عليها بشكل متكرر، والسماح بالاستدعاءات المتكررة فقط على الوسائط الأصغر. تُطبَّق الأنواع المُصغَّرة في لغة أغدا كامتداد نحوي.
البحوث الحالية
هناك العديد من فرق البحث التي تعمل على تطوير أساليب جديدة لكشف حالات إنهاء البرامج (أو عدم إنهائها). يدمج العديد من الباحثين هذه الأساليب في برامج [ 2 ] تحاول تحليل سلوك الإنهاء تلقائيًا (دون تدخل بشري). يتمثل أحد جوانب البحث المستمرة في تمكين استخدام الأساليب الحالية لتحليل سلوك إنهاء البرامج المكتوبة بلغات برمجة "واقعية". بالنسبة للغات التصريحية مثل هاسكل وميركوري وبرولوج ، توجد نتائج عديدة [ 3 ] [ 4 ] [ 5 ] (وذلك أساسًا بسبب الأساس الرياضي المتين لهذه اللغات). كما يعمل مجتمع البحث على تطوير أساليب جديدة لتحليل سلوك إنهاء البرامج المكتوبة بلغات إجرائية مثل سي وجافا.
انظر أيضاً
- تحليل التعقيد - مشكلة تقدير الوقت اللازم للإنهاء
- نسخة الحلقة
- البرمجة الوظيفية الكاملة - نموذج برمجي يقصر نطاق البرامج على تلك التي يمكن إثبات أنها تنتهي.
- تكرار والتر
- مبدأ إنهاء تغيير الحجم
مراجع
- ↑ روجرز الابن، هارتلي (1988). نظرية الدوال التكرارية والحوسبة الفعالة . كامبريدج (ماساتشوستس)، لندن (إنجلترا): مطبعة معهد ماساتشوستس للتكنولوجيا. ص 476. ISBN 0-262-68052-1.
- ↑ "التصنيف: أدوات - Termination-Portal.org" . termination-portal.org .
- ↑ جيسل، ج.؛ سويدرسكي، س.؛ شنايدر-كامب، ب.؛ ثيمان، ر.؛ بفينينغ، ف. (محررون). تحليل الإنهاء الآلي للغة هاسكل: من إعادة كتابة المصطلحات إلى لغات البرمجة (محاضرة مدعوة) (ملحق) . إعادة كتابة المصطلحات وتطبيقاتها، المؤتمر الدولي السابع عشر، RTA-06. سلسلة محاضرات في علوم الحاسوب. المجلد 4098. الصفحات 297-312 . (الرابط: springerlink.com ).
- ↑ خيارات المُترجم لتحليل الإنهاء في ميركوري
- ↑ نغوين، مان ثانغ؛ جيسل، يورغن؛ شنايدر-كامب، بيتر؛ دي شري، داني. "تحليل إنهاء البرامج المنطقية بناءً على مخططات التبعية" ( ملف PDF) . verify.rwth-aachen.de
تشمل الأبحاث المتعلقة بتحليل إنهاء البرامج الآلي ما يلي:
- كريستوف والتر (1988). "الخوارزميات المحدودة بالوسائط كأساس لإثباتات الإنهاء الآلية". وقائع المؤتمر التاسع حول الاستدلال الآلي . سلسلة محاضرات في الذكاء الاصطناعي. المجلد 310. سبرينغر. الصفحات 602-621 .
- كريستوف والتر (1991). "حول إثبات إنهاء الخوارزميات بواسطة الآلة" . الذكاء الاصطناعي . 70 (1).
- شي، هونغوي (1998). "نحو إثباتات إنهاء آلية من خلال التجميد " (ملف PDF) . في توبياس نيبكو (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي التاسع، RTA-98 . سلسلة محاضرات في علوم الحاسوب. المجلد 1379. سبرينغر. الصفحات 271-285 .
- يورغن جيزل؛ كريستوف فالتر؛ يورغن براوبورغر (1998). "تحليل الإنهاء للبرامج الوظيفية". في: دبليو. بيبل؛ بي. شميت (محرران). الاستدلال الآلي - أساس للتطبيقات (ملحق) . المجلد 3. دوردريخت: دار كلوير الأكاديمية للنشر. الصفحات 135-164 .
- كريستوف والتر (2000). "معايير الإنهاء". في: س. هولدوبلر (محرر). العقلانية والمنطق الحسابي (ملحق) . دوردريخت: دار كلوير الأكاديمية للنشر. ص 361-386 .
- كريستوف والتر؛ ستيفان شفايتزر (2005). "تحليل الإنهاء الآلي للبرامج غير المعرّفة بالكامل" (ملف PDF) . في: فرانز بادر؛ أندريه فورونكوف (محرران). وقائع المؤتمر الدولي الحادي عشر حول المنطق للبرمجة والذكاء الاصطناعي والاستدلال (LPAR) . سلسلة محاضرات في الذكاء الاصطناعي. المجلد 3452. سبرينغر. الصفحات 332-346 .
- آدم كوبروفسكي؛ يوهانس والدمان (2008). "إنهاء القطب الشمالي ... تحت الصفر". في أندريه فورونكوف (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي التاسع عشر، RTA-08 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 5117. سبرينغر. الصفحات 202-216 . ISBN 978-3-540-70588-8.
تتضمن أوصاف أنظمة أدوات تحليل الإنهاء الآلي ما يلي:
- جيزل، ج. (1995). "توليد ترتيبات متعددة الحدود لإثباتات الإنهاء (وصف النظام)". في: هسيانغ، جيه (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي السادس، RTA-95 (ملحق) . سلسلة محاضرات في علوم الحاسوب. المجلد 914. سبرينغر. الصفحات 426-431 .
- أوهليبوش، إي.؛ كلافيس، سي.؛ مارشيه، سي. (2000). "TALP: أداة لتحليل إنهاء البرامج المنطقية (وصف النظام)". في: باخماير، ليو (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي الحادي عشر، RTA-00 (مكتوب بصيغة بوستسكريبت مضغوطة) . سلسلة محاضرات في علوم الحاسوب. المجلد 1833. سبرينغر. الصفحات 270-273 .
- هيروكاوا، ن.؛ ميدلدورب، أ. (2003). "أداة إنهاء تسوكوبا (وصف النظام)". في نيوفينهاوس، ر. (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي الرابع عشر، RTA-03 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 2706. سبرينغر. الصفحات 311-320 .
- جيزل، ج.؛ ثيمان، ر.؛ شنايدر-كامب، ب.؛ فالك، س. (2004). "براهين الإنهاء الآلية باستخدام AProVE (وصف النظام)". في فان أوستروم، ف. (محرر). تقنيات إعادة الكتابة وتطبيقاتها، المؤتمر الدولي الخامس عشر، RTA-04 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 3091. سبرينغر. الصفحات 210-220 . ISBN 3-540-22153-0.
- هيروكاوا، ن.؛ ميدلدورب، أ. (2005). "أداة إنهاء تيرول (وصف النظام)". في جيسل، ج. (محرر). إعادة كتابة المصطلحات وتطبيقاتها، المؤتمر الدولي السادس عشر، RTA-05 . سلسلة محاضرات في علوم الحاسوب. المجلد 3467. سبرينغر. الصفحات 175-184 . ISBN 978-3-540-25596-3.
- كوبروفسكي، أ. (2006). "TPA: إثبات الإنهاء تلقائيًا (وصف النظام)". في: بفينينغ، ف. (محرر). إعادة كتابة المصطلحات وتطبيقاتها، المؤتمر الدولي السابع عشر، RTA-06 . سلسلة محاضرات في علوم الحاسوب. المجلد 4098. سبرينغر. الصفحات 257-266 .
- مارشيه، سي.؛ زانتيما، هـ. (2007). "منافسة الإنهاء (وصف النظام)". في: بادر، ف. (محرر). إعادة كتابة المصطلحات وتطبيقاتها، المؤتمر الدولي الثامن عشر، RTA-07 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 4533. سبرينغر. الصفحات 303-313 .
روابط خارجية
- تحليل إنهاء البرامج الوظيفية ذات الرتبة العليا
- قائمة بريدية لأدوات الإنهاء
- إنهاء المنافسة - انظر مارشيه، زانتيما (2007) للاطلاع على وصف
- بوابة الإنهاء
- تحليل البرامج الثابتة
