200 likes | 703 Views
تحليل الگوريتم ها. مسائل و تمرين ها. تحليل الگوريتم ها. 1 . با استفاده ازاستقراي رياضي نشان دهيد زماني كه n توان صحيحي از 2 است جواب رابطه بازگشتي زيربرابرچيست ؟ اگر n = 2 2
E N D
تحليل الگوريتم ها مسائل و تمرين ها
تحليل الگوريتم ها 1 . با استفاده ازاستقراي رياضي نشان دهيد زماني كه n توان صحيحي از 2 است جواب رابطه بازگشتي زيربرابرچيست ؟ اگر n = 2 2 اگربراي k>1 ، n = 2 T(n) = 2T(n/2) + n 2 . مرتب سازي درجي مي تواند به صورت يك روال بازگشتي بشرح زير بيان شود . به منظور مرتب كردن A[1..n] ، آرايه A[1...n-1] را بطور بازگشتي مرتب كرده و سپس A(n) را درآرايه مرتب شده A[1..n-1] درج مي كنيم . يك رابطه بازگشتي براي زمان اجراي اين نسخه بازگشتي از مرتب سازي درجي بنويسيد . k
مرتب سازي درجي روي آرايه هاي كوچك در مرتب سازي ادغام 1 . يك تغيير در مرتب سازي ادغام را در نظر بگيريد كه درآن n/k زير ليست با طول k با استفاده از مرتب سازي درجي ، مرتب شده و سپس با استفاده از فرايند ادغام استاندارد ادغام مي شوند و k مقداري است كه بايد مشخص شود . a . نشان دهيد كه n/k زير ليست هر يك با طول k مي توانند بوسيله مرتب سازي درجي در بدترين حالت در زمان Θ(n/k) مرتب شوند. b . نشان دهيد كه زير ليست ها مي توانند دربدترين حالت درزمان Θ(nlg(n/k)) ادغام شوند .
درستي قانون Horner قطعه كد زير قانون horner را براي ارزشيابي چند جمله اي P(x) = ∑ a x = a + x(a + x(a +…+x(a + xa )…)), با ضرايب داده شده a ,a ,…, a و يك مقدار براي x پياده سازي مي كند : 1 y ← 0 2 i ← n 3 While i ≥ 0 4 do y ← a + x . y 5 i ← i -1 n k k k =0 1 2 n-1 n 0 0 1 n i
a . زمان اجراي مجانبي اين قطعه كد براي قانون Horner چيست ؟ b . شبه كدي براي پياده سازي الگوريتم ارزشيابي ساده چند جمله اي بنويسيد كه هر جمله از چند جمله اي را از ابتدا محاسبه مي كند . زمان اجراي اين الگوريتم چيست ؟ در مقايسه با قانون Horner چگونه است ؟ c . ثابت كنيد كه ثابت زير يك ثابت حلقه براي حلقه while در خطوط 3- 5 است . y = ∑ a x n-(i+1) k k+i+1 k =0
وارونگي 1 . چه آرايه اي با عناصر مجموعه {1,2,…,n } بيشترين وارونگي ها را دارد ؟ اين آرايه چند وارونگي دارد ؟ 2 . چه رابطه اي بين زمان اجراي مرتب سازي درجي و تعداد وارونگي ها درآرايه ورودي وجود دارد ؟ 3 . الگوريتمي ارائه دهيد كه تعداد وارونگي ها در يك جايگشت روي n عنصر را در بدترين حالت در زمان Θ(nlgn) تعيين كند .
رشد توابع 1 . فرض كنيد f(n) و g(n) بطور مجانبي توابع غيرمنفي باشند . با استفاده از تعريف اصلي نماد Θ ، ثابت كنيد كه max(f(n),g(n)) = Θ(f(n) + g(n)) 2 . توضيح دهيد چرا عبارت ” زمان اجراي الگوريتم A حداقل O(n ) است ” ، بي معني است ؟ 3 . آيا 2 = O(n ) ؟ آيا 2 = O(2 ) ؟ 4 . نشان دهيدهر ثابت حقيقي a وb كه b>0 ، ( n+a ) = Θ(n ) 2 2n 2n n+1 2 b b
2n 2n n+1 2 5 . آيا 2 = O(n ) ؟ آيا 2 = O(2 ) ؟ 6 . ثابت كنيد زمان اجراي يك الگوريتم Θ(g(n)) است اگر و فقط اگر زمان اجراي آن در بدترين حالت O(g(n)) و زمان اجراي آن در بهترين حالت Ω(g(n)) باشد .
نمادهاي استاندارد و توابع عمومي 1 . نشان دهيد اگر f(n) و g(n) توابع صعودي يكنواخت باشند ، آنگاه توابع f(n) + g(n) وf(g(n)) نيز صعودي يكنواخت هستند ، و اگر علاوه بر آن f(n) و g(n) غير منفي نيز باشند ، آنگاه f(n). g(n) صعودي يكنواخت است . 2 . آيا تابع ┌ lg n ┐! بطور چند جمله اي محدود است ؟ آيا تابع ┌ lg lgn ┐! بطور چند جمله اي محدود مي شود ؟ 3 . كدام يك بطور مجانبي بزرگتر است : lg *(lgn) يا lg(lg*n)
a . توابع زير را برحسب مرتبه رشد رتبه بندي كنيد . Lg(lg*n) 2 (√2 ) n n! (lg n)! (3/2) n lg n lg(n!) 2 n Ln ln n lg*n n. 2 n ln n 1 2 (lg n) e 4 (n+1)! √ lg n Lg*n Lg n 2 n n 3 2 2 l / lgn n lg lgn Lg n lg n n lg n
تحليل الگوريتم ها نكات مهم درسي
براي دو تابع f(n) و g(n) داريم f(n) = Θ(g(n)) اگروفقط اگر f(n) = O(g(n)) و f(n) = Ω(g(n)) . • اكثر ويژگي هاي رابطه اي اعداد حقيقي در مقايسه هاي مجانبي نيز به كار ميروند . تعدي : f(n) = Θ(g(n)) و g(n) = Θ(h(n)) دلالت مي كنند براينكه f(n) = Θ(h(n)) f(n) = O(g(n)) و g(n) = O(h(n)) دلالت مي كنند براينكه f(n) = O(h(n)) f(n) = Ω(g(n)) و g(n) = Ω(h(n)) دلالت مي كنند براينكه f(n) = Ω(h(n)) f(n) = o(g(n)) و g(n) = o(h(n)) دلالت مي كنند براينكه f(n) = o(h(n)) f(n) = ω(g(n)) و g(n) = ω(h(n)) دلالت مي كنند براينكه f(n) = ω(h(n))
انعكاسي : f(n) = Θ(f(n)) f(n) = O(f(n)) f(n) = Ω(f(n)) تقارن : f(n) = Θ(g(n)) اگر و فقط اگر g(n) = Θ(f(n)) ترانهاده تقارن : f(n) = O(g(n)) اگر و فقط اگر g(n) = Ω(f(n)) f(n) = o(g(n)) اگر و فقط اگر g(n) = ω(f(n))
مي توان يك تشبيه بين مقايسه مجانبي دو تابع f و g و مقايسه دو عدد حقيقي a و b ايجاد نمود : f(n) = O(g(n)) ≈ a ≤ b f(n) = Ω(g(n)) ≈ a ≥ b f(n) = Θ(g(n)) ≈ a = b f(n) = o(g(n)) ≈ a < b f(n) = ω(g(n)) ≈ a > b مي گوييم f(n) بطور مجانبي كوچكترازg(n) است اگرf(n) = o(g(n)) وf(n) بطور مجانبي بزرگتراز g(n) است اگر f(n) = ω(g(n)) .
پيچيدگي زماني برخي توابع عمومي به ازاي تمام n ها و a ≥ 1 روابط زير را در ارتباط با پيچيدگي زماني توابع داريم : 1. n = o(a ) بنابراين هرتابع نمايي با پايه اكيدا بزرگتراز1 سريعتر ازهر تابع چند جمله اي رشد مي كند 2. Lg n = O(n ) هرتابع چند جمله اي مثبت سريعتر از هر تابع چند لگاريتمي رشد مي كند . 3. n! = o(n ) 4. n! = ω(2 ) 5. lg(n!) = Θ (n lgn) b n b a n n