שאלת מבחן במבני נתונים ומבוא לאלגוריתמים - האוניברסיטה הפתוחה 2020 - אלגוריתמים
נתונים מערך של מספרים ממשיים ומספר טבעי המקיים . כתבו אלגוריתם הבודק האם קיים ב- איבר המקיים את שני התנאים הבאים:
(1) מכיל לפחות איברים קטנים מ-;
(2) מופיע יותר מ- פעמים ב-.
זמן הריצה הנדרש של האלגוריתם הינו .
רמז: חשבו כיצד סעיף א' עשוי לעזור. שימו לב ש- הוא לא חלק מהקלט.
(1) מכיל לפחות איברים קטנים מ-;
(2) מופיע יותר מ- פעמים ב-.
זמן הריצה הנדרש של האלגוריתם הינו .
רמז: חשבו כיצד סעיף א' עשוי לעזור. שימו לב ש- הוא לא חלק מהקלט.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
שאלה חוזרתהאוניברסיטה הפתוחהמבחן סמסטר א2020 סמסטר א | 2020 סמסטר א
★★★★★
אלגוריתמיםסיבוכיותחיפושמיון
מצאו את האיבר ה- בגודלו בזמן (באמצעות SELECT). כל האיברים מעליו מהווים תת-מערך בגודל . חפשו בתת-מערך זה איבר שמופיע יותר מ- פעמים — זה בדיוק בעיית majority על מערך בגודל !
רעיון: תנאי (1) דורש ש- גדול מלפחות איברים, כלומר נמצא בין האיברים הגדולים ביותר. תנאי (2) דורש ש- מופיע יותר מ- פעמים — כלומר יותר ממחצית מתוך האיברים הגדולים.
האלגוריתם:
שלב 1: מצאו את האיבר ה- בגודלו (ה-order statistic) באמצעות אלגוריתם SELECT בזמן . נסמנו .
שלב 2: צרו מערך המכיל את כל האיברים ב- שגדולים או שווים ל-. גודלו (ואולי קצת יותר אם יש שוויונות, אבל ניתן לטפל בכך). זמן: .
שלב 3: הפעילו את אלגוריתם Boyer-Moore (מסעיף א') על כדי לבדוק האם קיים איבר המופיע יותר מ- פעמים ב-. זמן: .
שלב 4: אם נמצא כזה , ודאו שהוא מופיע יותר מ- פעמים ב- (ספירה בזמן ) ושיש לפחות איברים קטנים ממנו.
סיבוכיות: כל שלב , סה"כ .
האלגוריתם:
שלב 1: מצאו את האיבר ה- בגודלו (ה-order statistic) באמצעות אלגוריתם SELECT בזמן . נסמנו .
שלב 2: צרו מערך המכיל את כל האיברים ב- שגדולים או שווים ל-. גודלו (ואולי קצת יותר אם יש שוויונות, אבל ניתן לטפל בכך). זמן: .
שלב 3: הפעילו את אלגוריתם Boyer-Moore (מסעיף א') על כדי לבדוק האם קיים איבר המופיע יותר מ- פעמים ב-. זמן: .
שלב 4: אם נמצא כזה , ודאו שהוא מופיע יותר מ- פעמים ב- (ספירה בזמן ) ושיש לפחות איברים קטנים ממנו.
סיבוכיות: כל שלב , סה"כ .