دلیل اهمیت ریاضیات گسسته در برنامهنویسی
این سوالی است که بارها و بارها بسیاری از افراد علاقهمند به برنامهنویسی پرسیدهاند؛ چرا ریاضیات گسسته؟
در اینترنت مقالات بسیاری وجود دارد که تلاش کردهاند به این سوال پاسخ دهند. در این مقاله ما پاسخهایی را که در اینترنت در دسترس است، جمعآوری کرده و آنها را به صورت خلاصه در اینجا آوردهایم.
ریاضیات گسسته، بر خلاف شاخههای دیگر ریاضیات، به ایجاد یک رویکرد منطقی برای حل مسئله کمک میکند. امیدوارم شما هم موافق باشید که این یک مهارت بسیار مهم است که همه برنامهنویسان باید داشته باشند. البته به احتمال زیاد شما هرگز کتاب درسی ریاضی خود را باز نکردهاید تا چیزی را به کد خود اضافه کنید و با کمک آن مشکلی را حل کنید، اما درک مفاهیم آن به برنامهنویسان کمک خواهد کرد که کدها و الگوریتمهای بهتری ارائه دهند و از الگوهای طراحی بسیار موثرتر استفاده کنند.
نداشتن اطلاعات کافی در مورد ریاضیات گسسته، باعث محدودیت شما به عنوان یک برنامهنویس میشود. اگر شما مشغول ساختن برنامههای وب که عملیات پایه CRUD و یا برنامههای ساده را اجرا میکنند، باشید، احتمالا نیازی به آشنایی با ریاضیات دیجیتال نداشته باشید. اما اگر، بخواهید به انجام پروژههای پیچیدهتر بپردازید، مثل یک موتور جستجو یا یک «ابزار جمعآوری» (aggregation tool)، یا یک نرمافزار گرافیکی، یک پروژه Al، و ... آنگاه دانش ریاضیات گسسته بسیار مفید خواهد بود. یکی از بخشهای مهم و جالب ریاضیات گسسته برای من احتمال و ترکیب است. زیرا حتی میتوان از آن در حل مشکلات زندگی استفاده کرد.
مثالی از چگونگی استفاده از ریاضیات گسسته در مشکلات واقعی زندگی
من میخواستم برنامهای ایجاد کنم که به کاربران بهترین امتیاز را میداد. به طور خاص بگذارید این سناریو را در نظر بگیریم: برایان میخواهد بداند که یک بازیکن بسکتبال خاص (کوین کری) پرتابهایش را با چه احتمالی گل میکند. او میخواهد این مقایسه را انجام دهد. اینکه احتمال کدام یک بیشتر است: اینکه کوین سه پرتاب از پنج پرتابش را گل میکند، یا اینکه دقیقا از پنج پرتاب چهار پرتاب گل شود. همچنین این اطلاعات را دارد که کوین در پرتاب آزاد با احتمال 63% پرتابهایش را گل کرده است و این نشان میدهد که او بهتر از میانگین بوده است. اینجا نحوه حل این مسئله با کمک ریاضیات گسسته را آوردهایم:
راه حل:
برای اینکه او سه پرتابش را گل کند، طبق قوانین بسکتبال باید دو پرتاب از چهار پرتاب اول گل نشوند؛ پس ما داریم:
احتمال (2 پرتاب از 4 پرتاب) * احتمال (موفقیت در پرتاب پنجم)
برای به دست آوردن احتمال اینکه او از چهار تلاشش به دو گل برسد، از ترکیب برای به دست آوردن نتایج احتمالی استفاده میکنیم و سپس در احتمال دو شوت موفق و دو شوت ناموفق ضرب میکنیم:
4C2 = 4!/2!(4–2)! = 6 تمام حالات ممکن
اگر کوین 63% احتمال موفقیت داشته باشد، پس احتمال عدم موفقیت او 37% (یعنی 63-100) است.
P(موفقیت در پرتاب = 63/100 = 0.63)
P(عدم موفقیت در پرتاب = 0.63 -1 = 0.37)
وقتی از چهار پرتاب دو پرتاب موفق دارد، یعنی دو پرتابش هم ناموفق است. پس با این فرض داریم:
P(موفقیت کوین در دقیقا 2 پرتاب از 4 پرتاب) = (تمام حالات ممکن * P(2 پرتاب موفق) * P(2 پرتاب ناموفق).
اکنون روابط به دست آمده در بالا را از نو به صورت زیر مینویسیم:
P (2/4) = 6 * 0.63^2 * 0.37^2 = 0.326
P (3 گل در 5 پرتاب) = P (دقیقا 2 گل در 4 پرتاب اول) * P (یک گل در پرتاب پنجم).
عبارت بالا را به صورت زیر بازنویسی میکنیم:
P (3/5) = P (2/4)* P(موفقیت پنجمین پرتاب)
= 0.326 * 0.63
= 0.2054
بنابراین احتمال اینکه او در پنج تلاشش به سه گل برسد، 20.54% است.
حالا بیایید احتمال اینکه اون از 5 پرتابش به 4 گل برسد را به دست آوریم، اینکه کوین دقیقا از 5 پرتابش به 4 گل برسد، به معنی این است که او یکی از گلها را از دست میدهد؛ بنابراین:
P(4/5) = 5C4 = 5!/4!(5–4)! * 0.63 ^ 4 * 0.37 ^ 1
= 5 * 0.1575 * 0.37
= 0.2914
پس احتمال اینکه او از 5 پرتاب به 4 گل برسد، برابر است با 29.14% بنابراین ما میبینیم که احتمال اینکه کوین از 5 تلاشش به سه گل برسد، کمتر از احتمال این است که او دقیقا از پنج تلاشش به چهار گل برسد.
دانش ریاضیات گسسته به شما کمک میکند تا یک الگوریتم منطقی خوب برای برنامه خود بنویسید. همچنین مسائل زیاد دیگری در دنیای واقعی وجود دارند که ریاضیات گسسته به حل آنها کمک میکند؛ مانند ایجاد یک برنامه زمانبندی، ساخت بازی و غیره.
در صورتیکه به کسب اطلاعات بیشتر در مورد ریاضیات گسسته علاقهمند هستید، آموزشهای زیر در این مورد مفید به نظر میرسند:
- آموزش ساختمان گسسته با رویکرد حل مسئله
- آموزش ساختمان گسسته (مرور و حل تستهای کنکور کارشناسی ارشد)
- آموزش روابط بازگشتی در طراحی الگوریتم و ساختمان داده (مرور-- تست کنکور)
- آموزش روشهای حل روابط بازگشتی
::.