ما هي الاختلافات بين التنفيذ الرمزي وحل السبت?
-
29-09-2020 - |
سؤال
ما أفهمه هو أن التنفيذ الرمزي يتعامل فقط مع مسارات محددة وأنماط سيئة ، في حين أن حلول السبت ، أو نظريات مودولو مرضية بشكل عام ، وتوفير تحليل أكثر قوة بكثير من البرنامج.
يمكن للشخص التحقق من صحة البيان أعلاه و (باختصار) شرح الاختلافات بين هذه المنهجيات التحقق الرسمية اثنين?
المحلول
ليرة تركية ؛ دكتور: وهي تختلف في المدخلات والمخرجات الأساسية.سات و سمت يحلون لا يعرفون ما هي البرامج;إنها أدوات تجيب بنعم أو لا أسئلة حول الصيغ الرياضية.التنفيذ الرمزي ، من ناحية أخرى ، هو طريقة لتحليل البرامج.عادة ما يعتمد التنفيذ الرمزي على حلول سات و سمت،ولكن ليس العكس.
سات و سمت يحلون ليس لديك أي علاقة مباشرة بالبرامج.بدلا من ذلك ، سبت أو سمت حلالا يأخذ كمدخل وصف رياضيا "صيغة" ، والأجوبة ، تقريبا ، سواء كان صحيحا أو خطأ.(غالبا ما يسمح بخيار ثالث, غير معروف, ، للحالات التي يكون فيها المحلل غير قادر على معرفة إجابة.)
على سبيل المثال ، إدخال ممكن إلى حلالا السبت هو (a and not b) or (not a and c)
.أي أنها صيغة رياضية ، حيث a
, b
, ، و c
فيما يلي ثوابت منطقية (0 أو 1).من المفترض أن يقرر حلالا السبت ما إذا كان من الممكن أن تكون الصيغة صحيحة ، عن طريق اختيار قيم a
, b
, ، و c
.يحلون سمت متشابهة ، ولكن a
, b
, ، و c
سيتم استبداله بصيغ أكثر تعقيدا باستخدام الأعداد الصحيحة والسلاسل والوظائف وما إلى ذلك.، على سبيل المثال x + 3 = y^2
.
تنفيذ رمزي هو وسيلة نزوة لتشغيل البرنامج ، ولكن ليس كيف كان المقصود من البرنامج ليتم تشغيلها.بدلا من ذلك ، يتم تشغيل البرنامج باستخدام ما يسمى بالقيم "الرمزية" ، والتي تشبه العناصر النائبة.للحصول على مثال على ما يعنيه ذلك ، افترض أن لدي وظيفة مثل f(x) = if x > 0 then 1 else 0
.الآن ، عادة ، وأود أن تشغيل البرنامج عن طريق إدخال ، ويقول, 3
, ، والحصول على f(3) = 1
, ، منذ 3
أكبر من 0
.مع التنفيذ الرمزي ، أقوم بتشغيل البرنامج عن طريق إدخال متغير عنصر نائب, input
, ، وأنا تقييم البرنامج للحصول على حالتين:إما input > 0 and answer = 1
أو input <= 0 and answer = 0
.قد يبدو هذا عديم الفائدة ، لكنه ينتهي به الأمر إلى أن يكون وسيلة قوية لتحليل البرامج.
العلاقة بين الاثنين هو أن التنفيذ الرمزي غالبا ما يعتمد على حل سمت أثناء التنفيذ ، لمعرفة ما إذا كان مسار معين هو ممكن في الواقع ، أو إذا كان ينبغي تجاهلها.على سبيل المثال ، يمكن استخدام حلالا سمت لتحديد ما إذا كان input <= 0 and answer = 0
ممكن (الجواب نعم ، على سبيل المثال إذا input = 0
).وبهذه الطريقة ، سمت هو نوع من" القوة الدافعة " وراء ما يجعل التنفيذ الرمزي ممكنا.