
۴۴٬۰۰۰تومان
نوع فایل دانلود: EPUB
پس از خرید، یک فایل EPUB دریافت میکنید.
این فایل با Calibre، Apple Books و سایر کتابخوانهای دیجیتال مناسب است.
میخواستم جملهٔ هشتادم سری فیبوناچی را حساب کنم. تابع بازگشتی بیملاحظهای نوشتم، int Fib(int N){ return (1==n || 2==n) ? 1 : Fib(n-1) + Fib(n-2); } و منتظر نتیجه ماندم. منتظر ماندم... و منتظر... و منتظر... با ۸ گیگابایت رم و پردازندهٔ اینتل i5، چرا اینقدر طول میکشد؟ فرآیند را متوقف کردم و رفتم سراغ محاسبهٔ جملهٔ چهلم. حدود یک ثانیه طول کشید. یک بررسی گذاشتم و شوکه شدم که دیدم همان تابع بازگشتی موقع محاسبهٔ جملهٔ چهلم ۲۰۴٬۶۶۸٬۳۰۹ بار صدا زده شده. بیشتر از ۲۰۰ میلیون بار؟ آیا واقعاً تعداد فراخوانیها را گزارش میدهد یا کلاهبرداری دولتیای در کار است؟ راهحل برنامهنویسی پویا جملهٔ صدم فیبوناچی را در کمتر از کسری از ثانیه حساب میکند؛ با یک بار فراخوانی تابع، در زمان خطی و با حافظهٔ اضافهٔ ثابت. راهحل بازگشتی معمولاً نه همهٔ تستکیسهای یک مسابقهٔ برنامهنویسی را قبول میکند، و نه مصاحبهکننده را در مصاحبهٔ شرکتی مثل گوگل، مایکروسافت و امثال آن تحتتأثیر قرار میدهد. سختترین سؤالهایی که در مسابقات و مصاحبهها پرسیده میشود، از برنامهنویسی پویا است. این کتاب مستقیم سراغ برنامهنویسی پویا میرود. اول مفاهیم را با مثالهای ساده توضیح میدهد و بعد عمیق وارد مسائل پیچیدهٔ DP میشود.
I Wanted To Compute 80th Term Of The Fibonacci Series. I Wrote The Rampant Recursive Function, Int Fib(int N){ Return (1==n || 2==n) ? 1 : Fib(n-1) + Fib(n-2); } And Waited For The Result. I Wait... And Wait... And Wait... With An 8gb Ram And An Intel I5 Cpu, Why Is It Taking So Long? I Terminated The Process And Tried Computing The 40th Term. It Took About A Second. I Put A Check And Was Shocked To Find That The Above Recursive Function Was Called 204,668,309 Times While Computing The 40th Term. More Than 200 Million Times? Is It Reporting Function Calls Or Scam Of Some Government? The Dynamic Programming Solution Computes 100th Fibonacci Term In Less Than Fraction Of A Second, With A Single Function Call, Taking Linear Time And Constant Extra Memory. A Recursive Solution, Usually, Neither Pass All Test Cases In A Coding Competition, Nor Does It Impress The Interviewer In An Interview Of Company Like Google, Microsoft, Etc. The Most Difficult Questions Asked In Competitions And Interviews, Are From Dynamic Programming. This Book Takes Dynamic Programming Head-on. It First Explain The Concepts With Simple Examples And Then Deep Dives Into Complex Dp Problems.