Divide and Conquer הוא דפוס אלגוריתמי. בשיטות אלגוריתמיות, התכנון הוא לקחת מחלוקת על קלט ענק, לפרק את הקלט לחתיכות קטנות, להכריע בבעיה בכל אחת מהחתיכות הקטנות, ואז למזג את הפתרונות החתיכים לפתרון גלובלי. מנגנון זה של פתרון הבעיה נקרא אסטרטגיית Divide & Conquer.
אלגוריתם חלוקה וכבש מורכב ממחלוקת באמצעות שלושת השלבים הבאים.
באופן כללי, אנו יכולים לעקוב אחר הפרד ומשול גישה בתהליך בן שלושה שלבים.
דוגמאות: האלגוריתמים הספציפיים של המחשב מבוססים על גישת Divide & Conquer:
- מקסימום ומינימום בעיה
- חיפוש בינארי
- מיון (מיזוג מיון, מיון מהיר)
- מגדל האנוי.
אסטרטגיית הפרד ומשול הבסיסית:
ישנם שני יסודות של אסטרטגיית הפרד וכבש:
- נוסחת יחסים
- מצב עצירה
1. נוסחת יחסים: זוהי הנוסחה שאנו יוצרים מהטכניקה הנתונה. לאחר יצירת הנוסחה אנו מיישמים את אסטרטגיית D&C, כלומר, אנו שוברים את הבעיה באופן רקורסיבי ופותרים את תת הבעיות השבורות.
2. מצב עצירה: כשאנחנו שוברים את הבעיה באמצעות אסטרטגיית Divide & Conquer, אז אנחנו צריכים לדעת שלכמה זמן אנחנו צריכים ליישם Divide & Conquer. אז המצב שבו הצורך לעצור את צעדי הרקורסיה שלנו של D&C נקרא מצב עצירה.
יישומים של גישת הפרד ומשול:
האלגוריתמים הבאים מבוססים על הרעיון של טכניקת ההפרדה והכיבוש:
היתרונות של הפרד וכבש
- הפרד וכבוש נוטים לפתור בהצלחה את אחת הבעיות הגדולות ביותר, כמו מגדל האנוי, פאזל מתמטי. זה מאתגר לפתור בעיות מסובכות שאין לך מושג בסיסי לגביהן, אבל בעזרת גישת ההפרד וכבוש, זה הפחית את המאמץ מכיוון שהוא עובד על חלוקת הבעיה העיקרית לשני חצאים ואז לפתור אותן באופן רקורסיבי. אלגוריתם זה מהיר בהרבה מאלגוריתמים אחרים.
- הוא משתמש ביעילות בזיכרון המטמון מבלי לתפוס מקום רב מכיוון שהוא פותר בעיות משנה פשוטות בתוך זיכרון המטמון במקום לגשת לזיכרון הראשי האיטי יותר.
- הוא מיומן יותר מזה של טכניקת ה-Brute Force המקבילה לו.
- מכיוון שהאלגוריתמים הללו מעכבים את ההקבלה, היא אינה כרוכה בשינוי כלשהו ומטופלת על ידי מערכות המשלבות עיבוד מקביל.
חסרונות של Divide and Conquer
- מכיוון שרוב האלגוריתמים שלו מתוכננים על ידי שילוב רקורסיה, כך שזה מצריך ניהול זיכרון גבוה.
- מחסנית מפורשת עלולה להשתמש יותר מדי בשטח.
- זה עלול אפילו לקרוס את המערכת אם הרקורסיה מבוצעת בצורה קפדנית יותר מהמחסנית הקיימת במעבד.