שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2023 - סיבוכיות

(25 נקודות)

רבעיות פיתוחית היא רבעיות של משרן משמירים שלוחים יהוימים (a,b,c,d) כך ש
ש כך ש.

בחינתנו משרן A של משמירים שלוחים יהוימים,


האדר אלגוריתמים חדור בזוון
בתופצו

או אלגוריתמים אחר חדור בזוון
בקירוב הנתרע

המחלקים האחד קדים ש D לרבעיות פיתוחית A, כשאר משרן A של משמירים שלוחים יהוימים לשכנים יוחת מחרוזות בחזירה בדיוקית.


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


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

תיאור האלגוריתם:


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

2. שלב ב': חיפוש הפרשי ריבועים
כעת, נעבור על כל זוג איברים
במערך , שוב באמצעות שתי לולאות מקוננות. עבור כל זוג, נחשב את הערך . נבדוק האם הערך קיים בטבלת הגיבוב sums_set. פעולת החיפוש בטבלת גיבוב היא בממוצע . אם נמצא ב-sums_set, פירוש הדבר שמצאנו איברים כך ש-. זוהי למעשה המשוואה המקורית . במקרה כזה, האלגוריתם מצא פתרון ויכול להחזיר true.

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


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

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