תורת החישוביות/כריעות שפות/רדוקציה חישובית: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
תכונות |
מ ←משפט הרדוקציה: הגהה, עיצוב |
||
שורה 57:
==משפט הרדוקציה==
אם <math>L_1, L_2</math> שפות מעל <math>\Sigma</math> כך שקיימת רדוקציה <math>L_1 \le L_2</math> אזי:
# <div class="mw-content-ltr"><math>L_2 \in R \Rightarrow L_1 \in R</math></div>
# <div class="mw-content-ltr"><math>L_2 \in RE \Rightarrow L_1 \in RE</math></div>
# <div class="mw-content-ltr"><math>L_2 \in coRE \Rightarrow L_1 \in coRE</math></div>
במילים אחרות, אם השפה <math>L_2</math> שייכת למחלקה כלשהי, גם השפה <math>L_1</math> שייכת לאותה מחלקה. באופן אינטואיטיבי, העובדה
{{הוכחה|
נניח שקיימת רדוקציה f מ־<math>L_1</math> ל־<math>L_2</math> והיא ניתנת לחישוב ע״י מ״ט <math>M_f</math>.
שורה 68:
:על קלט x, המכונה <math>M_1</math> מריצה את <math>M_f</math> (הפיכת הקלט x לקלט שמתאים ל־<math>L_2</math>), ומריצה את <math>M_2</math> על הקלט המומר. המכונה מחזירה את אותה התשובה שהחזירה <math>M_2</math> על הקלט המומר.
בגלל ש־f פונקציה מלאה, חישוב <math>f(x)</math> יסתיים לכל קלט x, ובגלל ש־<math>M_2</math> מכריעה (כלומר, עוצרת על כל קלט) גם המכונה <math>M_1</math> עוצרת לבסוף על כל קלט. כמו כן, f <u>תקפה</u>, כלומר <math>x\in L_1</math> אם״ם <math>f(x)\in L_2</math>.
ההוכחות עבור סעיפים 2 ו־3 דומות להוכחה לעיל. במקרה זה ייתכן ש־<math>M_2</math> לא עוצרת על קלטים מסויימים, וגם <math>M_1</math> לא תעצור על אותם הקלטים. אבל אלו יהיו בדיוק הקלטים עליהם מותר ל־<math>M_1</math> לא לעצור, לפי ההגדרה המתאימה של RE
===משפט הרדוקציה – ההפכי===
אם נביט במשפט ההפכי למשפט הרדוקציה לעיל, נקבל את המשפט הבא:
#<div class="mw-content-ltr"><math>L_1 \notin R \; \Rightarrow\; L_2 \notin R</math></div>
#<div class="mw-content-ltr"><math>L_1 \notin RE \; \Rightarrow\; L_2 \notin RE</math></div>
#<div class="mw-content-ltr"><math>L_1 \notin coRE \; \Rightarrow\; L_2 \notin coRE</math></div>
הסבר: נניח ש־<math>L_1\notin R</math>. אם <math>L_2\in R</math> נובע ממשפט הרדוקציה שהוכחנו לעיל שגם <math>L_1\in R</math>, וזו סתירה.
משפט זה שימושי ביותר להראות ששפות אינן כריעות. מספיק
|