תורת החישוביות/סיבוכיות קולמוגורוב/יישומי אי-דחיסות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

כי שראינו, אי אפשר לחשב את סיבוכיות הקולמוגורוב של סדרה ספיציפית כלשהי. מצד שני, ראינו בתת-הפרק אי דחיסות שתי תכונות מעניינות שלה:

  1. לכל אורך סדרה נתון, ישנה סדרה לא דחיסה באורך זה.
  2. רוב הסדרות אינן דחיסות בצורה משמעותית.

אלו אמירות חזקות מבחינה קומבינטורית, ובפרק זה נראה מספר יישומים שלהם. ביישום: חסמים תחתונים לסיבוכיות אלגוריתמים נראה יישום למציאת חסמים תחתונים לסיבוכיות אלגוריתמים, וביישום: אורך רצפים בסדרות בינאריות רנדומיות נראה יישום למציאת אורך הרצפים הצפויים בסדרה רנדומית.

יישום: חסמים תחתונים לסיבוכיות אלגוריתמים[עריכה]

אי-דחיסות מחרוזות משמש לעתים להוכחת חסמים תחתונים על זמני הריצה של סיבוכיות אלגוריתמים. הרעיון הכללי הוא כזה. בהנתן קלט כלשהו, מראים שאלגוריתם "יעיל מדי" הפועל עליו, מניב תיאור קצר במיוחד שלו, בסתירה לכך שלכל אורך נתון, יש לפחות מחרוזת אחת בלתי דחיסה לחלוטין.


שימוש להוכחת חסם תחתון על סיבוכיות מציאת פלינדרום[עריכה]

בעזרת סיבוכיות קולמוגורוב, אפשר להראות שסיבוכיות הכרעה האם מחרוזת היא פלינדרום ע"י מ"ט בעלת סרט יחיד היא לפחות ריבועית באורך הקלט.

נניח שקיימת מ"ט המצליחה להכריע האם קלט הוא פלינדרום. נתן לה את הקלט כאשר:

  1. היא מחרוזת באורך .
  2. היא רצף של אפסים.
  3. היא המחרוזת בהיפוך.

בעיית זיהוי הפלינדרום

היות שמדובר בפלינדרום, חייבת לזהותו ככזה.

כל תו במחרוזת רשום בתא, ויש גבול בינו לבין התא שמימינו. במהלך ריצת האלגוריתם, חוצה ראש המכונה גבול זה מספר פעמים (החציות האי-זוגיות הן לכוון ימין, והאי זוגיות לכוון שמאל). בכל פעם שנחצה הגבול, נמצאת במצב מסויים. נסמן ב את סדרת המצבים של החציות של תא . בפרט נתמקד בסדרות החציות של התווים בחלק האמצעי של המחרוזת (החלק המורכב כולו מאפסים, כלומר ).

נניח שזמן ריצת האלגוריתם הוא . בהכרח, סך כל החציות, ובפרט סך כל החציות בתוך החלק האמצעי, הוא גם כן. מעקרון שובך היונים נובע שקיים כלשהו בחלק האמצעי (כלומר ) שעבורו . כעת נראה שאפשר לתאר את לחלוטין ע"י השלשה המורכבת מ:

  1. המספר
  2. המספר
  3. הסדרה

נעשה זאת בעזרת מכונה המקבלת את השלשה הנ"ל, ובנתן מחרוזת כלשהי, מסמלצת את פעולת באופן הבא.

מעברי האלגוריתם

נניח שנתנת המחרוזת כלשהי. אם אורך המחרוזת אינו , המכונה עוצרת. אם כן, המכונה רושמת את המחרוזת, לאחריה אפסים ומתחילה לסמלץ את . הסמלוץ מתחיל כמובן כאשר ראש בתא השמאלי ביותר. בכל פעם שנחצה הגבול לכוון ימין, המכונה המסמלצת בודקת האם מצב הוא זה שרשום ב: אם לא, היא דוחה את המחרוזת, ואם כן, היא ממשיכה את הסימולציה בחצייה לכוון שמאל במצב הבא. אם לא נותרו מעברים ימינה, המכונה המסמלצת תקבל.


טענה:

המכונה המסמלצת מקבלת את ואך ורק את .


הוכחה: בהנתן קלט , המכונה המסמלצת בודקת האם מתבצעת בדיוק סדרת הפעולות שהיתה מבצעת על . היות ש- מזהה פלינדרומים, המכונה המסמלצת תקבל אם"ם .



טענה:

קיים קבוע שעבורו אפשר לתאר כל מחרוזת בעזרת תווים.


הוכחה: בהנתן השלשה, אפשר לייצר את כל המחרוזות באורך , ולבדוק איזו מחרוזת מהן מקבלת המכונה המסמלצת. כבר ראינו שזו בהכרח המחרוזת המקורית. נניח שדרושים תווים לתאר מצב של . אם כך, אפשר לתאר את המחרוזת בעזרת תווים.


אם כך קבלנו שמתקיים מצד שני ממשפט: קיום מחרוזות אי-דחיסות שראינו מקודם, בהכרח קיים שעבורו משילוב שני האי-שוויונים, נקבל .

חסם תחתון על סיבוכיות מיון מבוסס השוואות[עריכה]

בעזרת סיבוכיות קולמוגורוב אפשר להראות חסם תחתון על מיון מבוסס השוואות. הרעיון הוא שמיון יעיל מדי היה מוצא דרך לדחוס פרמוטציות מעבר למה שאפשרי קומבינטורית.

יישום: אורך רצפים בסדרות בינאריות רנדומיות[עריכה]

נניח מחרוזת בינרית שאורכה הוא . מה אורכי הרצפים של אפסים ואחדות שאפשר לצפות למצוא במחרוזת? נשתמש במשפט: אי-דחיסות משמעותית של רוב המחרוזות שראינו לעיל, לפיו רוב המחרוזות אינן דחיסות ביותר מ- קבוע כלשהו, כדי לענות על כך. מספיק שנוכיח שתכונה נובעת מכך שמחרוזת איננה דחיסה ביותר מ-, כדי שהדבר יהיה נכון לרוב המחרוזות. כזכור 99.9% מהמחרוזות אינן דחיסות ביותר מ10 תווים.



משפט:

אם מחרוזת איננה דחיסה ביותר מ- קבוע כלשהו, אז כל רצף שלה קצר מ: .


הוכחה: נניח בשלילה שיש רצף כזה, ובפרט שהמחרוזת היא מהצורה . נוכל לתאר את באופן הבא:

  1. תיאור אורך - כפי שאפשר לראות בתרגיל: סיבוכיות מספרים טבעיים תווים.
  2. תיאור - את זאת אפשר לעשות בעזרת תווים.
  3. תיאור (נשים לב שאנו יודעים היכן מסתיימת) - את זאת אפשר לעשות בעזרת תווים.
  4. תיאור איבר הרצף, כלומר "0" או "1" -את זאת אפשר לעשות בעזרת תווים.
  5. תיאור מ"ט הכותבת את , את הרצף, ולאחריה את - את זאת אפשר לעשות בעזרת תווים.

נקבל

שכמובן אינו אפשרי לערכי גדולים, מה שמראה שהסדרה דווקא דחיסה.

מחרוזת רנדומית, לכן, כנראה לא תכיל רצפים ארוכים מדי. מצד שני, היא גם לא תכיל רק רצפים קצרים מאד - גם זו תכונה שמקנה מבנה דחיס למחרוזת.


משפט:

אם מחרוזת איננה דחיסה ביותר מ- קבוע כלשהו, אז יש לה רצף ארוך יותר מ: .


הוכחה: נניח בשלילה שאין רצף כזה, ופרט שאין לה רצף אפסים כזה, ונחלק את המחרוזת ל: חלקים באורך כל אחד (נתעלם משאריות - אפשר להפוך את ההוכחה למדוייקת יותר במעט מאמץ). לפי ההנחה, כל מחרוזת כזו איננה מורכבת מרצף אפסים, ולכן יש לה רק אפשרויות. נוכל לתאר את באופן הבא:

  1. תיאור כ"א מ האפשרויות של כל אחד מ החלקים - את זאת אפשר לעשות בעזרת תווים.
  2. תיאור מ"ט הבונה את המחרוזת מהתיאורים הנ"ל - את זאת אפשר לעשות בעזרת תווים.

גם כאן נקבל

מה ששוב כמובן אינו אפשרי לערכי גדולים, ושוב מראה שהסדרה דווקא דחיסה.

הפרק הקודם:
סיבוכיות קולמוגורוב
יישומי אי-דחיסות
תרגילים
הפרק הבא:
הסתברות אוניברסאלית