שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2026 - תכנות דינמי

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

על האלגוריתם המוצע לרוץ בזמן , כשבניתוח זמן הריצה מניחים שכל פעולה אלמנטרית על מספרים (כגון חיבור, חיסור, השוואה) מתבצעת בזמן .
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחה81 · 2026 · סמסטר א
★★★★★
תכנות דינמיניתוח אלגוריתמיםסיבוכיות
האילוץ "רצופה" אומר שתת-סדרה נקבעת על ידי שני קצותיה. נסו לקבע את הקצה הימני ולשאול מהו הסכום המרבי שאפשר להשיג עבורו — והאם התשובה עבור מסייעת לחשב במהירות את התשובה עבור .
הגדרת תת-בעיה: יהי הסכום המרבי של תת-סדרה רצופה המסתיימת באינדקס (כולל האפשרות לסכום בלבד).

נוסחת נסיגה:



נכונות: תת-הסדרה המסתיימת ב- עם סכום מרבי היא:
  • הרחבה של התת-סדרה האופטימלית המסתיימת ב-, אם , או
  • בלבד, אם .


שני המקרים מתמצים ב-. הסכום המרבי הכולל הוא .

האלגוריתם:

opt ← x_1
maxSub ← x_1
לכל i מ-2 עד n:
    opt ← max(opt + x_i, x_i)
    maxSub ← max(maxSub, opt)
החזר maxSub


סיבוכיות: לולאה אחת של איטרציות, כל אחת מבצעת פעולות. סה"כ: .