שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2021 - FFT
שאלה 4 – יישומים של FFT (סכום של קבוצות-מספרים)
נתונות שתי קבוצות של מספרים טבעיים בגודלן . סכומן של הקבוצות מוגדר בצורה . למשל, עבור מקבלים .
הציגו אלגוריתם לחישוב הקבוצה תוך ביצוע פעולות אריתמטיות בסיסיות בלבד (של חיבור, חיסור, כפל, חילוק או השוואה של מספרים). העזרו באלגוריתם ה-FFT.
נתונות שתי קבוצות של מספרים טבעיים בגודלן . סכומן של הקבוצות מוגדר בצורה . למשל, עבור מקבלים .
הציגו אלגוריתם לחישוב הקבוצה תוך ביצוע פעולות אריתמטיות בסיסיות בלבד (של חיבור, חיסור, כפל, חילוק או השוואה של מספרים). העזרו באלגוריתם ה-FFT.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 752021סמסטר א
★★★★★
FFTקונבולוציהניתוח אלגוריתמיםסיבוכיותסימון אסימפטוטי
נסו לייצג את הקבוצות ו- באמצעות פולינומים. כיצד מכפלת הפולינומים הללו קשורה לקבוצת הסכומים ?
הרעיון המרכזי בפתרון הוא לייצג את הקבוצות ו- באמצעות פולינומים, ואז להשתמש ב-FFT (התמרת פורייה מהירה) כדי לחשב את מכפלתם ביעילות. מכפלת הפולינומים מקודדת בתוכה את כל סכומי האיברים האפשריים.
1. ייצוג פולינומיאלי
נגדיר שני פולינומים, ו-, המייצגים את הקבוצות ו- בהתאמה. הפולינומים יוגדרו כך שהמקדם של יהיה 1 אם שייך לקבוצה, ו-0 אחרת:מאחר ש-, הדרגה של כל אחד מהפולינומים היא לכל היותר .
כעת, נבחן את מכפלת הפולינומים, :זוהי פעולת קונבולוציה של מקדמי הפולינומים. לפי הגדרת המכפלה, המקדם של בתוצאה, נסמנו , הוא מספר הזוגות כך ש-, ו-. לכן, מספר טבעי שייך לקבוצת הסכומים אם ורק אם קיים לפחות זוג אחד כזה, כלומר, אם ורק אם המקדם חיובי ().
2. האלגוריתם
האלגוריתם יתבסס על הרעיון של חישוב יעיל של מכפלת הפולינומים ו- באמצעות FFT.
1. בניית וקטורי המקדמים: ניצור שני וקטורים ו- באורך . עבור כל מ-0 עד , נגדיר: אם , ו- אחרת. אם , ו- אחרת.
שלב זה דורש פעולות.
2. כפל פולינומים באמצעות FFT: הדרגה המקסימלית של פולינום המכפלה היא . כדי לחשב את הקונבולוציה בצורה נכונה (ללא "גלישה" ציקלית), נבחר שהוא חזקה של 2 ומקיים . נרפד את הווקטורים ו- באפסים עד שיגיעו לאורך . נשים לב ש-.
א. חשב את ההתמרות ו-.
ב. חשב את המכפלה הנקודתית (pointwise) של ההתמרות: לכל .
ג. חשב את ההתמרה ההופכית כדי לקבל את וקטור המקדמים של פולינום המכפלה: .
3. בניית קבוצת הפלט: ניצור קבוצה ריקה,
3. ניתוח סיבוכיות
- שלב 1 (בניית וקטורים): אורך הווקטורים הוא , וגודל הקבוצות הוא , לכן שלב זה לוקח זמן.
- שלב 2 (כפל בעזרת FFT): גודל ההתמרה הוא . חישוב FFT ו-IFFT לוקח פעולות אריתמטיות. המכפלה הנקודתית לוקחת פעולות. הסיבוכיות הכוללת של שלב זה היא .
- שלב 3 (בניית קבוצת הפלט): אנו עוברים על איברים בווקטור . שלב זה לוקח זמן.
הסיבוכיות הכוללת של האלגוריתם נשלטת על ידי שלב ה-FFT, ולכן היא פעולות אריתמטיות.
1. ייצוג פולינומיאלי
נגדיר שני פולינומים, ו-, המייצגים את הקבוצות ו- בהתאמה. הפולינומים יוגדרו כך שהמקדם של יהיה 1 אם שייך לקבוצה, ו-0 אחרת:מאחר ש-, הדרגה של כל אחד מהפולינומים היא לכל היותר .
כעת, נבחן את מכפלת הפולינומים, :זוהי פעולת קונבולוציה של מקדמי הפולינומים. לפי הגדרת המכפלה, המקדם של בתוצאה, נסמנו , הוא מספר הזוגות כך ש-, ו-. לכן, מספר טבעי שייך לקבוצת הסכומים אם ורק אם קיים לפחות זוג אחד כזה, כלומר, אם ורק אם המקדם חיובי ().
2. האלגוריתם
האלגוריתם יתבסס על הרעיון של חישוב יעיל של מכפלת הפולינומים ו- באמצעות FFT.
1. בניית וקטורי המקדמים: ניצור שני וקטורים ו- באורך . עבור כל מ-0 עד , נגדיר: אם , ו- אחרת. אם , ו- אחרת.
שלב זה דורש פעולות.
2. כפל פולינומים באמצעות FFT: הדרגה המקסימלית של פולינום המכפלה היא . כדי לחשב את הקונבולוציה בצורה נכונה (ללא "גלישה" ציקלית), נבחר שהוא חזקה של 2 ומקיים . נרפד את הווקטורים ו- באפסים עד שיגיעו לאורך . נשים לב ש-.
א. חשב את ההתמרות ו-.
ב. חשב את המכפלה הנקודתית (pointwise) של ההתמרות: לכל .
ג. חשב את ההתמרה ההופכית כדי לקבל את וקטור המקדמים של פולינום המכפלה: .
3. בניית קבוצת הפלט: ניצור קבוצה ריקה,
SumSet. נעבור על וקטור המקדמים מהאינדקס 0 ועד . עבור כל אינדקס , אם (לאחר עיגול, עקב אי-דיוקים נומריים אפשריים) גדול מ-0, נוסיף את לקבוצה SumSet. לבסוף, נחזיר את SumSet.3. ניתוח סיבוכיות
- שלב 1 (בניית וקטורים): אורך הווקטורים הוא , וגודל הקבוצות הוא , לכן שלב זה לוקח זמן.
- שלב 2 (כפל בעזרת FFT): גודל ההתמרה הוא . חישוב FFT ו-IFFT לוקח פעולות אריתמטיות. המכפלה הנקודתית לוקחת פעולות. הסיבוכיות הכוללת של שלב זה היא .
- שלב 3 (בניית קבוצת הפלט): אנו עוברים על איברים בווקטור . שלב זה לוקח זמן.
הסיבוכיות הכוללת של האלגוריתם נשלטת על ידי שלב ה-FFT, ולכן היא פעולות אריתמטיות.