প্যারামিটার হিসাবে withn এর সাথে পুনরাবৃত্তির সম্পর্ক সমাধান করা


18

পুনরাবৃত্তি বিবেচনা করুন

T(n)=nT(n)+cn

জন্য n>2কিছু ধনাত্মক ধ্রুবক c , এবং T(2)=1

আমি পুনরাবৃত্তিগুলি সমাধান করার জন্য মাস্টার উপপাদ্য জানি, তবে আমরা কীভাবে এই সম্পর্কটিকে এটি ব্যবহার করে সমাধান করতে পারি তা সম্পর্কে আমি নিশ্চিত নই। বর্গমূলের প্যারামিটারের কাছে আপনি কীভাবে যেতে পারেন?


5
এখানে মাস্টার উপপাদ্য প্রযোজ্য নয়; হিসেবে লেখা যাবে না এনnআপনি আর কি চেষ্টা করেছেন? nb
রাফেল

@ রাফেল: আমি সাবসিটিউশন পদ্ধতিটি চেষ্টা করেছিলাম, তবে আমার বিকল্পটির জন্য আমার কোন মানটি বেছে নেওয়া উচিত বলে মনে হয়েছিল stuck
সন্ধানকারী

1
কীভাবে "কয়েকবার পুনরাবৃত্তিটি উদ্ঘাটন করা, একটি নিদর্শন পর্যবেক্ষণ করুন, সমাধানটি অনুমান করুন এবং এটি প্রমাণ করুন "?
রাফেল

ভাল এই প্রথম ধরণের এই ধরণের জুড়ে আসে, সম্ভবত এখানে কিছু সহায়তা আমাকে সহজেই প্রকৃতির ভবিষ্যতের সমস্যাগুলি সমাধান করতে সহায়তা করবে।
সন্ধানকারী

যেহেতু আপনি মাস্টার উপপাদ্যটি উল্লেখ করেছেন, আমি ধরে নিচ্ছি যে আপনাকে এ্যাসেম্পোটিক সীমার জন্য এই সম্পর্কটি সমাধান করার দরকার আছে, এবং সত্যিই বন্ধ ফর্ম এক্সপ্রেশনটির প্রয়োজন হবে না। নীচে দেওয়া হয়েছে, বদ্ধ ফর্ম এক্সপ্রেশনটি খুঁজে পাওয়ার জন্য কিছু ভাল সমাধান রয়েছে, যা অ্যাসিপটোটিক জটিলতাও দেয়। তবে, আপনার যদি কেবল অ্যাসিপটোটিক জটিলতার প্রয়োজন হয় তবে বিশ্লেষণটি সহজ। আপনার সমস্যার উদাহরণের জন্য একটি দুর্দান্ত স্বজ্ঞাত সমাধান সহ অ্যাসিম্পটোটিক জটিলতাগুলি সন্ধানের জন্য ভাল ব্যাখ্যাের জন্য এখানে একবার দেখুন ।
পরেশ

উত্তর:


9

আমরা রাফেলের পরামর্শটি ব্যবহার করব এবং পুনরাবৃত্তিটি প্রকাশ করব। নিম্নলিখিতটিতে, সমস্ত লগারিদম বেস 2 হয় We

যেখানেβ(এন)আপনি কতবার বর্গমূল এন দিয়ে শুরু করতে নিই এবং 2. পৌঁছানোর যে সক্রিয় আউট করতে হবে তা হলβ(এন)=লগলগএন। আপনি কিভাবে এটি দেখতে পারেন? বিবেচনা করুন: এন

T(n)=n1/2T(n1/2)+cn=n3/4T(n1/4)+n1/2cn1/2+cn=n7/8T(n1/8)+n3/4cn1/4+2cn=n15/16T(n1/16)+n7/8cn1/8+3cn=n2T(2)+cnβ(n).
β(n)β(n)=loglogn সুতরাং 2 এ পৌঁছানোর জন্য আপনাকে বর্গমূলের যে পরিমাণ বার প্রয়োজন হতে হবে তা1এর সমাধান
n=2lognn1/2=212lognn1/4=214logn
, যালগলগএন। সুতরাং পুনরাবৃত্তির সমাধান হলসিএনলগলগএন+112tlogn1loglogn। এটি একেবারে কঠোর করার জন্য, আমাদের প্রতিস্থাপনের পদ্ধতিটি ব্যবহার করা উচিত এবং কীভাবে জিনিসগুলি বন্ধ হয়ে যায় সে সম্পর্কে খুব সতর্ক হওয়া উচিত। আমার যখন সময় হবে, আমি আমার উত্তরের সাথে এই গণনাটি যুক্ত করার চেষ্টা করব।cnloglogn+12n

"You have to take the square root loglogn times" -- is that something a beginner can be expected to see? Also, your result does not fit Yuval's; is it intended to by asymptotically only?
Raphael

@Raphael: Yuval made an error, which he's now corrected. I'll explain the square root in my answer.
Peter Shor

3
Another idea to see that the recursion takes O(loglogn) is the following: By taking the square root of n you halve the digits needed for the binary representation of n. So your input needs w=logn bits and you divide the word-size by 2 for every level of the recursion. Hence you stop after logw=loglogn steps.
A.Schulz

10

In your comment you mentioned that you tried substitution but got stuck. Here's a derivation that works. The motivation is that we'd like to get rid of the n multiplier on the right hand side, leaving us with something that looks like U(n)=U(n)+something. In this case, things work out very nicely:

T(n)=n T(n)+nso, dividing by n we getT(n)n=T(n)n+1and letting n=2m we haveT(2m)2m=T(2m/2)2m/2+1
Now let's simplify things even further, by changing to logs (since lgn=(1/2)lgn). Let
S(m)=T(2m)2mso our original recurrence becomesS(m)=S(m/2)+1
Aha! This is a well-known recurrence with solution
S(m)=Θ(lgm)
Returning to T(), we then have, with n=2m (and so m=lgn),
T(n)n=Θ(lglgn)
So T(n)=Θ(nlglgn).

6

If you write m=logn  you have T(m)=m2T(m2)+c2m .

Now you know the recursion tree has hight of order O(logm), and again it's not hard to see it's O(2m)  in each level, so total running time is in: O((logm)2m) , which concludes O(nloglogn)  for n.

In all when you see n or nab,a<b , is good to check logarithm.

P.S: Sure proof should include more details by I skipped them.


2

Let's follow Raphael's suggestion, for n=22k:

T(n)=T(22k)=22k1T(22k1)+c22k=22k1+2k2T(22k2)+c(22k+22k)==22k1+2k2++20T(220)+c(22k+22k++22k)=22k1+ck22k=(cloglogn+1/2)n.

Edit: Thanks Peter Shor for the correction!


How did you come up with 22k? Note for OP: "" is not a proof, you'll have to provide that still (usually by induction).
Raphael

@Raphael: It's nearly a proof. You just need to show that it's also correct for numbers not of the form 22k.
পিটার শর

Actually, the recurrence is only well-defined for numbers of the form 22k, since otherwise, at some point n wouldn't be an integer, and you'll never reach the base case T(2).
Yuval Filmus

1
If this recurrence actually came from an algorithm, it would probably really be something more like T(n)=nT(n)+cn.
Peter Shor

1

Unravel the recurrence once as follows:

T(n)=n T(n)+n=n1/2(n1/4 T(n1/4)+n1/2)+n=n11/4 T(n1/4)+2n.

Continuing the unraveling for k steps, we have that:

T(n)=n11/2kT(n1/2k)+kn.

These steps will continue until the base case of n1/2k=2. Solving for k we have:

n1/2k=2logn=2kk=loglogn.

Substituting k=loglogn into the unraveled recurrence, we have

T(n)=n2T(2)+nloglogn.

2
Could you rewrite your picture to MathJax? We discourage images with text as the answers.
Evil

1
@PKG it seems like your edit is slightly different and also you explain steps, maybe you could answer on your own.
Evil
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.