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

حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

ارسال:
  

Iranian Wizard پرسیده:

حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

سلام.کسی میدونه که باید چجور پیچیدگی زمانی این مسئله ی بازگشتی رو بدست بیارم؟
[tex]T(n)\: =\: T(\frac{n}{2}\: \: \sqrt{n})\: \: \sqrt{6046}[/tex]
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

sixsixsix پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۲۸ آبان ۱۳۹۴ ۱۲:۴۳ ق.ظ)IranianWizard نوشته شده توسط:  سلام.کسی میدونه که باید چجور پیچیدگی زمانی این مسئله ی بازگشتی رو بدست بیارم؟
[tex]T(n)\: =\: T(\frac{n}{2}\: \: \sqrt{n})\: \: \sqrt{6046}[/tex]

T(n) < T(n/2 + n) + 80
پس
T(n) < T(3n/2) + 80
در نتیجه
T(n)=O(log n)

حالا جواب چی بوده؟
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

Iranian Wizard پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۲۸ آبان ۱۳۹۴ ۰۲:۲۷ ق.ظ)sixsixsix نوشته شده توسط:  حالا جواب چی بوده؟
متاسفانه جوابشو نمیدونم.یه تمرینه.هرچقد بهش فکر کردم،به ذهنم نرسید که چجور حلش کنم.
خب اینجور شما یه حد بالا واسش تعریف کردین.ولی دقیقش که معلوم نیستHuh

(۲۸ آبان ۱۳۹۴ ۰۲:۲۷ ق.ظ)sixsixsix نوشته شده توسط:  T(n) < T(n/2 + n) + 80
پس
T(n) < T(3n/2) + 80
در نتیجه
T(n)=O(log n)
یه سوال داشتم.شما گفتین رشد ( T( n کوچکتر از رشد T(3n/2) + 80 هستش...ولی این T(3n/2) + 80 که اصلا قابل حل نیست.چون اینجور که ما n رو نمیشکنیم.هر بار بزرگترش میکنیم که.

با قضیه مستر هم که قابل حل نیست.چون در aT(n/b) + c باید b بزرگتر از ۱ باشه،ولی اینجا b=2/3 هستش.Huh
نقل قول این ارسال در یک پاسخ

ارسال:
  

sixsixsix پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۲۸ آبان ۱۳۹۴ ۰۴:۱۱ ق.ظ)IranianWizard نوشته شده توسط:  
(28 آبان ۱۳۹۴ ۰۲:۲۷ ق.ظ)sixsixsix نوشته شده توسط:  حالا جواب چی بوده؟
متاسفانه جوابشو نمیدونم.یه تمرینه.هرچقد بهش فکر کردم،به ذهنم نرسید که چجور حلش کنم.
خب اینجور شما یه حد بالا واسش تعریف کردین.ولی دقیقش که معلوم نیستHuh

(۲۸ آبان ۱۳۹۴ ۰۲:۲۷ ق.ظ)sixsixsix نوشته شده توسط:  T(n) < T(n/2 + n) + 80
پس
T(n) < T(3n/2) + 80
در نتیجه
T(n)=O(log n)
یه سوال داشتم.شما گفتین رشد ( T( n کوچکتر از رشد T(3n/2) + 80 هستش...ولی این T(3n/2) + 80 که اصلا قابل حل نیست.چون اینجور که ما n رو نمیشکنیم.هر بار بزرگترش میکنیم که.

با قضیه مستر هم که قابل حل نیست.چون در aT(n/b) + c باید b بزرگتر از ۱ باشه،ولی اینجا b=2/3 هستش.Huh

آره شما درست میگید ولی درحالت کلی برای nهای بزرگ sqrt(n) < n/a هست که a عددی ثابت هست.
یعنی شما میتونید یه a دلخواه در نظر بگیرید که مقدار T(bn/c) جوری بدست بیاد که b/c <1 بشه و باز هم جواب logn هست. حالا مبناش خیلی فرق نمیکنه
امیدوارم منظورم رو متوجه شده باشید
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

LEA3C پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

من فکر میکنم جواب این سوال اینطوری بشه:
[tex]n=2^m[/tex]
[tex]T(2^m)=T(2^{m-1} 2^{\frac{m}{2}}) O(1)[/tex]
[tex]S(m)=S(m-1 \frac{m}{2}) O(1)[/tex]
[tex]S(m)=S(\frac{3m}{2}-1) O(1)[/tex]

[tex]O(\log m)[/tex]
با تغییر متغیر

[tex]O(\log\log n)[/tex]
امیدوارم درست باشه
نقل قول این ارسال در یک پاسخ

ارسال:
  

LEA3C پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۳۰ آذر ۱۳۹۴ ۱۲:۱۳ ب.ظ)LEA3C نوشته شده توسط:  من فکر میکنم جواب این سوال اینطوری بشه:
[tex]n=2^m[/tex]
[tex]T(2^m)=T(2^{m-1} 2^{\frac{m}{2}}) O(1)[/tex]
[tex]S(m)=S(m-1 \frac{m}{2}) O(1)[/tex]
[tex]S(m)=S(\frac{3m}{2}-1) O(1)[/tex]

[tex]O(\log m)[/tex]
با تغییر متغیر

[tex]O(\log\log n)[/tex]
امیدوارم درست باشه

دوستان کسی راجع به این راه حلی که من نوشتم نظری نداره؟
به نظر خودم که درسته نظر شما چیه؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

amniat0101 پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

برای این سوال نکته داریم :
[tex]T(n)=T(\frac{n}{a}) b\: ,\: a>1\: \Rightarrow\: O(\log_an)[/tex]

علاوه بر حل با نکته شما با توجه به رابطه ای که با هم ارزی ساخته شده می توانید از تغییر متغیر استفاده کنید و یک رابطه ی ناهمگن بسازید.

به این شکل که جمله ی [tex]\frac{3n}{2^k}=1\: [/tex] را در نظر گرفته که ۱ شرط توقف می باشد. سپس مقدار k را از این رابطه بدست آورید که می شود :
[tex]k=\log_{\frac{2}{3}}n\: [/tex]

سپس در معادله ی اصلی به جای مقداری ۳n قرار دهید [tex]2^k[/tex] .
معادله به صورت مقابل میشود :
[tex]T(2^k)=T\: (\frac{2^k}{2}) 80\: =T\: (2^{k-1}) 80[/tex]
سپس با تغییر متغیر :
[tex]t_k=T(2^k)\: [/tex] در معادله ی فوق آن را به صورت :

[tex]t_k=t_{k-1} 80[/tex] بنویسید.

حال با توجه به روابط بازگشتی و حل آنها،این رابطه را که یک رابطه ی ناهمگن است حل کنید که به مرتبه ی زمانی ذکر شده در نکته خواهید رسید.

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

ارسال:
  

Iranian Wizard پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۲۸ آبان ۱۳۹۴ ۰۳:۳۴ ب.ظ)amniat0101 نوشته شده توسط:  برای این سوال نکته داریم :
[tex]T(n)=T(\frac{n}{a}) b\: ,\: a>1\: \Rightarrow\: O(\log_an)[/tex]

علاوه بر حل با نکته شما با توجه به رابطه ای که با هم ارزی ساخته شده می توانید از تغییر متغیر استفاده کنید و یک رابطه ی ناهمگن بسازید.

به این شکل که جمله ی [tex]\frac{3n}{2^k}=1\: [/tex] را در نظر گرفته که ۱ شرط توقف می باشد. سپس مقدار k را از این رابطه بدست آورید که می شود :
[tex]k=\log_{\frac{2}{3}}n\: [/tex]

سپس در معادله ی اصلی به جای مقداری ۳n قرار دهید [tex]2^k[/tex] .
معادله به صورت مقابل میشود :
[tex]T(2^k)=T\: (\frac{2^k}{2}) 80\: =T\: (2^{k-1}) 80[/tex]
سپس با تغییر متغیر :
[tex]t_k=T(2^k)\: [/tex] در معادله ی فوق آن را به صورت :

[tex]t_k=t_{k-1} 80[/tex] بنویسید.

حال با توجه به روابط بازگشتی و حل آنها،این رابطه را که یک رابطه ی ناهمگن است حل کنید که به مرتبه ی زمانی ذکر شده در نکته خواهید رسید.

فکر کنم با درخت بازگشت هم قابل حل باشد

ممنون از پاسختون.
ولی شما اومدین [tex]\frac{3n}{2^k}=1[/tex] قرار دادین.در حالیکه بایستی بنویسیم [tex](\frac{3}{2})^kn=1[/tex] .و هر بار n با اینکه تقسیم بر ۲ میشه،ضربدر ۳ هم میشه.که اینجور به هیچوقت به ۱ نمیرسه.
پس اینجور اینکه گفتین [tex]3n\: =\: 2^k[/tex] اشتباه میشه.Huh

(۲۸ آبان ۱۳۹۴ ۰۳:۵۲ ب.ظ)sixsixsix نوشته شده توسط:  آره شما درست میگید ولی درحالت کلی برای nهای بزرگ sqrt(n) < n/a هست که a عددی ثابت هست.
یعنی شما میتونید یه a دلخواه در نظر بگیرید که مقدار T(bn/c) جوری بدست بیاد که b/c <1 بشه و باز هم جواب logn هست. حالا مبناش خیلی فرق نمیکنه
امیدوارم منظورم رو متوجه شده باشید

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

ارسال:
  

sahabi2015 پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

نکته ای رو که گفتید فکر نکنم جایی گقته شده باشه و هرچند تو بعضی منال ها جواب درست میده اما نمیشه بصور کلی درست درنظر گرفت
ما یک نکته داریم که :

[tex]T(n)=aT(n-b) c[/tex]

که مرتبه این رابطه بصورت [tex]T(n)\in\theta(a^{\frac{n}{b}})[/tex]
و نکته دوم هم که مربوط به قضیه مستره

که [tex]T(n)=aT(\frac{n}{b}) c[/tex] که a=1 , b>1
انگاه [tex]T(n)=T(\frac{n}{b}) c[/tex]

[tex]T(n)\in\theta(\log n)[/tex]
-----------
حالا تو این مثال

[tex]T(n)<T(\frac{n}{2} n) c[/tex]

[tex]T(n)<T(\frac{3n}{2}) c[/tex]

[tex]T(n)<T(\frac{n}{\frac{2}{3}}) c[/tex]

با تغییر متغییر [tex]n=(\frac{2}{3})^k[/tex]

[tex]T((\frac{2}{3})^k)=T((\frac{2}{3})^{k-1}) c[/tex]

با تغییر متغیر [tex]T((\frac{2}{3})^k)[/tex] به [tex]t_k[/tex] داریم

[tex]t(k)=t(k-1) c[/tex] که مرتبه ان میشود [tex]\theta(k)[/tex]

که با توجه به [tex]n=(\frac{2}{3})^k[/tex]
K میشود [tex]k=\log_{\frac{2}{3}}\: n[/tex]

که با جایگذاری [tex]T(n)\in\theta(\log n)[/tex]

نکته ای رو که گفتید فکر نکنم جایی گقته شده باشه و هرچند تو بعضی منال ها جواب درست میده اما نمیشه بصور کلی درست درنظر گرفت
ما یک نکته داریم که :

[tex]T(n)=aT(n-b) c[/tex]

که مرتبه این رابطه بصورت [tex]T(n)\in\theta(a^{\frac{n}{b}})[/tex]
و نکته دوم هم که مربوط به قضیه مستره

که [tex]T(n)=aT(\frac{n}{b}) c[/tex] که a=1 , b>1
انگاه [tex]T(n)=T(\frac{n}{b}) c[/tex]

[tex]T(n)\in\theta(\log n)[/tex]
-----------
حالا تو این مثال

[tex]T(n)<T(\frac{n}{2} n) c[/tex]

[tex]T(n)<T(\frac{3n}{2}) c[/tex]

[tex]T(n)<T(\frac{n}{\frac{2}{3}}) c[/tex]

با تغییر متغییر [tex]n=(\frac{2}{3})^k[/tex]

[tex]T((\frac{2}{3})^k)=T((\frac{2}{3})^{k-1}) c[/tex]

با تغییر متغیر [tex]T((\frac{2}{3})^k)[/tex] به [tex]t_k[/tex] داریم

[tex]t(k)=t(k-1) c[/tex] که مرتبه ان میشود [tex]\theta(k)[/tex]

که با توجه به [tex]n=(\frac{2}{3})^k[/tex]
K میشود [tex]k=\log_{\frac{2}{3}}\: n[/tex]

که با جایگذاری [tex]T(n)\in\theta(\log n)[/tex]

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

۰
ارسال: #۱۰
  

amniat0101 پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

بله حق با شماست بنده اشتباه کردم :
ولی فکر کنم این راه حل درست باشد :

[tex]T(n)=3\: T\: (\frac{n}{2}) 80[/tex]
در رابطه ی بالا اگر به روش جایگذاری و تکرار عمل کنیم میرسیم به چنین رابطه ای :
[tex]3^k\: T(\frac{n}{2^k})[/tex]
حال داریم :
[tex]\frac{n}{2^k}=1\: \Rightarrow\: n=2^k\: ,\: \: k=\log_2n\: \: \: 3^kT(1)=3^{\log_2n}[/tex]

حال به جای n ها قرار میدهیم : [tex]\: n=2^k\: [/tex]
که به این رابطه میرسیم :
[tex]T(2^k)=3^{\log_22^k}\: T(\frac{2^k}{2}) 80\: \: \Rightarrow\: T(2^k)=2^{klog_23}\: T\: (2^{k-1}) 80\: [/tex]
حال اگر [tex]\log_23\approx1[/tex] و فکر کنم با توجه به اینکه تمرکز ما بیشتر بر روی مقدار k است این درست باشد.داریم :
[tex]T(2^k)=2^kT(2^{k-1}) 80[/tex]
حال با تغییر متغیر : [tex]t_k=2^k[/tex]
داریم :
[tex]t_k=t_k\: (t_{k-1}) 80\: \Rightarrow\: \: t_k-t_k\times t_{k-1}=80\: \Rightarrow\: t_k(1-t_{k-1})=80\: \Rightarrow\: k(1-k)=80[/tex]

حال برای حل رابطه ی ناهمگن بالا داریم : مقدار چند جمله ای ما عدد ثابت ۸۰ هست که از درجه ی صفر می باشد.(البته در بالا دقت نمایید که برای حل روابط بازگشتی ناهمگن ما میتوانیم قسمت همگن را با برابر قرار دادن صفر محاسبه کنیم که از همانجا یک ریشه ی k=0 بدست می آید و نادیده گرفته میشود)
نهایتا به این میرسیم که : [tex](k-1)^2=0[/tex]
که ریشه ی تعدد ۲ دارد:
حال در آخر سر داریم :
[tex]t_k=c_1(1)^n c_2k(1)^n[/tex]
با جایگذاری [tex]k=\log_2n[/tex]
و به دست آوردن مقادیر C ها میتوان به پیچیدگی [tex]\log_2n[/tex] رسید

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

ارسال: #۱۱
  

Iranian Wizard پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

(۲۸ آبان ۱۳۹۴ ۰۸:۲۹ ب.ظ)amniat0101 نوشته شده توسط:  بله حق با شماست بنده اشتباه کردم :
ولی فکر کنم این راه حل درست باشد :

[tex]T(n)=3\: T\: (\frac{n}{2}) 80[/tex]
در رابطه ی بالا اگر به روش جایگذاری و تکرار عمل کنیم میرسیم به چنین رابطه ای :
[tex]3^k\: T(\frac{n}{2^k})[/tex]
حال داریم :
[tex]\frac{n}{2^k}=1\: \Rightarrow\: n=2^k\: ,\: \: k=\log_2n\: \: \: 3^kT(1)=3^{\log_2n}[/tex]

حال به جای n ها قرار میدهیم : [tex]\: n=2^k\: [/tex]
که به این رابطه میرسیم :
[tex]T(2^k)=3^{\log_22^k}\: T(\frac{2^k}{2}) 80\: \: \Rightarrow\: T(2^k)=2^{klog_23}\: T\: (2^{k-1}) 80\: [/tex]
حال اگر [tex]\log_23\approx1[/tex] و فکر کنم با توجه به اینکه تمرکز ما بیشتر بر روی مقدار k است این درست باشد.داریم :
[tex]T(2^k)=2^kT(2^{k-1}) 80[/tex]
حال با تغییر متغیر : [tex]t_k=2^k[/tex]
داریم :
[tex]t_k=t_k\: (t_{k-1}) 80\: \Rightarrow\: \: t_k-t_k\times t_{k-1}=80\: \Rightarrow\: t_k(1-t_{k-1})=80\: \Rightarrow\: k(1-k)=80[/tex]

حال برای حل رابطه ی ناهمگن بالا داریم : مقدار چند جمله ای ما عدد ثابت ۸۰ هست که از درجه ی صفر می باشد.(البته در بالا دقت نمایید که برای حل روابط بازگشتی ناهمگن ما میتوانیم قسمت همگن را با برابر قرار دادن صفر محاسبه کنیم که از همانجا یک ریشه ی k=0 بدست می آید و نادیده گرفته میشود)
نهایتا به این میرسیم که : [tex](k-1)^2=0[/tex]
که ریشه ی تعدد ۲ دارد:
حال در آخر سر داریم :
[tex]t_k=c_1(1)^n c_2k(1)^n[/tex]
با جایگذاری [tex]k=\log_2n[/tex]
و به دست آوردن مقادیر C ها میتوان به پیچیدگی [tex]\log_2n[/tex] رسید

امیدوارم درست باشد
خیلی ممنونم از وقتی که میذارید.
ولی [tex]T(n)=T(\frac{3n}{2}) 80[/tex] خیلی با [tex]T(n)=3T(\frac{n}{2}) 80[/tex] متفاوتهHuh
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال: #۱۲
  

amniat0101 پاسخ داده:

RE: حل مسئله ی بازگشتی T(n)=T(n/2 + √n)+√۶۰۴۶

بله حق با شماست.ولی توی همین سعی و خطا نکته هایی به ذهنم میاد که حرف نداره.سوال قبلی با فرض خودم درسته.

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

به نظرم اگر در همان ابتدای کار تغیر متغیر دهیم بهتر باشد : به این شکل که :
[tex]T(n)=T(\frac{3n}{2}) 80\: \Rightarrow\: [/tex]
با تغییر متغیر : [tex]n=2^k\: [/tex]
داریم :
[tex]T(2^k)=T(3\times2^{k-1}) 80[/tex]
حال مجددا تغییر متغیر داده و داریم :
[tex]t_k=2^k\: \Rightarrow\: t_k=3t_{k-1} 80\: \Rightarrow\: t_k-3t_{k-1}=80[/tex]

این را تا آخر امتحان کنید، اگر هم به نتیجه نرسیدید، نکته ای که در ابتدای حل مثال عرض کردم رو برای همیشه در خاطرتون خواهید داشتBig Grin
و هر زمان این شکل از سوالات روابط بازگشتی رو ببینید با اون نکته حلش میکنید.اگر این شکل روابط ساده بودن قطعا توی سه کتاب چنین نکته ای رو براشون بیان نمیکردن.
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  کمک به حل مسئله Moha33 ۰ ۱,۳۱۷ ۰۵ تیر ۱۴۰۰ ۰۹:۴۲ ق.ظ
آخرین ارسال: Moha33
Shocked کامپیوتر یا هنر، مسئله این است arian_61 ۲ ۴,۶۳۲ ۲۵ دى ۱۳۹۸ ۱۱:۳۱ ق.ظ
آخرین ارسال: packationmachinery
  مسئله n_وزیر Sanazzz ۲ ۳,۳۴۰ ۱۱ بهمن ۱۳۹۷ ۰۳:۰۳ ب.ظ
آخرین ارسال: Sanazzz
  درخواست(محاسبه پیچیدگی زمانی)(بخش روابط بازگشتی) Saman ۶ ۷,۵۲۵ ۲۷ خرداد ۱۳۹۷ ۰۳:۲۴ ب.ظ
آخرین ارسال: saeed_vahidi
  رسم درخت بازگشتی برای t(n)=9t(n/3)+n jumper ۶ ۶,۷۲۸ ۱۷ دى ۱۳۹۶ ۰۶:۱۶ ب.ظ
آخرین ارسال: jumper
  حل روابط بازگشتی درجه ۳ rahkaransg ۲ ۳,۱۰۹ ۱۴ دى ۱۳۹۶ ۰۵:۲۴ ب.ظ
آخرین ارسال: rahkaransg
  جواب رابطه های بازگشتی rahkaransg ۰ ۱,۸۵۹ ۱۴ دى ۱۳۹۶ ۱۲:۲۴ ق.ظ
آخرین ارسال: rahkaransg
  فروش کتاب ۳۰۰۰ مسئله حل شده شبکه فقط ۱۵۰۰۰ تومن کاملا نو Maral93 ۰ ۱,۷۶۵ ۲۵ مهر ۱۳۹۶ ۱۰:۴۰ ب.ظ
آخرین ارسال: Maral93
  آزاد یا غیرانتفاعی یا پردیس؟ مسئله این است! setayesh20 ۰ ۲,۲۰۰ ۱۳ شهریور ۱۳۹۶ ۱۰:۵۷ ق.ظ
آخرین ارسال: setayesh20
  مسئله Betweenness درس شبکه های اجتماعی fo-eng ۱ ۳,۰۴۲ ۰۵ شهریور ۱۳۹۶ ۰۸:۰۷ ق.ظ
آخرین ارسال: M.Amin.M

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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