מבני נתונים ואלגוריתמים - מחברת קורס/מבני נתונים/רשימות מקושרות/תרגילים/ניתוח אמורטייזד להכנסת איברים/תשובה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

נניח שמספר האיברים בקלט הוא .

א'[עריכה]

כל קריאה לInsert-Back של רשימה מקושרת היא , ולכן סיבוכיות הלולאה היא .

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

ב'[עריכה]

נתבונן באיטרציה ה של הלולאה 3-12. בהכרח תופעל הלולאה הפנימית 9-10, וסיבוכיותה לינארית ב. זמן הריצה הוא לכן .

הפתרון אינו יעיל מבחינת זמן ריצה, אך הוא חסכוני מאד (בצורה קיצונית, אפילו) בדרישת הזכרון שלו.

ג'[עריכה]

נתבונן באיטרציה ה של הלולאה 3-12. הלולאה הפנימית 9-10 תופעל אמ"ם חזקה של 2, וסיבוכיותה לינארית ב. אם הוא מספר הפעמים שהופעלה הלולאה הפנימית, אז קל לראות שמתקיים .

זמן הריצה הוא לכן .

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