זה משתמש באלגוריתם טרנספורמציה מהירה של פורייה (FFT).
להכפיל שני פולינומים בזמן O (nlogn) .
במאמר זה אני מתאר את הכפל של שני פולינומים בזמן O (nlogn) . זה משתמש באלגוריתם טרנספורמציה מהירה של פורייה (FFT).
ריבסט מתאר
הספר "מבוא לאלגוריתמים" מאת קורמן, לייזרסון וריבסט מתאר את הכפל של שני פולינומים בזמן O (nlogn). כאן, אתאר גרסה של השיטה בה השתמשו.
ראשית, צחצוח על כמה יסודות:
1. A (x) = a_0 + a_1 (x) + a_2 (x ^ 2) +..... + a_ (n-1) (x ^ (n-1)) הוא פולינום של דרגה n-1.
2. כפל הפולינומים A (x) ו- B (x) כלומר C (x) = A (x) B (x) לוקח זמן O (n ^ 2).
3. מציאת A (p) היא באמצעות החלפת p במקום x בפולינום: A (p) = a_0 + a_1 (p ^ 2) +..... + a_ (n-1) (p ^ (n -1)). זה לפי הכלל של הורנר הוא: A (p) = a_0 + p (a_1 + p (a_2 +..... + p (a_ (n-1))...). זה לוקח O (n).
צורת מקדם: (a_0, a_1, a_2,....., a_ (n-1)). צורת נקודת ערך: {(x_0, y_0), (x_1, y_1),... (x_n-1, y_n-1)}, כאשר y (x_i) = A (x_i).
טפסים לוקחים
5. המרה מצורות מקדם לנקודת ערך נקבעת ל- O (n ^ 2) אפילו בשימוש ב"כלל הורנר "מכיוון שצריך למצוא את הערך A (x) בנקודות n.
6. שורש nth מורכב של אחדות הוא מספר מורכב w * כזה ש w * ^ n = 1.
השורש ה-עיקרי
7. שורשי האחדות n הם: w ^ 0, w ^ 1, w ^ 2,...., w ^ n-1. w = e ^ (2 * pi * i / n) נקרא השורש העיקרי של האחדות וכל שורשי n הם כוחות של w זה.
8. מחזוריות: w ^ (k + n) = w ^ k.
עם רקע אנחנו יכולים להתחיל.
גב סמוי
להכפלת שני הפולינומים A (x) ו- B (x) הניתנים בצורות שיתופיות, אנו ממירים אותם תחילה לצורות ערך נקודתיות. הכפל בצורה נקודתית לוקח O (n). ואז אנו מסתירים בחזרה לצורה השיתופית. עם זאת, המרה מ- Co-יעיל לנקודת ערך לוקח O (n ^ 2) כאמור ב 5. אבל בבחירת הנקודות x_0, x_1,..... x_ (n-1) בזהירות, אנו יכולים להשיג זאת. ב- O (nlogn).
נקודות אלה אשר אנו עומדים לבחור יהוו את שורשי האחדות התשיעית. זה מה שהוא Transform Fourier Fourier (DFT).
תנאים מוזרים
הספר "מבוא לאלגוריתמים" מאת קורמן, לייזרסון וריבסט מתאר את הכפל של שני פולינומים בזמן O (nlogn).
כעת, A (x) = a_0 + a_1 (x) + a_2 (x ^ 2) +..... + a_ (n-1) (x ^ (n-1)). ניתן לפצל את זה לשני פולינומים: הראשון שמכיל את המונחים הראשונים n / 2 והשני שמכיל את המונחים השני / השני. הספר "מבוא לאלגוריתמים" מתאר את הפיצול כמונחים אחידים ומשונים. כאן אנו יכולים להגיע לאותה תוצאה, אך באופן שונה במקצת.