۰
subtitle
ارسال: #۱
سوال طراحی الگوریتم سال ۸۷
سلام
من داشتم این سوالات رو میزدم که یهو به این تست بر خوردمو با اطمینان زدم بعد دیدم که آقای یوسفی نظرش با من متفاوته.
سوال پیوسته.
من نظرم روی گزینه ۴ بود به این دلیل که ما باید هر چه زودتر این تیر رو به تیکه های کوچیک تقسیم کنیم که هزینه کم بشه.
خوب من فکر کردم اگه بیام و هر بار I وسط رو در هر تیکه انتخاب کنیم هزینه به شکل زیر میشه:
اولین بار اگر فاصله ها مرتب نباشند با هزینه n میانه اونارو پیدا میکنیم (اگه مرتب هم باشند که بهتر)
بعد با تابع پارتیشن این فاصله ها رو مرتب میکنیم و بعد تیر رو دو نصف میکنم!!! این مرحله هم مرتبه اش n فرض میشه.
حالا واسه هر دو نصف همین کار رو میکنیم که مرتبه نهایی به صورت زیر در میاد که مرتبه چند جمله ایه:
nn2(n2)4(n4)...
که تعداد این n هاlgn +2 هست پس در کل میشه nlgn که چند جمله ای حساب میشه!
من نمیدونم مشکلم چیه ؟!
آخه آقای یوسفی گفتند که این مسئله تداعی کننده درخت دودویی بهینه است و با الگوریتم پویا از مرتبه n3 میشه.
من داشتم این سوالات رو میزدم که یهو به این تست بر خوردمو با اطمینان زدم بعد دیدم که آقای یوسفی نظرش با من متفاوته.
سوال پیوسته.
من نظرم روی گزینه ۴ بود به این دلیل که ما باید هر چه زودتر این تیر رو به تیکه های کوچیک تقسیم کنیم که هزینه کم بشه.
خوب من فکر کردم اگه بیام و هر بار I وسط رو در هر تیکه انتخاب کنیم هزینه به شکل زیر میشه:
اولین بار اگر فاصله ها مرتب نباشند با هزینه n میانه اونارو پیدا میکنیم (اگه مرتب هم باشند که بهتر)
بعد با تابع پارتیشن این فاصله ها رو مرتب میکنیم و بعد تیر رو دو نصف میکنم!!! این مرحله هم مرتبه اش n فرض میشه.
حالا واسه هر دو نصف همین کار رو میکنیم که مرتبه نهایی به صورت زیر در میاد که مرتبه چند جمله ایه:
nn2(n2)4(n4)...
که تعداد این n هاlgn +2 هست پس در کل میشه nlgn که چند جمله ای حساب میشه!
من نمیدونم مشکلم چیه ؟!
آخه آقای یوسفی گفتند که این مسئله تداعی کننده درخت دودویی بهینه است و با الگوریتم پویا از مرتبه n3 میشه.