HW3_1.pdf

‫ساختمان دادهها و الگوریتمها‬
‫نیم سال دوم ‪93-92‬‬
‫دانشکده مهندسی کامپیوتر‬
‫تمرین سوم‬
‫مدرس‪ :‬دکتر بیگی‬
‫تاریخ کوییز‪ 28 :‬اردبیهشت‬
‫سوال‪.1‬‬
‫داده ساختار صف اولین میانه شامل ‪ n‬عنصر مجزا است که اعمال زیر را میتوان بر روی آن انجام داد‪:‬‬
‫درج یک عنصر و حذف عنصر میانه در بدترین حالت در )‪O(logn‬‬
‫ساخت یک ‪ MPQ‬از ‪ n‬عنصر داده شده در زمان )‪O(n‬‬
‫با استفاده از هرم داده ساختار ‪ MPQ‬را طراحی کنید و نحوهی انجام اعمال فوق را دقیقاً توضیح دهید و تحلیل نمایید‪.‬‬
‫سوال ‪.2‬‬
‫الف) با ‪ 2𝑟 − 1‬کلید متمایز چند ‪ MaxHeap‬متفاوت میتوانیم داشته باشیم؟‬
‫ب) ‪ MaxHeap‬حاصل پس از عملیات حذف‪ ،‬حذف‪ ،‬درج ‪ ،54‬حذف‪ ،‬درج ‪ 38‬و حذف برروی ‪ MaxHeap‬اولیه زیر چه‬
‫خواهد بود؟‬
‫سوال ‪.3‬‬
‫پیچیدگی محاسباتی سه الگوریتم ‪ Merge Sort،Quick Sort‬و ‪ Bubble Sort‬بر روی آرایه ورودی ‪ n‬عضوی زیر به از‬
‫چه مرتبهای خواهد بود؟‬
‫الف‪ :‬آرایه بصورت صعودی مرتب باشد‪.‬‬
‫𝑛‬
‫ب‪ :‬آرایه از کنار هم قرار گرفتن ‪ k‬دنباله صعودی که اندازه هر کدام حداقل 𝑘‪ 2‬است تشکیل شده باشد بطوری که عضو بیشینه‬
‫هر دنباله از عضو کمینه دنباله بعدیاش بیشتر باشد‪.‬‬
‫سوال ‪.4‬‬
‫دنبالهای را درنظر بگیرید که ‪ 2n‬عدد از مجموعه } ‪ {1,2, … , 𝑛2‬بطور نامرتب در ابتدای دنباله قرار گرفته اند و ‪ n‬عدد به‬
‫صورت مرتب صعودی از مجموعه } ‪ {𝑛2 , 𝑛2 + 1, … , 2𝑛2‬در انتهای آن واقع شدند‪ .‬پیچیدگی محاسباتی الگوریتم ‪Quick‬‬
‫‪ Sort‬و ‪ Randomized Quick Sort‬بر روی این دنباله از چه مرتبه زمانی خواهد بود؟‬
‫سوال ‪.5‬‬
‫فرض کنید فقط قادر به استفاده از الگوریتم ‪ Merge Sort‬بر روی آرایه به اندازه ‪ k‬عضو هستیم (تابع مربوط به ادغام‪ ،‬قادر‬
‫به ادغام دو آرایه مرتب با مجموع اندازه کوچکترمساوی ‪ k‬است)‪ .‬با کمک ابزار ذکر شده الگوریتمی برای مرتبسازی آرایه‬
‫بطول )‪ n (n>k‬ارائه دهید و پیچیدگی محاسباتی آنرا محاسبه نمائید‪.‬‬
‫سوال ‪.6‬‬
‫زمان اجرای مرتبسازی ‪ n‬عدد صحیح در بازه ‪ 0‬تا ‪ 𝑛𝑘 − 1‬به ازای مقادیر مختلف نسبت ‪ k‬و ‪ n‬چه مرتبه زمانی خواهد‬
‫داشت؟‬
‫برای مرتبسازی دادههای زیر چه الگوریتمی پیشنهاد میکنید؟ زمان اجرای الگوریتم را محاسبه نمائید‪.‬‬
‫الف‪ n :‬عدد صحیح مثبت کوچکتر از‬
‫𝑛‪2‬‬
‫𝑔𝑜𝑙𝑛‪.‬‬
‫سوال ‪.7‬‬
‫فرض کنید که دنبالهی ‪ x1 , x2 , x3 , … xn‬داده شده است‪ .‬میخواهیم به پرسشهایی مانند کوچکترین عدد بین ‪xi,‬‬
‫‪ xi+1 , xi+2 , … , xj‬برای ‪ j,i‬های مختلف جواب دهیم‪.‬‬
‫آ) داده ساختاری طراحی کنید که با حافظه و پیش پردازش )‪ O(n^2‬بتواند به هر پرسش در )‪ O(1‬پاسخ دهد‪.‬‬
‫ب) داده ساختاری طراحی کنید که با )‪ O(n‬حافظه و پیش پردازش مناسب بتواند به هر پرسش در‬
‫)‪ O(logn‬پاسخ دهد( برای گرفتن بخشی از نمره میتوانید داده ساختاری با حافظهی )‪ O(nlogn‬و زمان پاسخ )‪O(logn‬‬
‫طراحی کنید)‪.‬‬
‫ج) داده ساختاری طراحی کنید که با حافظه و پیشپردازش )‪ O(nlogn‬بتواند به هر پرسش در )‪ O(1‬پاسخ دهد‪.‬‬
‫سوال ‪.8‬‬
‫در یک کشور شامل ‪ n‬شهر و ‪ m‬جادهی دوطرفه است که میتوان با آنها از هر شهر به شهر دیگر با طی کردن تعدادی از این‬
‫جادهها رسید‪ .‬اما بعضی از این جادهها خراب شدهاند و غیر قابل عبور هستند‪ .‬این خرابیها باعث شده است که دیگر نتوان از‬
‫هر شهر به هر شهر دلخواه دیگر رفت‪ .‬دولت تصمیم دارد تعدادی از این جادهها را درست کند تا انجام این کار مجدداً‬
‫امکانپذیر باشد‪ .‬تعمیر جادههای شهر هزینههای متفاوتی دارد‪ .‬الگوریتمی با پیچیدگی )‪ O(mlogm‬ارایه دهید که بهترین‬
‫جادهها را پیدا کند‪.‬‬
‫سوال ‪.9‬‬
‫دانشآموزان یک کالس را میخواهیم بر اساس قدشان به دو گروه تقسیم کنیم‪ .‬به طوری که اعضای گروه اول از همهی‬
‫اعضای گروه دوم کوتاهقدتر باشند‪ .‬میخواهیم گروه اول تا جای ممکن کوچک باشد ولی از طرفی میخواهیم مجموع وزن افراد‬
‫گروه اول حداقل برابر نصف مجموع وزن همهی افراد باشد‪ .‬روشی ارایه دهید که در )‪ O(n‬این کار را انجام دهد‪(.‬میدانیم که‬
‫میانه را میتوان در )‪ O(n‬پیدا کرد)‬