تالار گفتمان مانشت
پیدا کردن K امین کوچکترین عنصر از میان N عنصر - نسخه‌ی قابل چاپ

پیدا کردن K امین کوچکترین عنصر از میان N عنصر - parasto - 06 مهر ۱۳۹۱ ۰۴:۳۷ ب.ظ

در الگوریتم پیدا کردن K امین کوچکترین عنصر از میان N عنصر ،ابتدا همه عناصر را به دسته های ۵تای تقسیم،میانه هر دسته را بدست آورده و سپس میانه ها را به صورت بازگشتی پیدا میکنیم،این عنصر را به عنوان محور انتخاب و عمل Partition را روی آرایه عناصر انجام می دهیم.پس از آن همین الگوریتم را بصورت بازگشتی روی یکی از بخش ها اجرا میکنیم تا عنصر مورد نظر پیدا شود .زمان اجرای الگوریتم کدام است؟این رابطه بازگشتی چطور بدست اومده؟
جواب:
[tex]t(n)=t(n/5) t(7n/10 6) o(n)[/tex]

RE: پیدا کردن K امین کوچکترین عنصر از میان N عنصر - MSZ - 06 مهر ۱۳۹۱ ۰۵:۳۰ ب.ظ

(۰۶ مهر ۱۳۹۱ ۰۴:۳۷ ب.ظ)parasto نوشته شده توسط:  در الگوریتم پیدا کردن K امین کوچکترین عنصر از میان N عنصر ،ابتدا همه عناصر را به دسته های ۵تای تقسیم،میانه هر دسته را بدست آورده و سپس میانه ها را به صورت بازگشتی پیدا میکنیم،این عنصر را به عنوان محور انتخاب و عمل Partition را روی آرایه عناصر انجام می دهیم.پس از آن همین الگوریتم را بصورت بازگشتی روی یکی از بخش ها اجرا میکنیم تا عنصر مورد نظر پیدا شود .زمان اجرای الگوریتم کدام است؟این رابطه بازگشتی چطور بدست اومده؟
جواب:
[tex]t(n)=t(n/5) t(7n/10 6) o(n)[/tex]

این روش به «میانه میانه ها» معروف هست.
مرتبه اجرایی این روش خطی هست بصورت [tex]\Theta (n)[/tex]

[tex]t(7n/10 6)[/tex] در واقع نشون میده که موقع افراز کردن، هر زیر لیست حداکثر این تعداد عضو داره و به همین خاطر به این شکل در رایطه قرار داره.

RE: پیدا کردن K امین کوچکترین عنصر از میان N عنصر - parasto - 07 مهر ۱۳۹۱ ۱۰:۱۹ ق.ظ

[tex]t(n)=t(n/5) t(7n/10 6) o(n)[/tex]
[/quote]


میشه این قسمت رو که هر کدوم از لیستا به [tex]t(7n/10 6)[/tex] افراز میشن رو توضیح بدین؟

RE: پیدا کردن K امین کوچکترین عنصر از میان N عنصر - eris229 - 07 مهر ۱۳۹۱ ۱۲:۳۲ ب.ظ

عناصر آرایه به دو گروه تقسیم میشن. اونایی که بزرگتر از میانه میانه ها هستند و اونایی که کوچکتر از میانه میانه ها هستند! در مرحله بعدی باید در دسته ای که بزرگتر هست دنبال عنصر مورد نظر بگردید (چون دارید مرتبه زمانی اجرا رو پیدا میکنید)

[tex]3(\frac{1}{2}(\frac{n}{5}) - 2) = \frac{3n}{10} - 6[/tex] = تعداد عناصر بزرگتر از میانه میانه ها
[tex]n - (\frac{3n}{10} - 6) = \frac{7n}{10} 6[/tex] = پس تعداد عناصر کوچکتر از میانه میانه ها
چون [tex]\frac{3n}{10} - 6 < \frac{7n}{10} 6[/tex] پس در دسته دوم باید دنبال میانه میانه ها بگردید.
این فرمولایی که نوشتم تعداد دقیق نیست سقف و کف هستند.

پ.ن: فکر نمیکنم اصلا لازم باشه خودتون رو درگیر این رابطه کنید اما باز اگر سوالی از جزئیات هست در خدمتم

پیدا کردن K امین کوچکترین عنصر از میان N عنصر - csharpisatechnology - 10 آبان ۱۳۹۱ ۰۴:۰۷ ب.ظ

اما این که نشد اثبات !
ما که متوجه نشدیم رابطه ی بازگشتی چه طوری بدست اومد. یا کامل توضیح بدید یا یه کتاب معرفی کنید و آدرس بدید خودمون بریم کامل مطالعه کنیم.
مثلا اگه CLRS هست بگید فلان صفحه فلان بخش و .... ما بریم کامل مطالعه کنیم.

پیدا کردن K امین کوچکترین عنصر از میان N عنصر - mfXpert - 11 آبان ۱۳۹۱ ۱۲:۵۴ ب.ظ

(۱۰ آبان ۱۳۹۱ ۰۴:۰۷ ب.ظ)csharpisatechnology نوشته شده توسط:  یا کامل توضیح بدید یا یه کتاب معرفی کنید و آدرس بدید خودمون بریم کامل مطالعه کنیم.
مثلا اگه CLRS هست بگید فلان صفحه فلان بخش و .... ما بریم کامل مطالعه کنیم.
ویرایش سوم، فصل نهم، بخش سوم