الگوریتمستان

برنامه‌نویسی، طراحی الگوریتم و حل مسئله‌های الگوریتمی

 
در صورت ناخوانا بودن نوشته‌ها، از مرورگر دیگری استفاده کنید.
نوشته‌ها با برچسب محاسبات ریاضی نوشته‌ها با برچسب محاسبات ریاضی - الگوریتمستان الگوریتمستان الگوریتمستان
نوشته‌ها با برچسب «

محاسبات ریاضی

»

یکی از چالش‌های مهم دوران دبیرستان به یاد داشتن مقدار سینوس و کسینوس زوایای مشهور بوده و هست. در این راستا روش‌هایی مانند محاسبه به کمک دست و تا کردن انگشتان پیشنهاد شده است که هر کدام از انگشتان نماد یک زاویه هستند. اما چنین روش‌هایی خود نیازمند به یاد داشتن قوانین آن است که باعث بالا رفتن احتمال خطا می‌شود.

جدول زیر الگوی ساده‌ی موجود در مقدار سینوس و کسینوس زوایای مشهور را نشان می‌دهد که به سادگی در ذهن می‌ماند.

محاسبه‌ی سینوس و کسینوس زاویه‌های مشهور به روش ساده

ادامه ...

بسیاری از فرآیندهای طبیعی از جمله ترکیب ساختار بدن موجودات زنده نظم مشخصی دارند و از دنباله‌ی اعدادی تبعیت می‌کنند که امروزه با نام دنباله‌ی اعداد فیبوناچی (فیبوناتچی - Fibonacci) شناخته می‌شود. مشهورترین خاصیت این اعداد نسبت دو جمله‌ی متوالی آنها به ازای جملات بزرگ دنباله است که به عدد طلایی مشهور است.

این دنباله از جمله دنباله‌های عددی است که در طراحی سوالات مسابقات برنامه‌نویسی نیز استفاده می‌شود و گاهی در حل سوالات کاربرد دارد. از این رو آشنایی با روش‌های مختلف تولید جملات آن حائز اهمیت است.

تعریف: دنباله‌ی اعداد فیبوناچی روی اعداد حسابی به صورت زیر تعریف می‌شود:

ادامه ...

ما معمولا برای توضیح رشد با سرعت زیاد از عبارت «رشد نمایی» استفاده می‌کنیم. رشد نمایی یعنی هر گام که پیش می‌رویم، از گام $n$ به گام $n + 1$، اندازه دو یا هر چند برابری می‌شود که به آن پایه یا مبنای رشد گفته می‌شود. این پایه همیشه ثابت است؛ یعنی چه مرحله‌ی اول باشیم و چه مرحله‌ی هزارم، همیشه مرحله‌ی بعدی ضرب در عدد ثابتی می‌شود. در حالت کلی می‌توان نوشت:

\[ f(n ) = b \times f(n - 1 ),\; f(0) = c \]

که منظور از b همان پایه‌ی رشد است. مثلا اگر $b = 2$ باشد و $f(0 ) = 1$، به تابع $f(n) = 2^n$ می‌رسیم. این تعریف را با تعریف فاکتوریل مقایسه کنید:

ادامه ...

دنباله‌ی اعداد کاتالان (Catalan Numbers) یکی از دنباله‌های عددی مشهور ریاضیات است که برای عدد نامنفی n به صورت $C_n$ نمایش داده می‌شود.

  

$C_n:\qquad 1,\;1,\;2,\;5,\;14,\;42,\;132,\;429,\;1430,\;4862,\;16796,\;\cdots$

  

این دنباله کاربردهای بسیاری در مسائل شمارشی دارد. از جمله:

1- تعداد درخت‌های دودویی با n رأس داخلی برابر $C_n$ است:

ادامه ...

تعریف ترکیب (Combination)

تعداد حالت‌های انتخاب r (عدد صحیح و نامنفی) شیء از n (عدد صحیح و بزرگتر یا مساوی r) شیء را که ترتیب انتخاب اهمیت نداشته باشد، انتخاب r از n یا ترکیب r روی n گویند و به یکی از صورت‌های زیر نمایش می‌دهند:

  

\[C(n,r) = C_r^n= \begin{pmatrix} n \\ r \end{pmatrix} \]

این عدد به ضریب دوجمله‌ای نیز مشهور است که یکی از محل‌های استفاده‌ی آن است.

ادامه ...

دترمینان ماتریس مربعی - که به صورت $ \vert A \vert $ یا $ det( A ) $ نمایش داده می‌شود - یکی از مفاهیم مشهور جبر خطی است که کاربردهای بسیاری در علوم مختلف دارد. امکان محاسبه‌ی سریع دترمینان یک ماتریس با ابعاد بزرگ بحث مهمی است که در ادامه سه روش محاسباتی رایج و پيچيدگي زمانی آنها مرور خواهند شد.

طبق تعریف دترمینان اگر اندازه‌ی ابعاد ماتریس مربعی یک باشد ($n = 1$)، دترمینان همان مقدار تک‌عضو آن است. یعنی:

  

ادامه ...

همه‌ی ما با تعریف ضرب ماتریس‌های مربعی آشنایی داریم. حاصلضرب ماتریس‌های مربعی A و B به صورت زیر تعریف می‌شود:

  

\[ A=(a_{ij})_{n \times n} = \qquad , \qquad B=(b_{ij})_{n \times n} \] \[ C = A \times B = (c_{ij})_{n \times n} \qquad ; \qquad c_{ij}= \sum_{k=1}^{n} a_{ik} \; b{kj} \]

  

به عنوان مثال در حالت $n = 2$ داریم:

  

\[ \begin{pmatrix} a_{11} & a_{12}\\ a_{21} & a_{22} \end{pmatrix} \times \begin{pmatrix} b_{11} & b_{12}\\ b_{21} & b_{22} \end{pmatrix} = \begin{pmatrix} a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22}\\ a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} \end{pmatrix} \]

ادامه ...

مسئله‌ی ضرب زنجیره‌ای ماتریس‌ها و پرانتزبندی بهینه‌ی آن یکی از مثال‌های مشهور کاربرد برنامه‌نویسی پویا در حل مسائل بهینه‌سازی است.

فرض کنید قصد داریم حاصلضرب عبارت ماتریسی $ A_{3 \times 7} \times B_{7 \times 8 } \times C_{8 \times 4} $ را محاسبه کنیم. می‌دانیم که ضرب ماتریس‌ها خاصیت شرکت‌پذیری داشته، اما خاصیت جابجایی ندارد. بنابراین رعایت ترتیب ضرب آنها مهم است. پرانتزبندی‌های مختلف ضرب ماتریس‌ها حالت‌های مختلف محاسبه آن را به ما می‌دهند:

  

\[1: A \times (B \times C) \]

ادامه ...

الگوریتمستان در تلگرام

   

 

پیوند کوتاه:
»  کتاب Concrete Mathematics
معرفی کتاب Concrete Mathematics برای علاقه‌مندان حل سوالات الگوریتمی و شرکت‌کنندگان مسابقات برنامه‌نویسی با قابلیت دانلود
برچسب‌ها
#ترجمه‌ی فارسی سوالات برنامه‌نویسی #حل مسئله‌‌ی الگوریتمی #تمرین المپیاد کامپیوتر #ماتریس #مسابقه برنامه‌نویسی #آموزش طراحی الگوریتم #تکنیک‌های طراحی الگوریتم #کتاب الگوریتم #الگوریتم #جستجوی اول سطح #نکات برنامه‌نویسی #نمونه سوالات مسابقه برنامه‌نویسی #الگوریتم‌های برنامه‌نویسی پویا #حل سوالات UVa Online Judge #مسئله‌های الگوریتمی #دانلود کتاب #الگوریتم فلوید-وارشال #الگوریتم دایکسترا #ساختمان داده #آمادگی مسابقه برنامه‌نویسی #نمونه سوال فارسی مسابقات ACM #کتاب مسابقات برنامه‌نویسی #سوالات چالشی برنامه‌نویسی #درخت پوشا #حل سوالات Timus Online Judge #برنامه‌نویسی ++C #مسئله‌ی کوله‌پشتی #آموزش برنامه‌نویسی ++C #کتابخانه قالب استاندارد ++C #الگوریتم‌های کوتاهترین مسیر #الگوریتم‌های مرتب‌سازی #الگوریتم‌های بازگشتی #آمادگی المپیاد کامپیوتر #مسئله‌های برنامه‌نویسی #برنامه‌نویسی #الگوریتم‌های تقسیم و غلبه #الگوریتم‌های عقبگرد #پیمایش گراف #آموزش الگوریتم #مسابقه برنامه نویسی #ترجمه فارسی سوالات کتاب Programming Challenges #مسأله‌های الگوریتمی #گراف #وبلاگ #کتاب الکترونیکی #مسابقات برنامه‌نویسی ACM #آموزش ساختمان داده‌ها #الگوریتم‌های مسیریابی #نمونه سوال مسابقه ACM #معرفی وب‌سایت #ترجمه‌ی فارسی سوالات UVa Online Judge #ویدئوی آموزشی #مسابقات برنامه‌نویسی #نمونه سوال فارسی مسابقه‌ی ACM #محاسبات ریاضی #مسأله‌های برنامه‌نویسی #الگوریتم‌های حریصانه #آمادگی مسابقه ACM #سوالات UVa Online Judge #درخت‌ها #جستجوی اول عمق #حل سوالات مسابقات برنامه‌نویسی #سوالات مسابقات برنامه‌نویسی بیان #سوالات برنامه‌نویسی #منبع آموزشی #حل سوالات ACM-ICPC #نمونه سوال فارسی مسابقات برنامه‌نویسی #تمرین مسابقه‌ی برنامه‌نویسی ای‌سی‌ام #ترجمه‌ی فارسی سوالات ACM #سوالات مسابقات ACM-ICPC #تمرین مسابقه برنامه‌نویسی #تمرین طراحی الگوریتم #صف #الگوریتم‌های گراف