زمان کنونی: ۱۰ دى ۱۴۰۳, ۰۸:۳۹ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

مرتبه زمانی ساخت هیپ n است یا nlogn ؟

ارسال:
  

sos006 پرسیده:

مرتبه زمانی ساخت هیپ n است یا nlogn ؟

با عرض سلام.الگوریتم ساخت هیپ به این ترتیب هستش که تو یک حلقه For که به تعداد n/2 با تکرار روال Heapify رو اجرا میکنه. مرتبه زمانی روال Heapify برابر است با [tex]T({Logn})[/tex] .پس چرا تو کتابها نوشته شده که میشه اثبات کرد که مرتبه زمانی ساخت هیپ [tex]T({n})[/tex]
مشاهده‌ی وب‌سایت کاربر

۰
ارسال:
  

Masoud05 پاسخ داده:

RE: مرتبه زمانی ساخت هیپ n و یا nlogn

(۳۰ دى ۱۳۸۹ ۱۱:۳۸ ق.ظ)sos006 نوشته شده توسط:  با عرض سلام.الگوریتم ساخت هیپ به این ترتیب هستش که تو یک حلقه For که به تعداد n/2 با تکرار روال Heapify رو اجرا میکنه. مرتبه زمانی روال Heapify برابر است با [tex]T({Logn})[/tex] .پس چرا تو کتابها نوشته شده که میشه اثبات کرد که مرتبه زمانی ساخت هیپ [tex]T({n})[/tex]
اثباتش توی کتاب پوران پژوهش چاپ جدیدش هست در ضمن این مطلب توی همه کتاب های مرجع اومده. به نظرم دیگه دنبال اثبات نباش چون کمتر از ۱ ماه وقت مونده.

۰
ارسال:
  

ف.ش پاسخ داده:

مرتبه زمانی ساخت هیپ n و یا nlogn

یه روش دیگه هست که اول همه عناصر رو میریزید داخل یه درخت (آرایه) بعد hepify رو اجرا میکنید.برای هر پدر heapify رو انجام میدیم و چون تعداد گره های غیر برگ n/2 است در زمان کمتری هیپ ساخته میشود.

ارسال:
  

حامد پاسخ داده:

RE: مرتبه زمانی ساخت هیپ n و یا nlogn

روال Heapify به ارتفاع درخت وابسته است که اثبات میشه که [tex]O(lgn)[/tex] هست.(توصیه میکنم که سعی کنید که رابطه‌ی بازگشتیشو بنویسید و بدستش بیارید چونکه چند نکته مهم توی اثباتش وجود داره)
هدف ساختن هیپ است و روال هیپیفای روی گره های مورد نظر یکی یکی بررسی می شود.حالا این گره‌ها چه حالتهایی دارند؟ممکنه گره‌ی جدید توی همون برگی که اضافه میشه بمونه ممکن هم هست بیاد بالا تا ریشه.پس از نظر مرتبه‌ی زمانی نمی تونیم بگیم همشون محکومند که [tex]O(lgn)[/tex] بشوند.
پس در ابتدا باید تعداد گره‌ها را در هر ارتفاعی از Heap را بر حسب اختلاف ارتفاعشون از برگها بدست بیاریم و این تعداد را در مرتبه زمانی همون سطح(بخاطر Heapify)ضرب کنیم.
تعداد حداکثر گره در ارتفاع h در یک Heap برابر است با‌: [tex]\left \lceil \frac{n}{2^{h 1}} \right \rceil[/tex]
{اگر بحثی روی این رابطه دارید توی
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
که پرسیده بودید بیان کنید}
پس با توجه به توضیحاتی که عنوان شد داریم:

[tex]\sum_{h=0}^{\left \lfloor \lg{n} \right \rfloor}\left \lceil \frac{n}{2^{h 1}} \right \rceil\times O(h) =O(n\sum_{h=0}^{\left \lfloor \lg{n} \right \rfloor}\left \lceil \frac{h}{2^{h 1}} \right \rceil)[/tex]

جواب سیگما محدوده(کوچکتر از ۲ خواهد بود).اثباتش اهمیتی نداره و این مورد را همینطوری قبول کنید! در نتیجه مرتبه برابر [tex]O(n)[/tex] میشود.

(۳۰ دى ۱۳۸۹ ۰۱:۴۲ ب.ظ)afagh1389 نوشته شده توسط:  یه روش دیگه هست که اول همه عناصر رو میریزید داخل یه درخت (آرایه) بعد hepify رو اجرا میکنید.برای هر پدر heapify رو انجام میدیم و چون تعداد گره های غیر برگ n/2 است در زمان کمتری هیپ ساخته میشود.

روش مورد بحث همین روش است و ایشون هم مرتبه‌ی زمانی همین روش را پرسیدند!
یافتن تمامی ارسال‌های این کاربر

۰
ارسال:
  

sepid پاسخ داده:

مرتبه زمانی ساخت هیپ n و یا nlogn

آره از مرتبه n هست .
اثباتش هم صفحه ۱۳۶ CLRS هست.
اینکه خودمون اشتباها فک میکنیم در زمان nlogn هست به خاطر این هست که ارتفاع تمام گره‌ها رو logn میگیریم.
در صورتی که همونطور که حامد در بالا گفته تمام گره‌ها این ارتفاع رو ندارن.
یعنی فقط گره های سطح آخر ارتفاعشون logn هست و بقیه همه کمتر از n هستند.
مشاهده‌ی وب‌سایت کاربر

۰
ارسال:
  

sepid پاسخ داده:

مرتبه زمانی ساخت هیپ n و یا nlogn

من میگم درج همون ساخت هست که زمانش هم n هست.
اینو هم یک نگاه بندازید:

مشاهده‌ی وب‌سایت کاربر

۰
ارسال:
  

sepid پاسخ داده:

مرتبه زمانی ساخت هیپ n و یا nlogn

نه
درج هر گره زمان (O(h میبره که h هم حداکثر میتونه logn باشه و در سطحهای اولی مطمئنا زمان درج که همون ارتفاع هست logn نمیشه و میشه ارتفاع در همون سطحی که میخاد گره اضافه بشه.
برای حذف هم به نظرم زمان حذف اولین بار logn هست و دفعات بعد همونطور که پیش میریم و حذف رو ادامه بدیم مرتبه حذف کم میشه چون ارتفاع داره کمتر میشه و در واقع برابر ارتفاع جدید هست.
فک کنم بد توضیح دادم!!
مشاهده‌ی وب‌سایت کاربر

۰
ارسال:
  

bijibuji پاسخ داده:

مرتبه زمانی ساخت هیپ n و یا nlogn

نه عالی بود
در این فاصله من کمی فکر کردم و پاسخ دقیق رو پیدا کردم
ادغام دو هیپ n هست
ساخت هیپ هم n هست
درج در هیپ log(n هست
حذف هم log(n هست

نکته اینجاست که در ادغام ما محل درج عنصر جدید رو همیشه داریم و یکی یکی جلو می بریمش، درصورتیکه در مورد درج عنصر جدید، محل درج مشخص نیست و بنابراین باید با مرتبه لگاریتمی پیداش کنیم



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۵,۰۵۷ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  کدام زبان برای هوش مصنوعی بهتر است؟ فرق بین زبان های هوش مصنوعی چیست؟ azam2075 ۳ ۶,۱۱۱ ۱۴ مهر ۱۴۰۰ ۰۷:۲۱ ب.ظ
آخرین ارسال: علیصا
Heart هزینه عشق واقعی چقدر است aatwo ۵ ۵,۹۹۰ ۱۳ بهمن ۱۳۹۹ ۱۰:۱۴ ب.ظ
آخرین ارسال: ghaderZ
  مرتبه ایجاد درخت rad.bahar ۱ ۳,۴۲۴ ۳۰ مهر ۱۳۹۹ ۰۳:۳۴ ب.ظ
آخرین ارسال: rad.bahar
  مرتبه شبه کد rad.bahar ۱ ۲,۳۷۸ ۲۲ مهر ۱۳۹۹ ۰۹:۳۲ ب.ظ
آخرین ارسال: BBumir
  چجوری بفهمیم سرور hp اورجینال است یا خیر!؟ azade1992 ۱ ۲,۵۲۹ ۰۳ مهر ۱۳۹۹ ۱۰:۵۹ ق.ظ
آخرین ارسال: diiyan
  کدام زبان برنامه‌نویسی بهترین انتخاب است؟ elecomco ۲ ۳,۱۹۱ ۱۰ شهریور ۱۳۹۹ ۰۵:۱۶ ب.ظ
آخرین ارسال: kilookiloo
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۳,۳۱۳ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  مرتبه زمانی Sanazzz ۱۷ ۲۱,۸۵۹ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh
Smile ۱۰ مدل آدم نخاله که به نفع خودتان است قیدشان را بزنید! αɾια ۱۷ ۱۱,۰۷۶ ۰۷ اردیبهشت ۱۳۹۹ ۱۲:۲۳ ب.ظ
آخرین ارسال: sarasadati

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close