שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2016 - סיבוכיות זמן
יהיו זוג פרמטרים בצמצום. נסמן ב- את העץ השנירו הבן השמאלי של הקודקוד ה-, ונסמן ב- את הקודקוד הימני. כמדדים ניתנים בהנחות התוכנית, אם הבחנה. נסמן את משפחת הקודקודים בעץ .
מחוברים/אלגוריתמים יעילים למניעת כל הקודקודים בעץ בעץ חקירה המוגדר בעץ . מה הסיבוכיות של האלגוריתם?
מחוברים/אלגוריתמים יעילים למניעת כל הקודקודים בעץ בעץ חקירה המוגדר בעץ . מה הסיבוכיות של האלגוריתם?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד ב2016סמסטר ב
★★★★★
סיבוכיות זמןעץ חיפוש בינארינוסחת נסיגהרקורסיה
נתחו את תכונת האיזון של העץ כדי לחסום את גובהו. מהי נוסחת הנסיגה לגובה המקסימלי של עץ עם קודקודים המקיים את התכונה הנתונה?
השאלה מנוסחת באופן שאינו ברור לחלוטין, אך ניתן להסיק כי מדובר בעץ חיפוש בינארי עם תכונת איזון מיוחדת, והמטרה היא לקבוע את סיבוכיות הזמן של אלגוריתם יעיל הפועל עליו, כגון חיפוש איבר.
התכונה הנתונה היא שלכל קודקוד בעץ, ההפרש בין מספר הקודקודים בתת-העץ השמאלי () לבין מספר הקודקודים בתת-העץ הימני () הוא לכל היותר 5. כלומר: . עץ בעל תכונה זו הוא סוג של עץ מאוזן-משקלית (Weight-Balanced Tree).
הסיבוכיות של פעולות עיקריות בעץ חיפוש בינארי, כמו חיפוש, הכנסה ומחיקה, תלויה בגובה העץ, . נוכיח כי תכונת האיזון הנתונה מבטיחה שהגובה יהיה לוגריתמי במספר הקודקודים, , כלומר .
הוכחת גובה לוגריתמי:
יהי עץ המקיים את התכונה, ויהי קודקוד כלשהו בעץ. נסמן את מספר הקודקודים הכולל בתת-העץ ששורשו ב-. מתקיים: .
נניח, ללא הגבלת הכלליות, כי . מהתנאי הנתון, , ולכן .
נציב זאת בנוסחה לגודל תת-העץ:
.
מכאן נובע כי גודל תת-העץ הקטן יותר, , הוא לפחות .
כעת נמצא חסם עליון על גודל תת-העץ הגדול יותר, :
.
כלומר, בכל קודקוד , גודל כל אחד מתתי-העצים שלו הוא לכל היותר כחצי מגודל תת-העץ הכולל של .
אם נסמן ב- את הגובה המקסימלי של עץ עם קודקודים המקיים את התכונה, נקבל את נוסחת הנסיגה הבאה:
זוהי נוסחת נסיגה שפתרונה הוא , מכיוון שבכל ירידה ברקורסיה גודל הבעיה (מספר הקודקודים) נחלק בקירוב ב-2.
מסקנה:
כיוון שגובה העץ חסום לוגריתמית, סיבוכיות הזמן של אלגוריתם יעיל לחיפוש, הכנסה או מחיקה היא .
אם כוונת השאלה הייתה לסרוק את כל הקודקודים בעץ (למשל, באמצעות DFS או BFS), הסיבוכיות הייתה , אך אז תכונת האיזון לא הייתה רלוונטית. ההקשר מרמז שהכוונה היא לפעולה התלויה בגובה העץ.
התכונה הנתונה היא שלכל קודקוד בעץ, ההפרש בין מספר הקודקודים בתת-העץ השמאלי () לבין מספר הקודקודים בתת-העץ הימני () הוא לכל היותר 5. כלומר: . עץ בעל תכונה זו הוא סוג של עץ מאוזן-משקלית (Weight-Balanced Tree).
הסיבוכיות של פעולות עיקריות בעץ חיפוש בינארי, כמו חיפוש, הכנסה ומחיקה, תלויה בגובה העץ, . נוכיח כי תכונת האיזון הנתונה מבטיחה שהגובה יהיה לוגריתמי במספר הקודקודים, , כלומר .
הוכחת גובה לוגריתמי:
יהי עץ המקיים את התכונה, ויהי קודקוד כלשהו בעץ. נסמן את מספר הקודקודים הכולל בתת-העץ ששורשו ב-. מתקיים: .
נניח, ללא הגבלת הכלליות, כי . מהתנאי הנתון, , ולכן .
נציב זאת בנוסחה לגודל תת-העץ:
.
מכאן נובע כי גודל תת-העץ הקטן יותר, , הוא לפחות .
כעת נמצא חסם עליון על גודל תת-העץ הגדול יותר, :
.
כלומר, בכל קודקוד , גודל כל אחד מתתי-העצים שלו הוא לכל היותר כחצי מגודל תת-העץ הכולל של .
אם נסמן ב- את הגובה המקסימלי של עץ עם קודקודים המקיים את התכונה, נקבל את נוסחת הנסיגה הבאה:
זוהי נוסחת נסיגה שפתרונה הוא , מכיוון שבכל ירידה ברקורסיה גודל הבעיה (מספר הקודקודים) נחלק בקירוב ב-2.
מסקנה:
כיוון שגובה העץ חסום לוגריתמית, סיבוכיות הזמן של אלגוריתם יעיל לחיפוש, הכנסה או מחיקה היא .
אם כוונת השאלה הייתה לסרוק את כל הקודקודים בעץ (למשל, באמצעות DFS או BFS), הסיבוכיות הייתה , אך אז תכונת האיזון לא הייתה רלוונטית. ההקשר מרמז שהכוונה היא לפעולה התלויה בגובה העץ.