مسألة توقف

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث

مسألة التوقف في نظرية الحاسوبية هي كالتالي: "معطى وصف برنامج حاسوبي قرر اذا ما البرنامج يتوقف أو لا يتوقف" , مسألة مشابهة ومتكافئة هي اذا كان بالإضافة للبرنامج كان هنالك مدخل والمسألة هي تحديد اذا ما البرنامج سوف يتوقف عندما نشغله مع المدخل أو لن يتوقف.

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

استخدامات عملية[عدل]

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

فللنظر للبرنامج التالي:

while(true) continue;

هذا البرنامج لن يتوقف ابدا بينما البرنامج:

x=1;x+1;print(x);

سوف يتوقف بسرعة. هذا الامر قد يكون واضحا في هذين البرنامجين فاذا كان البرنامج أكثر تعقيدا هكذا صعب ان يعرف أيتوقف ام لا.

تيورنج برهن أنه لا يمكن ان يكون هنالك خوارزمية تحدد هل البرنامج يتوقف، وقد بين تيورنج ان مثل هذه الخوارزمية اذا وجدت فانها تناقض نفسها ولذا لا يمكن ان تكون موجودة.

اهمية المسألة[عدل]

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

لعل احد التعميمات لنتيجة ان مسألة التوقف غير قابلة للتقرير هو قانون رايز، والذي نصه: "كل صفة ليست بديهية للدوال الجزئية التي يمكن تنفيذها بواسطة برامج لا يمكن تقريرها". القصد من التعبير "صفة ليست بديهية" معناه أن مجموعة الدوال الجزئية التي تحقق الصفة هي ليست كل الدوال الجزئية كما انه يجب ان يكون هنالك دالة واحدة على الاقل التي تحقق الصفة. مثال: الصفة: "التوقف على المدخل 0 " نلاحظ أن ليس كل الدوال تتوقف على المدخل 0 كما انه يوجد دوال تتوقف على 0 لذا فان هذه الصفة ليست بديهية لذا فهي غير قابلة للتقرير. ويجب الانتباه بأن قانون رايز لا يتحقق اذا كانت الصفة ليست للدوال الجزئية التي يمكن تنفيذها بواسطة برنامج ولكن الصفة أيضا متعلقة بالبرنامج مثل: "التوقف على المدخل 0 خلال 100 خطوة حساب" , نلاحظ ان هذه ليست صفة للدوال الجزئية فقط وانما أيضا للبرنامج وهذه المسألة يمكن تقريرها (ببساطة ننفذ البرنامج خلال 100 خطوة عندما المدخل يكون 0 اذا توقف البرنامج المخرج يكون "نعم" وخلاف هذا الاجابة "لا").

التعريف بواسطة مجموعة[عدل]

الشكل الاعتيادي لمسائل التقرير يكون على شكل مجموعة من الاشياء التي تحقق السؤال. مجموعة التوقف (halting set) هي:

{البرنامج i سوف يتوقف في حين أن x هو المدخل للبرنامج |(K:= {(i,x

وهذه المجموعة تمثل مسألة التوقف وهي مجموعة مجموعة مرقمة بشكل تراجعي اي انه يوجد دالة قابلة للحساب التي تعدد كل زوج (i,x) ولكن المجموعة المكملة غير قابلة للترقيم أو التعداد.

يوجد الكثير من المسائل التي هي اعادة صياغة لمسألة التوقف حيث أن كل مسألة يوجد لها نفس درجة تيورنج هي كذلك. امثلة لمجموعات كهذه منها:

  • { i | برنامج i سوف يتوقف عندما نشغله مع المدخل 0 }
  • { i | يوجد مدخل x بحيث أن البرنامج i سوف يتوقف على المدخل x }.

مسألة التوقف غير قابلة للتقرير[عدل]

لعل ابرز النتائج في علم الحاسوب والرياضيات في القرن العشرين هو أن هذه المسألة غير قابلة للتقرير، والبرهان الذي اعتمده تيورنج شبيه إلى حد بعيد الوسيلة التي استخدمها كانتور ليبين أن  \mathbb{R} هي مجموعة لانهائية غير قابلة للعد، والوسيلة هي "القطرية" (diagonalization).

نص المبرهنة[عدل]

المبرهنة نصها كالتالي: " مسألة التوقف غير قابلة للتقرير " أو " \mbox{H}_{\mbox{TM}}=\{ \left \langle \mbox{M,x}\right \rangle | \mbox{M is a program that halts on input x}  \} هي مجموعة غير قابلة للتقرير ".

البرهان[عدل]

البرهان سوف يكون عن طريق التناقض: فلنفرض أنه يوجد برنامج HALTS والذي مدخله برنامج M ومدخل للبرنامج x. وهذا البرنامج مخرجه "نعم" اذا M تتوقف على المدخل x والجواب "لا" خلاف هذا. نبني برنامج جديد NEWHALTS والذي مدخله برنامج M والجواب نعم اذا ما البرنامج M يتوقف عندما يكون المدخل M.

procedure NEWHALTS(M);
  if HALTS(M,M) then writeln('Yes');
  else writeln('No');

والان نعرف برنامج اخر الذي هو OPP كالتالي:

procedure OPP(P);
  if NEWHALTS(P) outputs 'Yes' then
    loop forever
  else halt;

هذا البرنامج يعكس نتيجة NEWHALTS , الان ماذا يحدث مع (OPP(OPP?

  • داخل (OPP(OPP يستدعي (NEWHALTS(OPP والذي يستدعي (HALTS(OPP,OPP حينها:
    • اذا OPP يتوقف على المدخل OPP حينها (OPP(OPP لن يتوقف؛
    • اذا OPP يتوقف على المدخل OPP حينها (OPP(OPP يتوقف.

اذا (OPP(OPP لا يمكن ان يتوقف ولا يمكن ان لا يتوقف. لذا فإن هذا تناقض. والفرضية الوحيدة هي أن HALTS موجود ! لذا فانه لا يمكن ان يكون موجودا.

انظر أيضا[عدل]

مراجع[عدل]