محاسبه ی big-o در یک شبه کد - نسخهی قابل چاپ |
محاسبه ی big-o در یک شبه کد - taranome baran - 24 مهر ۱۳۹۳ ۰۸:۲۱ ق.ظ
سلام دوستان. من نمیدونم در محاسبه ی big-o در یک شبه کد باید چه قسمت هایی را در نظر بگیرم. و اصلا محاسبه ی big-o برای یک شبه کد چه مفهومی داره . مثلا در کد زیر من فکر میکنم که big-o در اون[tex]4\times n\: \: 4[/tex] هست. ولی همه میگن اشتباهه.چرا؟ میشه یکی از دوستان توضیح بده؟ int s=0;// 1 time
int h=1; // 1 time int i=0; // 1 time while(i<=n) // n+1 time { s++;// n time h++; // n time i++; // n time } |
RE: محاسبه ی big-o در یک شبه کد - poldasht - 24 مهر ۱۳۹۳ ۱۰:۱۷ ق.ظ
سلام ببین من میخوام یه مثال بزنم، بعد تعمیمش میدیم به این سوال. فرض کن تو حساب بانکیت ۵۰،۰۰۰،۱۰۰ تومن پول داری، خب یکی ازت بپرسه چقدر تو حسابته چی میگی؟ نمیگی که ۵۰ میلیون و ۱۰۰ تومن پول دارم، میگی ۵۰ میلیون تو حسابمه (اگه یگی اونم ) مرتبه زمانی هم دقیقا همینه، اگه الگوریتمت ۵۰،۰۰۰،۱۰۰ بار اجرا بشه، بخوای تو یه مقاله ای یا هرجایی تعداد اجراش رو بگی، نمیای بگی ۵۰ میلیون و ۱۰۰ بار، میگی ۵۰ میلیون بار. خب با این مقدمه بیا فرض کنیم الگوریتمت n+100 بار اجرا میشه، اگه جای n بذاری ۵۰ میلیون، همون عبارت بالایی میشه، پس طبق آنچه گفته شد نیازی نیست بیای بگی الگوریتم من n+100 بار اجرا میشه. *** البته اینکه n+100 بار اجرا میشه عدد دقیقه و مشکلی نیست. اما دقت کن: فرض کن گاها الگوریتمت n+100 بار و گاها n+101 بار اجرا میشه، پس نیازی نیست اینا رو بگی، الگوریتم من n بار اجرا میشه کافیه. ---------------------- تو کد بالا: داخل حلقه خودتم گفتی n بار اجرا میشه. حالا چندتا کد بیرون هست که بقولی یه اپسیلون بار اجرا میشن (۳ بار) و یکم هم داخل حلقه (۳n). اینا مسئله نیست. مهم اینه که الگوریتمت n بار اجرا میشه. (مرتبه اجراییش n هست طبق گفته های بالا) مرتبه عم چند نوعه، تو بیگ اُ میای سقفشو در نظر میگیری، مثلا، میتونی بنویسی بیگ اوی n بار، خوب معلومه n بار اجرا میشه، میتونی بنویسی بیگ اوی n^2 بار، خب معلومه n بار اجرا میشه و n هم از n^2 کمتره. البته تعریف ریاضی اینا تو کتابا هست که من نخواستم باز نویسی کنم. اینم یه تعریف از ویکی پدیا: Example of Big O notation: f(x) ∈ O(g(x)) as there exists c > 0 (e.g., c = 1) and x0 (e.g., x0 = 5) such that f(x) <= cg(x) whenever x > x0.
[attachment=16998] |
RE: محاسبه ی big-o در یک شبه کد - taranome baran - 24 مهر ۱۳۹۳ ۱۲:۲۵ ب.ظ
ممنون از پاسختون. متوجه شدم. لطف کردید |