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

پیچیدگی زمانی دو تابع

ارسال:
  

zerocool_ir پرسیده:

پیچیدگی زمانی دو تابع

با سلام

اساتید گرامی میشه لطفا راهنمایی کنید این دوتا پیچیدگی زمانی چطور بدست می آید ؟
ممنون میشم اگر توضیح بدهید ...

T(7N/8)+8N

T(N+2) + logN

با تشکر پیشاپیش
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

azk84 پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۳ شهریور ۱۳۹۲ ۰۵:۴۹ ب.ظ)Soodabezare نوشته شده توسط:  سلام من که اینجا یه شاگردم ولی جسارتا جواب میدم

هر دورو می تونی از طریق قضیه master به دست بیاری

با توجه به اینکه n به توان log 7 در مبنای ۸ مرتبه بیشتری از n داره اولی میشه n به توان log 7 در مبنای ۸

برای دومی از ۲ داخل پرانتز صرف نظر می کنی با توجه به اینکه مرتبه n به توان log 1 خطی میشه پس مرتبه logn بیشتره و اون میشه جواب
امیدوارم واضح گفته باشم

سلام :-)

Soodabezare عزیز، اولی رو اشتباه حل کردین و دومی هم مستر رو نمیشه براش استفاده کرد :-)


(۲۳ شهریور ۱۳۹۲ ۰۵:۳۸ ب.ظ)zerocool_ir نوشته شده توسط:  با سلام

اساتید گرامی میشه لطفا راهنمایی کنید این دوتا پیچیدگی زمانی چطور بدست می آید ؟
ممنون میشم اگر توضیح بدهید ...

T(7N/8)+8N

T(N+2) + logN

با تشکر پیشاپیش

در مورد اولی، قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش که در اینجا a = 1 و b = 8/7 هستش. طبق قضیه اصلی (همون مستر) باید این دو تابع مقایسه بشن (البته اینجا شهودی بررسی می‌کنیم):
[tex]n^{log_{b} a}=n^{log_{\frac{8}{7}}1}=n^{0}=1[/tex]
و
[tex]f(n)=8n[/tex]
چون (f(n سرعت رشدش بیشتر از ۱ هستش، پس جواب میشه [tex]T(n)=\Theta (8n)=\Theta (n)[/tex]


در مورد دومی، چون قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش و اینجا به کار نمیاد. احتمالاً منظورتون T(n-2) + logN هستش، چون اون چیزی که شما نوشتین هیچ‌وقت به شرط پایه نمیرسه. با همین فرض صورت سؤال شما به صورت زیر میشه:
[tex]T(n)=T(n-2) log(n)[/tex]

برای حل این رابطه می‌تونیم بسطش بدیم:
[tex]T(n)=T(n-2) log(n)=(T(n-4) log(n-2)) log(n) = ((T(n-6) log(n-4)) log(n-2)) log(n)=...=T(0) log(2) log(4) log(6) log(8) ... log(n-2) log(n)[/tex]

به جای پایه (همون [tex]T(0)[/tex]) هر عدد ثابتی می‌تونه باشه. ما اینجا برای راحتی عدد ۰ رو فرض می‌کنیم. با این جایگذاری داریم:
[tex]T(n)=\sum_{i=1}^{\frac{n}{2}}log(2i)[/tex]

با حل این رابطه داریم:
[tex]T(n)=\sum_{i=1}^{\frac{n}{2}}log(2i)=log((n)(n-2)(n-4)...(4)(2))= log(2^{\frac{n}{2}}\times (\frac{n}{2})!)=log(2^{\frac{n}{2}}) log((\frac{n}{2})!)=\frac{n}{2} \Theta (\frac{n}{2}log(\frac{n}{2}))=\Theta(n) \Theta(n\cdot log(n))=\Theta(n\cdot logn)[/tex]

بنابراین جواب رابطه‌ی دوم میشه [tex]T(n)=\Theta(n\cdot logn)[/tex]

در مورد اولی یک راه ساده‌تر و شهودی‌تر هم هست برای فکر کردن بهش. در هر مرحله تعداد عناصر ما ۷/۸ برابر میشه. بنابراین تعداد عملیات ما (همون بخش غیر بازگشتی رابطه) میشه:
تعداد عملیات مرحله اول: [tex]8n[/tex]
تعداد عملیات مرحله دوم: [tex]8\times (\frac{7}{8})n[/tex]
تعداد عملیات مرحله سوم: [tex]8\times (\frac{7}{8})^{2}n[/tex]
تعداد عملیات مرحله چهارم: [tex]8\times (\frac{7}{8})^{3}n[/tex]
و...

بنابراین تعداد کل عملیات ما میشه مجموع یک سری هندسی بی‌نهایت با ضریب q = 7/8 و جمله‌ی اولیه‌ی a = 8n که نتیجه‌اش برابره با:
[tex]T(n)=\frac{a}{1-q}=\frac{8n}{1-\frac{7}{8}}=64n=\Theta (n)[/tex]
مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

Soodabezare پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۳ شهریور ۱۳۹۲ ۱۰:۱۸ ب.ظ)azk84 نوشته شده توسط:  سلام :-)

Soodabezare عزیز، اولی رو اشتباه حل کردین و دومی هم مستر رو نمیشه براش استفاده کرد :-)

در مورد دومی، چون قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش و اینجا به کار نمیاد. احتمالاً منظورتون T(n-2) + logN هستش، چون اون چیزی که شما نوشتین هیچ‌وقت به شرط پایه نمیرسه. با همین فرض صورت سؤال شما به صورت زیر میشه:
[tex]T(n)=T(n-2) log(n)[/tex]

خدایی اولی رو سربه هوایی جواب دادم شرمنده ولی دومی رو اصلا نمی دونستم چرا نمیشه مستر رفت ؟
خوب خوبه که هستین اشتباهاتو گوشزد کنین Smile
و میشه در مورد اینکه هیچوقت به شرط پایه نمیرسه یکم بیشتر بگید ؟؟
ممنون
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

azk84 پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۳ شهریور ۱۳۹۲ ۱۱:۱۰ ب.ظ)Soodabezare نوشته شده توسط:  
(23 شهریور ۱۳۹۲ ۱۰:۱۸ ب.ظ)azk84 نوشته شده توسط:  سلام :-)

Soodabezare عزیز، اولی رو اشتباه حل کردین و دومی هم مستر رو نمیشه براش استفاده کرد :-)

در مورد دومی، چون قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش و اینجا به کار نمیاد. احتمالاً منظورتون T(n-2) + logN هستش، چون اون چیزی که شما نوشتین هیچ‌وقت به شرط پایه نمیرسه. با همین فرض صورت سؤال شما به صورت زیر میشه:
[tex]T(n)=T(n-2) log(n)[/tex]

خدایی اولی رو سربه هوایی جواب دادم شرمنده ولی دومی رو اصلا نمی دونستم چرا نمیشه مستر رفت ؟
خوب خوبه که هستین اشتباهاتو گوشزد کنین Smile
و میشه در مورد اینکه هیچوقت به شرط پایه نمیرسه یکم بیشتر بگید ؟؟
ممنون

دلیل این که هیچوقت در رابطه‌ای مثل [tex]T(n)=T(n 2) log(n)[/tex] به شرط پایه نمی‌رسیم اینه که هر بار n ما داره زیاد میشه و هیچوق کم نمیشه تا به شرط پایه برسه (معمولاً شرط پایه برای اعداد ثابتی مثل ۰ یا ۱ در نظر گرفته میشه). همیشه وقتی بسط بدین رابطه رو می‌بینین که انتها نداره و همینطور n ما داره بزرگ میشه :-)
مشاهده‌ی وب‌سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

Soodabezare پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۴ شهریور ۱۳۹۲ ۱۲:۵۲ ق.ظ)azk84 نوشته شده توسط:  دلیل این که هیچوقت در رابطه‌ای مثل [tex]T(n)=T(n 2) log(n)[/tex] به شرط پایه نمی‌رسیم اینه که هر بار n ما داره زیاد میشه و هیچوق کم نمیشه تا به شرط پایه برسه (معمولاً شرط پایه برای اعداد ثابتی مثل ۰ یا ۱ در نظر گرفته میشه). همیشه وقتی بسط بدین رابطه رو می‌بینین که انتها نداره و همینطور n ما داره بزرگ میشه :-)

بسیار ممنونم
نگفتین چرا نمیشه از مستر رفت ؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

azk84 پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۴ شهریور ۱۳۹۲ ۰۱:۲۴ ق.ظ)Soodabezare نوشته شده توسط:  
(24 شهریور ۱۳۹۲ ۱۲:۵۲ ق.ظ)azk84 نوشته شده توسط:  دلیل این که هیچوقت در رابطه‌ای مثل [tex]T(n)=T(n 2) log(n)[/tex] به شرط پایه نمی‌رسیم اینه که هر بار n ما داره زیاد میشه و هیچوق کم نمیشه تا به شرط پایه برسه (معمولاً شرط پایه برای اعداد ثابتی مثل ۰ یا ۱ در نظر گرفته میشه). همیشه وقتی بسط بدین رابطه رو می‌بینین که انتها نداره و همینطور n ما داره بزرگ میشه :-)

بسیار ممنونم
نگفتین چرا نمیشه از مستر رفت ؟

خواهش می‌کنم :-)

دلیل این که دومی رو نمیشه از مستر رفت اینه که مستر فقط برای روابط بازگشتی به شکل [tex]T(n)=aT(\frac{n}{b}) f(n)[/tex] به کار میره و برای روابط بازگشتی دیگه استفاده نمیشه.
مشاهده‌ی وب‌سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

amin222 پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۴ شهریور ۱۳۹۲ ۰۱:۲۴ ق.ظ)Soodabezare نوشته شده توسط:  
(24 شهریور ۱۳۹۲ ۱۲:۵۲ ق.ظ)azk84 نوشته شده توسط:  دلیل این که هیچوقت در رابطه‌ای مثل [tex]T(n)=T(n 2) log(n)[/tex] به شرط پایه نمی‌رسیم اینه که هر بار n ما داره زیاد میشه و هیچوق کم نمیشه تا به شرط پایه برسه (معمولاً شرط پایه برای اعداد ثابتی مثل ۰ یا ۱ در نظر گرفته میشه). همیشه وقتی بسط بدین رابطه رو می‌بینین که انتها نداره و همینطور n ما داره بزرگ میشه :-)

بسیار ممنونم
نگفتین چرا نمیشه از مستر رفت ؟

سلام دوست عزیز
به این دلیل نمیشه از مستر رفت که مستر واسه توابعی به فرم [tex]T(n)=aT(n/b) f(n)[/tex] هست و هینطور که میبینید توی این فرم تو هر مرحله مسئله به a مسئله کوچیکتر با سایز [tex]1/b[/tex] مسئله قبلی تبدیل میشه ولی این رابطه [tex]T(n)=T(n 2) log(n)[/tex] با این فرم که گفته شد خیلی تفاوت داره و بقول دوستمون مسئله داره تو هر مرحله هی بزرگ و بزرگتر میشه
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

zerocool_ir پاسخ داده:

RE: پیچیدگی زمانی دو تابع

(۲۳ شهریور ۱۳۹۲ ۱۰:۱۸ ب.ظ)azk84 نوشته شده توسط:  
(23 شهریور ۱۳۹۲ ۰۵:۴۹ ب.ظ)Soodabezare نوشته شده توسط:  سلام من که اینجا یه شاگردم ولی جسارتا جواب میدم

هر دورو می تونی از طریق قضیه master به دست بیاری

با توجه به اینکه n به توان log 7 در مبنای ۸ مرتبه بیشتری از n داره اولی میشه n به توان log 7 در مبنای ۸

برای دومی از ۲ داخل پرانتز صرف نظر می کنی با توجه به اینکه مرتبه n به توان log 1 خطی میشه پس مرتبه logn بیشتره و اون میشه جواب
امیدوارم واضح گفته باشم

سلام :-)

Soodabezare عزیز، اولی رو اشتباه حل کردین و دومی هم مستر رو نمیشه براش استفاده کرد :-)


(۲۳ شهریور ۱۳۹۲ ۰۵:۳۸ ب.ظ)zerocool_ir نوشته شده توسط:  با سلام

اساتید گرامی میشه لطفا راهنمایی کنید این دوتا پیچیدگی زمانی چطور بدست می آید ؟
ممنون میشم اگر توضیح بدهید ...

T(7N/8)+8N

T(N+2) + logN

با تشکر پیشاپیش

در مورد اولی، قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش که در اینجا a = 1 و b = 8/7 هستش. طبق قضیه اصلی (همون مستر) باید این دو تابع مقایسه بشن (البته اینجا شهودی بررسی می‌کنیم):
[tex]n^{log_{b} a}=n^{log_{\frac{8}{7}}1}=n^{0}=1[/tex]
و
[tex]f(n)=8n[/tex]
چون (f(n سرعت رشدش بیشتر از ۱ هستش، پس جواب میشه [tex]T(n)=\Theta (8n)=\Theta (n)[/tex]


در مورد دومی، چون قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش و اینجا به کار نمیاد. احتمالاً منظورتون T(n-2) + logN هستش، چون اون چیزی که شما نوشتین هیچ‌وقت به شرط پایه نمیرسه. با همین فرض صورت سؤال شما به صورت زیر میشه:
[tex]T(n)=T(n-2) log(n)[/tex]

برای حل این رابطه می‌تونیم بسطش بدیم:
[tex]T(n)=T(n-2) log(n)=(T(n-4) log(n-2)) log(n) = ((T(n-6) log(n-4)) log(n-2)) log(n)=...=T(0) log(2) log(4) log(6) log(8) ... log(n-2) log(n)[/tex]

به جای پایه (همون [tex]T(0)[/tex]) هر عدد ثابتی می‌تونه باشه. ما اینجا برای راحتی عدد ۰ رو فرض می‌کنیم. با این جایگذاری داریم:
[tex]T(n)=\sum_{i=1}^{\frac{n}{2}}log(2i)[/tex]

با حل این رابطه داریم:
[tex]T(n)=\sum_{i=1}^{\frac{n}{2}}log(2i)=log((n)(n-2)(n-4)...(4)(2))= log(2^{\frac{n}{2}}\times (\frac{n}{2})!)=log(2^{\frac{n}{2}}) log((\frac{n}{2})!)=\frac{n}{2} \Theta (\frac{n}{2}log(\frac{n}{2}))=\Theta(n) \Theta(n\cdot log(n))=\Theta(n\cdot logn)[/tex]

بنابراین جواب رابطه‌ی دوم میشه [tex]T(n)=\Theta(n\cdot logn)[/tex]

در مورد اولی یک راه ساده‌تر و شهودی‌تر هم هست برای فکر کردن بهش. در هر مرحله تعداد عناصر ما ۷/۸ برابر میشه. بنابراین تعداد عملیات ما (همون بخش غیر بازگشتی رابطه) میشه:
تعداد عملیات مرحله اول: [tex]8n[/tex]
تعداد عملیات مرحله دوم: [tex]8\times (\frac{7}{8})n[/tex]
تعداد عملیات مرحله سوم: [tex]8\times (\frac{7}{8})^{2}n[/tex]
تعداد عملیات مرحله چهارم: [tex]8\times (\frac{7}{8})^{3}n[/tex]
و...

بنابراین تعداد کل عملیات ما میشه مجموع یک سری هندسی بی‌نهایت با ضریب q = 7/8 و جمله‌ی اولیه‌ی a = 8n که نتیجه‌اش برابره با:
[tex]T(n)=\frac{a}{1-q}=\frac{8n}{1-\frac{7}{8}}=64n=\Theta (n)[/tex]

استاد عزیز بسیار ممنون و سپاسگذارم
مخصوصا روی این مورد که منظورم همین جمع بود خیلی ابهام داشتم : T(N+2) + logN
که شما خیلی زیبا برطرفش کردید
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Soodabezare پاسخ داده:

RE: پیچیدگی زمانی دو تابع

درست میگید من فراموش کرده بودم حتی با صرف نظر از ۲ باز هم شرط مستر رو نداره چرا که باید b>1 باشه
دقت رو باید بالا برد Smile ممنون ازتون azk84 و amin222
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۵,۰۴۹ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۳,۲۷۶ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  تابع مولد ss311 ۰ ۱,۵۱۵ ۲۶ اردیبهشت ۱۳۹۹ ۱۲:۴۹ ب.ظ
آخرین ارسال: ss311
  مرتبه زمانی Sanazzz ۱۷ ۲۱,۸۳۳ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh
  پیچیدگی زمانی اکشن های قابل اعمال در یک وضعیت اsepid8994 ۰ ۱,۸۲۰ ۲۹ اسفند ۱۳۹۸ ۱۲:۵۱ ب.ظ
آخرین ارسال: اsepid8994
  مرتبه زمانی یافتن قطر Sepideh96 ۲ ۳,۸۵۷ ۰۸ آذر ۱۳۹۸ ۰۴:۳۴ ب.ظ
آخرین ارسال: erfan30
Question یافتن دو عدد پیچیدگی زمانی O(n) porseshgar ۲ ۳,۹۸۱ ۱۵ بهمن ۱۳۹۷ ۱۲:۱۶ ب.ظ
آخرین ارسال: porseshgar
  مرتبه زمانی Sanazzz ۰ ۲,۰۶۷ ۰۴ بهمن ۱۳۹۷ ۰۵:۴۱ ب.ظ
آخرین ارسال: Sanazzz
  مشکل در پیچیدگی زمانی ماهی ۲۵۸ ۲ ۳,۰۵۴ ۲۳ تیر ۱۳۹۷ ۱۲:۱۸ ق.ظ
آخرین ارسال: Alisalar
  درخواست(محاسبه پیچیدگی زمانی)(بخش روابط بازگشتی) Saman ۶ ۷,۵۹۷ ۲۷ خرداد ۱۳۹۷ ۰۳:۲۴ ب.ظ
آخرین ارسال: saeed_vahidi

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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