DSA_HW5 .pdf

‫بسمه تعالی‬
‫تمرین سری پنجم ساختماندادهها و الگوریتمها‬
‫مدرس‪ :‬دکتر آبام‬
‫لطفا اگر سوالی دارید‪ ،‬آن را در گروه درس به آدرس ‪ [email protected]‬مطرح کنید‪.‬‬
‫سوال‪ : ۱‬خیکوله میخواهد برای انجام تکالیف هفتهی آینده برنامهریزی کند‪ .‬او برای هفتهی بعد ‪ n‬تکلیف دارد که تکلیف ‪i‬ام باید تا زمان ‪wi‬‬
‫انجام شود و در صورتی که تا آن زمان تکلیفش را انجام ندهد‪ ،‬به مقدار ‪ ri‬از نمرهاش کم میشود‪ .‬انجام دادن هر تکلیف یک واحد زمانی طول‬
‫میکشد‪ .‬ب توجه به حجم باالی تکالیف خیکوله قادر به انجام همهی آنها نیست‪ .‬او میخواد تعدادی از تکالیف را انجام دهد که میزان نمرهای‬
‫که از دست میدهد کمینه باشد‪.‬‬
‫‪‬‬
‫الف) برای این کار الگوریتمی از )‪ O(n2‬ارائه دهید‪.‬‬
‫‪‬‬
‫ب) برای این کار الگوریتمی از )‪ O(n log n‬ارائه دهید‪( .‬راهنمایی‪ :‬از ‪ segment tree‬استفاده کنید‪).‬‬
‫‪‬‬
‫ج) فرض کنید که ددالین همهی تکالیف تا آخر هفته است و همچنین انجام دادن تکلیف ‪i‬ام به اندازهی ‪ ti‬زمان می گیرد‪ .‬چه‬
‫الگوریتمی برای پیدا کردن بهترین زیر مجموعه از تکالیف پیشنهاد میکنید؟‬
‫سوال‪ :۲‬تابع بازگشتی خطی مرتبهی ‪ k‬یک تابع است که به شکل زیر تعریف شده باشد‪:‬‬
‫‪‬‬
‫‪‬‬
‫سریعترین الگوریتمی که میتوانید برای محاسبهی )‪ f(n‬ارائه کنید‪( .‬راهنمایی‪ :‬از ضرب ماتریسها استفاده کنید‪ .‬الگورتیم ‪ strassen‬را به کار‬
‫ببرید و تحلیل زمانی خود را برحسب ‪ K‬و ‪ n‬بنویسید)‬
‫سوال ‪ n :۳‬نقطه در فضای یکبعدی (خط) قرار دارند‪ .‬الگوریتمی از‬
‫ارائه کنید که بین همهی زوج نقطهها‪ ،‬نزدیکترین زوج را‬
‫پیدا کند‪.‬‬
‫سوال ‪ n :۴‬نقطه در فضای دوبعدی (صفحه) قرار دارند‪ .‬هدف پیدا کردن نزدیکترین زوج نقطه بین همهی زوجها است‪.‬‬
‫‪‬‬
‫الف) الگوریتمی از )‪ O(n2‬ارائه دهید که این زوج را بیابد‪.‬‬
‫‪‬‬
‫ب) الگوریتمی مبتنی بر‪ renqndc&ivivid‬از )‪ O(n log n‬ارائه دهید‪.‬‬
‫راهنمایی‪ :‬بر اساس ‪ ، x‬نقطهها رو دو دسته کنید‪ .‬هر دسته را حل کنید‪ .‬ثابت کنید که ترکیب ‪ ۲‬دسته را میتوان از )‪ O(n‬انجام داد‪.‬‬
‫سوال ‪ :۵‬الگوریتمی مبتنی بر ‪ evnd pedds‬برای سوال باال میخواهیم ارائه دهیم‪:‬‬
‫نقطهها را بر حسب ‪ ،x‬مرتب کنید‪ .‬حال بر روی نقطهها استقرا بزنید‪.‬‬
‫پایه‪ :‬نزدیکترین زوج در بین ‪ ۲‬نقطهی اول همان زوج ‪۲‬نقطهی اول است!‬
‫فرض‪ :‬نزدیکترین زوج در بین ‪ v‬نقطهی اول را پیدا کردهایم‪.‬‬
‫حکم‪ :‬نزدیکترین زوج در بین ‪ ۱+v‬نقطهی اول را میتوانیم پیدا کنیم‪.‬‬
‫‪‬‬
‫الف) ثابت کنید میتوان از )‪ O(n‬از فرض به حکم رسید یعنی با داشتن نزدیکترین زوج در بین ‪ v‬نقطهی اول میتوان نزدیکترین‬
‫زوج در ‪ ۱+v‬نقطهی اول را بدست آورد‪.‬‬
‫‪‬‬
‫ب) ثابت کنید اگر فرض استقرا را قوی کنیم میتوان از )‪ O(1‬از فرض به حکم رسید‪.‬‬
‫راهنمایی‪ :‬به جز نزدیکترین نقطه‪ ،‬تمام نقطههایی که به نقطهی ‪۱+v‬ام «نزدیکتر از حدی» هستند را نگه دارید و این مجموعه را در هر گام‬
‫‪ nsidpd‬کنید‪.‬‬
‫سوال‪ :6‬برای الگوریتم فشردهسازی هافمن لمهای زیر را ثابت کنید‪:‬‬
‫‪‬‬
‫الف) اگر حرفی با فراوانی بیش از‬
‫وجود داشته باشد‪ .‬در فشردهسازی هافمن با رشتهای به طول ‪ ۱‬کد خواهد شد‪.‬‬
‫‪‬‬
‫ب) اگر فراوانی هیچ حرفی بیشتر از‬
‫نباشد‪ .‬در فشردهسازی هافمن طول همهی کدها از ‪ ۱‬بیشتر است‪.‬‬
‫سوال ‪ :7‬ثابت کنید یک درخت دودویی که کامل نباشد نمیتواند یک کد پیشوند آزاد بهینه باشد‪.‬‬
‫سوال‪ :8‬تعداد ‪ n‬اسکیباز با قدهای‬
‫و ‪ n‬چوب اسکی با طولهای‬
‫چوب میخواهیم نسبت دهیم که متوسط اختالف طول اسکی و قد اسکیباز متناظر‬
‫با چوب اسکی‬
‫جفت شده است‪ ).‬الگوریتمی از )‪ O(n log n‬ارائه دهید‪.‬‬
‫در نظر بگیرید‪ .‬حال به هر اسکیباز یک‬
‫مینیمم شود‪( .‬که اسکیباز ‪v‬ام‬