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

مرتبه ی زمانی ادغام k لیست مرتب شده

ارسال:
  

mostafaheydar1370 پرسیده:

مرتبه ی زمانی ادغام k لیست مرتب شده

سلام دوستان
ما K لیست مرتب شده داریم که می خواهیم انها را در هم ادغام کنیم ایا طبق الگوریتم زیر مرتبه ی زمانی ان [tex]O(N)[/tex](مقدار N : تعداد کل عناصر K لیست)می تواند باشد
به این صورت که برای هر یک از K لیست یک اشاره گر به ابتدای هر یک از K لیست قرار می دهیم و با یک حلقه ی به طول N در هرمرحله عنصری از i امین k لیست را انتخاب می کنیم که بزرگترین مقدار عنصر در موقیعت اشاره گرهای k لیست داشته باشد و سپس اشاره گر را یک واحد جلو میبریم به همین صورت تا اخر .اگر این روش صحیح هست چرا در بعضی جاها نوشته شده است که ادغام kلیست مرتب شده از مرتبه ی [tex]Nlog(k)[/tex] است ؟
شبه کد حل مسئله :
[tex]for(i\: to\: N)\:
select\: max\: \&p[j]\:
print\: \&p[j]\:
++j[/tex]
ممون بابت توجه تون
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

Behnam‌ پاسخ داده:

RE: مرتبه ی زمانی ادغام k لیست مرتب شده

(۰۷ آبان ۱۳۹۵ ۰۵:۴۵ ب.ظ)mostafaheydar1370 نوشته شده توسط:  سلام دوستان
ما K لیست مرتب شده داریم که می خواهیم انها را در هم ادغام کنیم ایا طبق الگوریتم زیر مرتبه ی زمانی ان [tex]O(N)[/tex](مقدار N : تعداد کل عناصر K لیست)می تواند باشد
به این صورت که برای هر یک از K لیست یک اشاره گر به ابتدای هر یک از K لیست قرار می دهیم و با یک حلقه ی به طول N در هرمرحله عنصری از i امین k لیست را انتخاب می کنیم که بزرگترین مقدار عنصر در موقیعت اشاره گرهای k لیست داشته باشد و سپس اشاره گر را یک واحد جلو میبریم به همین صورت تا اخر .اگر این روش صحیح هست چرا در بعضی جاها نوشته شده است که ادغام kلیست مرتب شده از مرتبه ی [tex]Nlog(k)[/tex] است ؟
شبه کد حل مسئله :
[tex]for(i\: to\: N)\:
select\: max\: \&p[j]\:
print\: \&p[j]\:
++j[/tex]
ممون بابت توجه تون

بدون ورود به جزئیات، روش شما اشتباه هست به خاطر اینکه فرض k=n، یعنی شما n لیست مرتب شده دارید و بالطبع طول هر لیست ۱ خواهد شد (یعنی اصلاً اعداد مرتب نشده‌اند. به هر حال این هم حالت خاصی هست). در این صورت شما می‌گید الگوریتم شما از مرتبه‌ی n می‌تونه اینا رو مرتب کنه در حالی که الگوریتم‌های مرتب‌سازی ار مرتبه‌ی nlogn بهتر نیستند. یا مثلاً فرض کنید [tex]\frac{n}{2}[/tex] لیست مرتب شده دارید (پس هر لیست دو عنصر داره). باز این در مرتبه‌ی [tex]nlogk=nlog(\frac{n}{2})=\theta(nlogn)[/tex] مرتب میشه ولی شما می‌گید که n/2 عدد رو (حتی فرض کنیم هر لیست یک دونه عدد داره) با مرتبه‌ی n می‌تونید merge کنید که اشتباه هست.

در مورد جزئیات روشتون هم، شما هر بار، بزرگترین عدد رو بین اون K لیست پیدا و چاپ می‌کنید، بقیه‌ی اعداد چی؟ فرض کنیم ۳ تا لیست داریم و بعد از دو مرحله، شما دو تا عدد بزرگ رو چاپ کردید (از بین ۶ عدد در ۳ لیست). ولی ۴ عدد مونده که ترتیب اون‌ها رو نمیشه حدس زد.
از هرم برای ادغام لیست‌های مرتب شده استفاده می‌کنند که اونم مرتبه‌ی [tex]nlogk[/tex] هست که گفتید و در کنکور هم اومده بود.
نقل قول این ارسال در یک پاسخ

ارسال:
  

mostafaheydar1370 پاسخ داده:

RE: مرتبه ی زمانی ادغام k لیست مرتب شده

(۰۷ آبان ۱۳۹۵ ۰۶:۱۶ ب.ظ)Behnam‌ نوشته شده توسط:  
(07 آبان ۱۳۹۵ ۰۵:۴۵ ب.ظ)mostafaheydar1370 نوشته شده توسط:  سلام دوستان
ما K لیست مرتب شده داریم که می خواهیم انها را در هم ادغام کنیم ایا طبق الگوریتم زیر مرتبه ی زمانی ان [tex]O(N)[/tex](مقدار N : تعداد کل عناصر K لیست)می تواند باشد
به این صورت که برای هر یک از K لیست یک اشاره گر به ابتدای هر یک از K لیست قرار می دهیم و با یک حلقه ی به طول N در هرمرحله عنصری از i امین k لیست را انتخاب می کنیم که بزرگترین مقدار عنصر در موقیعت اشاره گرهای k لیست داشته باشد و سپس اشاره گر را یک واحد جلو میبریم به همین صورت تا اخر .اگر این روش صحیح هست چرا در بعضی جاها نوشته شده است که ادغام kلیست مرتب شده از مرتبه ی [tex]Nlog(k)[/tex] است ؟
شبه کد حل مسئله :
[tex]for(i\: to\: N)\:
select\: max\: \&p[j]\:
print\: \&p[j]\:
++j[/tex]
ممون بابت توجه تون

بدون ورود به جزئیات، روش شما اشتباه هست به خاطر اینکه فرض k=n، یعنی شما n لیست مرتب شده دارید و بالطبع طول هر لیست ۱ خواهد شد (یعنی اصلاً اعداد مرتب نشده‌اند. به هر حال این هم حالت خاصی هست). در این صورت شما می‌گید الگوریتم شما از مرتبه‌ی n می‌تونه اینا رو مرتب کنه در حالی که الگوریتم‌های مرتب‌سازی ار مرتبه‌ی nlogn بهتر نیستند. یا مثلاً فرض کنید [tex]\frac{n}{2}[/tex] لیست مرتب شده دارید (پس هر لیست دو عنصر داره). باز این در مرتبه‌ی [tex]nlogk=nlog(\frac{n}{2})=\theta(nlogn)[/tex] مرتب میشه ولی شما می‌گید که n/2 عدد رو (حتی فرض کنیم هر لیست یک دونه عدد داره) با مرتبه‌ی n می‌تونید merge کنید که اشتباه هست.

در مورد جزئیات روشتون هم، شما هر بار، بزرگترین عدد رو بین اون K لیست پیدا و چاپ می‌کنید، بقیه‌ی اعداد چی؟ فرض کنیم ۳ تا لیست داریم و بعد از دو مرحله، شما دو تا عدد بزرگ رو چاپ کردید (از بین ۶ عدد در ۳ لیست). ولی ۴ عدد مونده که ترتیب اون‌ها رو نمیشه حدس زد.
از هرم برای ادغام لیست‌های مرتب شده استفاده می‌کنند که اونم مرتبه‌ی [tex]nlogk[/tex] هست که گفتید و در کنکور هم اومده بود.
بله شما درست میگید اشتباه من این بود که kمقایسه برای پیدا کردن ماکزیمم درون لیست ها رو در نطر نگرفته بودم (دراصل حواسم نبود که Kمتغیر هست ومن اون رو ثابت فرض کرده بودم و می گفتم ثابت در متغیر میشه ثابت که میشد (O(nو اشتباه بود )و میشدNK)O)ولی نمی دونم چطوری میشه (O(Nlogkکه باید روش فکر کنم.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  جزوه اسکن شده " سیستم های توزیع شده " دکتر پدرام arash691 ۸ ۱۴,۸۶۳ ۱۰ آذر ۱۴۰۱ ۰۲:۵۵ ق.ظ
آخرین ارسال: negarrah
  فیلم قفل شده Mohammad_TeZaR ۰ ۰ ۰۵ شهریور ۱۴۰۱ ۰۸:۳۷ ب.ظ
آخرین ارسال: Mohammad_TeZaR
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۴,۸۱۵ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  تا به حال شده خدا فرصت زندگی کردن دوباره رو بهت بده؟مرگ از جلوی چشمات رد شده؟ abraham ۲۱ ۱۵,۹۱۵ ۲۰ دى ۱۳۹۹ ۱۰:۵۶ ب.ظ
آخرین ارسال: raam
  مرتب سازی سریع تصادفی چیست؟ Xzrix ۰ ۱,۵۹۲ ۱۴ آذر ۱۳۹۹ ۰۷:۲۲ ب.ظ
آخرین ارسال: Xzrix
  مرتبه ایجاد درخت rad.bahar ۱ ۳,۳۵۴ ۳۰ مهر ۱۳۹۹ ۰۳:۳۴ ب.ظ
آخرین ارسال: rad.bahar
  مرتبه شبه کد rad.bahar ۱ ۲,۳۲۱ ۲۲ مهر ۱۳۹۹ ۰۹:۳۲ ب.ظ
آخرین ارسال: BBumir
  چگونه گوشی داغ شده را خنک کنیم؟ niloofarmajdi ۰ ۲,۶۷۵ ۰۱ تیر ۱۳۹۹ ۱۰:۲۶ ق.ظ
آخرین ارسال: niloofarmajdi
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۲,۸۳۸ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  مرتبه زمانی Sanazzz ۱۷ ۲۱,۳۷۴ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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