תורת החישוביות/סיבוכיות קולמוגורוב: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
Atavory (שיחה | תרומות)
מעבר ממ"ט לתוכניות, הגהה
שורה 7:
אינטואיטיבית, המחרוזת הראשונה בעלת חוקיות ברורה ואילו השניה נראית "אקראית" וחסרת חוקיות, אולם כיצד אפשר להגדיר זאת בצורה מדוייקת? נשים לב שאפשר לתאר כיצד לייצר את המחרוזת הראשונה בצורה קצרה: "כתוב את הרצף '01' 20 פעמים", אך את ייצור המחרוזת השנייה כנראה שנצטרך לתאר פחות-או-יותר בעזרת תוכנה: "כתוב את הרצף 0011010010001000010111011110101010100101".
 
בפרק זה נגדיר במדויק את הרעיון הנ״ל תוך שימוש ב[[תורת_החישוביות/מכונת טיורינג|מכונות טיורינג]]. ב[[#הגדרות|הגדרות]] נגדיר את {{וק|סיבוכיות קולמוגורוב|סיבוכיות הקולמוגורוב}} של מחרוזת כאורך הקצר ביותר של מ"טתוכנית המייצרת אותה. רעיון זה של סיבוכיות קולמוגורוב מקשר בין תחום החישוביות לתחומים אחרים, כגון {{וק|תורת האינפורמציה|תורת האינפורמציה}}, ויש לו מספר שימושים. ב[[#אי-חישוביות פונקציית הסיבוכיות|אי-חישוביות פונקציית הסיבוכיות]] נראה שאי אפשר לחשב אותה בעזרת מחשב. ב[[#אי-דחיסות מחרוזות|אי-דחיסות מחרוזות]] נראש שלמרות שאי אפשר לחשב את סיבוכיות הקולמוגורוב של אף מחרוזת, אפשר להראות שרוב המחרוזות אינן דחיסות, במובן זה שאין להן סיבוכיות קולמוגורוב קצרה. [[#כלל השרשרת לסיבוכיות|כלל השרשרת לסיבוכיות]] נדון בסיבוכיות המותנה של מחרוזת, דהיינו סיבוכיות תיאור מחרוזת בהנחה שמחרוזת אחרת כבר ידועה.
 
בפרק [[תורת החישוביות/סיבוכיות קולמוגורוב/יישומי אי-דחיסות|יישומי אי-דחיסות]] נראה יישום של סיבוכיות קולמוגורוב. כאמור, אפשר להראות שלרוב המחרוזות אין סיבוכיות קולמוגורוב קצרה, ונראה יישומים קומבינטוריים שונים של רעיון זה. בפרק [[תורת החישוביות/סיבוכיות קולמוגורוב/הסתברות אוניברסאלית|הסתברות אוניברסאלית]] נבסס הלאה את סיבוכיות קולמוגורוב כמדד לסיבוכיות מחרוזות, ונראה כיצד אפשר להשתמש בו כדי להגדיר הסתברות "אובייקטיווית" להווצרות מחרוזות.
שורה 76:
(ההוכחה מעט דומה באופייה ל[[תורת החישוביות/כריעות שפות/שפות שאינן כריעות#אי-כריעות בעיית העצירה|הוכחת אי-כריעות בעיית העצירה]].)
 
נניח על דרך השלילה שישנה מ"טתוכנית
<math>M_K</math>
המחשבת את <math>K(\cdot)</math>.
 
נגדיר מ״טתוכנית <math>M</math> בצורה הבאה. <math>M</math> מקבלת מספר חיובי <math>n</math>, ומחזירה את המחרוזת הקצרה ביותר <math>s</math> שעבורה <math>K(s) \geq n</math>. נשים לב ש<math>M</math> אכן יכולה לעשות זאת. היא מורכבת מלולאה המונה את המחרוזות בסדר לקסיקורפי (דבר שאפשר לממשו בקלות במ״ט), מקריאות ל־<math>M_K(s)</math> (שלפי הנחתנו, תמיד מסתיימות), ומהשוואה ל<math>n</math>. נגדיר את
<math>u</math>
כאורך
שורה 88:
 
 
כעת נגדיר סדרת מ"טתוכנית <math>P_i</math> (כאשר <math>i = 0, 1, 2, ,\ldots</math>) באופן הבא. <math>P_n</math> קוראת ל<math>M</math> עם פרמטר <math>n</math>
כלשהו, ומחזירה את המחרוזת המוחזרת על ידה. נשים לב שתיאור <math>P</math> דורש
<math>u + \log_{\left| \Sigma \right|}\left(n\right) + c</math>
שורה 136:
הוא
<math>\Sigma^n</math>.
מספר מ"טהתוכנית השונות באורך פחות מ<math>|x|</math>
הוא
<math>\sum_{j = 0}^{n - 1} \left|\Sigma\right|^j = \frac{\left|\Sigma\right|^{n - 1} - 1}{\left|\Sigma\right| - 1} < \Sigma^n </math>.
לכן, קומבינטורית, אין מספיק מ"טתוכנית מתאימות.
 
}}
שורה 224:
כקבוצת זוגות המחרוזות המקיימות זאת כשהמחרוזת הראשונה מבין השתיים היא <math>x</math>.
 
נשים לב שלו היינו יודעים את <math>K(x,y)</math>, אפשר היה למנות את איבריהן של <math>A</math> ו<math>A_x</math> באופן דומה לזה שעשינו במקומות אחרים בספר. כדי למנות את איברי <math>A</math>, נמנה ב[[w:סדר לקסיקוגרפי|סדר לקסיקוגרפי]] את כל מ"טה באורך לכל היותר <math>\left| \Sigma \right|^{K(x, y)}</math>.
נריץ את המכונה הראשונה צעד אחד, את 2 המכונות הראשונות כ"א 2 צעדים, את 3 המכונות הראשונות כ"א 3 צעדים, וכו'. בכל פעם שמכונה מסיימת ופולטת זוג-מופרד <math>u,z</math>, נרשום זוג זה בצד. כדי למנות את <math>A_x</math>, נתעלם מהפלטים בהם האיבר הראשון בזוג הנפלט אינו <math>x</math>.
נגדיר את המספר השלם <math>e</math> כך שיתקיים