الگوریتمستان - برنامه‌نویسی، طراحی الگوریتم و آمادگی مسابقات برنامه‌نویسی
الگوریتمستان
کاربران حاضر در وب‌گاه: ۲ کاربر - عنوان‌ و توضیح تمامی نوشته‌های وب‌گاه را در نقشه‌ی وب‌گاه ببینید.
جستجو در نوشته‌های وب‌گاه:   
تعداد:  ۱۶۲۹

میانگین:  ۴.۳۳  از  ۵.۰۰
امروز:  ۵۷۸ بازدید

۲۴ ساعت گذشته:  ۷۲۵  بازدید

۷ روز گذشته:  ۴۹۹۶  بازدید

۳۰ روز گذشته:  ۳۱۱۷۱  بازدید
الگوریتمستان در تلگرام

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

Twitter       FaceBook
چطور شاخ غول فاکتوریل را بشکنیم

معرفی الگوریتم جستجوی اول عمق (DFS) برای پیمایش گراف و کاربردهای آن به همراه قطعه کد به زبان برنامه‌نویسی ++C
آشنایی با الگوریتم دایکسترا برای یافتن کوتاهترین مسیر تک‌مبدأ در گراف وزن‌دار بدون یال منفی با قطعه کد به زبان ++C
عناوین بخشی از مباحث پرکاربرد در سوالات مسابقات برنامه‌نویسی
بحث در مورد ضرب زنجیره‌ای ماتریس‌ها و روش پیاده‌سازی الگوریتم پرانتزبندی بهینه‌ی آن با روش تقسیم و حل و روش برنامه‌نویسی پویا
آشنایی با الگوریتم استراسن برای محاسبه‌‌ی حاصلضرب ماتریس‌ها
آشنایی با کلاس‌های حافظه و کاربرد آنها در زبان ++C
معرفی کتاب Art of Programming Contest برای علاقه‌مندان حل سوالات الگوریتمی و شرکت‌کنندگان مسابقات برنامه‌نویسی با قابلیت دانلود نسخه‌ی الکترونیکی


آشنایی با الگوریتم دایکسترا برای یافتن کوتاهترین مسیر تک‌مبدأ در گراف وزن‌دار بدون یال منفی با قطعه کد به زبان ++C
بررسی مسأله‌ی Simple Addition از سوالات آمادگی مسابقات برنامه‌نویسی
معرفی متغیرهای مرجع در زبان برنامه‌نویسی ++C و آشنایی با مهمترین کاربردهای آنها
آشنایی با روش حریصانه و کاربردهای آن مانند مسأله‌ی خرد کردن پول
بحث در مورد مسأله‌ی کاشیکاری یا فرش کردن زمین با موزاییک به روش تقسیم و حل
بررسی روش‌های مختلف محاسبه‌ی ضرایب دوجمله‌ای نیوتن یا ترکیب دو عدد با قطعه کد به زبان برنامه‌نویسی ++C
معرفی کتاب Art of Programming Contest برای علاقه‌مندان حل سوالات الگوریتمی و شرکت‌کنندگان مسابقات برنامه‌نویسی با قابلیت دانلود نسخه‌ی الکترونیکی

1629 1.00 4.33 5.00
وب‌گاه آموزشی برنامه‌نویسی، طراحی الگوریتم و آمادگی مسابقات برنامه‌نویسی الگوریتمستان الگوریتمستان FB Twitter Google
» 

فایل سرآیند algorithm


        معرفی فایل سرآیند algorithm از کتابخانه قالب استاندارد زبان برنامه‌نویسی ++C به همراه نمونه کد

فایل سرآیند (هدر فایل) algorithm از جمله فایل‌های سرآیند تعاریف کتابخانه‌ قالب استاندارد (STL) زبان برنامه‌نویسی ++C‌ است که به طور عمده شامل توابعی برای کار با مجموعه‌ای از داده‌ها (آرایه‌ها و لیست‌ها) است. با استفاده از این توابع به راحتی می‌توان با تنها یک خط کد عملیات جستجو، مرتب‌سازی، شمارش و بررسی یک خاصیت در تمامی داده‌های یک بازه‌ی مشخص را انجام داد.

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

      

ادامه ...

» 

مسأله‌ی بشکه‌های آب


        بررسی مسأله‌ی بشکه‌های آب (Water Barrels)، از سوالات مسابقات برنامه‌نویسی بیان

مسأله

    $n$ بشکه‌ی آب با تعدادی لوله به هم وصل شده‌اند. هر بشکه استوانه‌ای عمودی با سطح مقطع یک متر مربع و ارتفاع نامحدود است که با عدد یکتا بین 1 تا $n$ شماره‌گذاری شده است. $i$-امین لوله بشکه‌ی $ x_i $ و $y_i$ را به هم متصل می‌کند. یک سر این لوله در ارتفاع $h_i$ متر به بشکه‌ی $ x_i $ متصل است و سر دیگر آن در همان ارتفاع به بشکه‌ی $y_i$ متصل است. در زمان صفر بشکه‌ها خالی هستند و یک جریان آب به صورت پیوسته با سرعت یک متر مکعب بر ساعت در بشکه‌ی شماره‌ی یک می‌ریزد. اگر آب بشکه‌ای به ارتفاع لوله‌ای برسد، آب در لوله جریان پیدا می‌کند و می‌تواند وارد بشکه‌ی دیگر شود. فرض کنید قطر لوله‌ها ناچیز است و سرعت آب در لوله‌ها بسیار زیاد است.

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

ادامه ...

» 

کتاب طراحی الگوریتم با رویکردی خلاقانه


        معرفی کتاب Introduction to Algorithms: A Creative Approach با قابلیت دانلود نسخه‌ی الکترونیکی

کتاب Introduction to Algorithms: A Creative Approach را می‌توان مکملی بر استفاده از کتاب Introduction to Algorithms (مشهور به کتاب CLRS) دانست. در این کتاب علاوه بر معرفی تکنیک‌های مختلف طراحی الگوریتم‌ها و روش‌های حل برخی مسائل الگوریتمی، روش‌های تحلیل و حل آنها با جزئیات بیشتر و به صورت گام به گام بررسی شده است. به همین دلیل نیز از جمله منابع اصلی پیشنهادی به متقاضیان شرکت در المپیادهای کامپیوتر و مسابقات برنامه‌نویسی برای یادگیری طراحی و تحلیل الگوریتم‌ها است.

      

کتاب طراحی الگوریتم با رویکردی خلاقانه

ادامه ...


» 

مرتب‌سازی درجی


        آشنایی با روش مرتب‌سازی درجی، همراه با قطعه کد به زبان برنامه‌نویسی ++C

روش مرتب‌سازی درجی (Insertion Sort) یکی از روش‌های مقدماتی مرتب‌سازی مبتنی بر مقایسه‌ی عناصر است که در مقایسه با روش‌های دیگر بیشتر مورد توجه قرار دارد.

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

    عملکرد این الگوریتم به گونه‌ای است که در پایان هر مرحله قسمتی از داده‌ها به صورت کامل مرتب هستند. در مرحله‌ی بعدی نیز داده‌ای از میان داده‌های غیرمرتب به این قسمت مرتب وارد شده و در محل مناسب درج می‌شود. اگر بخواهیم با روش مرتب‌سازی درجی لیست اعداد زیر را به صورت صعودی (کوچک به بزرگ) مرتب ‌کنیم، در پایان هر مرحله ترتیب عناصر به صورت زیر خواهد بود:

ادامه ...

» 

معمای هشت وزیر


        بررسی معمای هشت وزیر یا n وزیر و راهبرد عقبگرد برای حل مسأله

معمای هشت وزیر از جمله مسائل کلاسیک مباحث طراحی الگوریتم است که در حالت کلی‌تر با عنوان معمای n وزیر یا معمای چند وزیر مطرح می‌شود.

    

برای افرادی که با بازی شطرنج آشنایی ندارند

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

      

معمای هشت وزیر

ادامه ...

» 

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


        آشنایی با الگوریتم دایکسترا برای یافتن کوتاهترین مسیر تک‌مبدأ در گراف وزن‌دار بدون یال منفی با قطعه کد به زبان ++C

الگوریتم دایکسترا (دیکسترا، دایجسترا - Dijkstra) یک راهکار حریصانه برای یافتن کوتاهترین مسیر از مقصد ثابت (تک منبع) به سایر گره‌های گراف وزن‌دار است. این گراف می‌تواند معرف مسیرهای یک شهر و تقاطع‌های آن باشد که انبار شرکت در یک گره آن قرار داشته و هدف یافتن کوتاهترین مسیر به هر محل دیگر از این انبار است. طبیعتا این الگوریتم در یافتن کوتاهترین مسیر بین دو گره مشخص نیز کاربرد دارد. تنها شرط لازم برای استفاده از این الگوریتم نامنفی بودن وزن یال‌های گراف است.

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

ادامه ...

» 

محاسبه‌ی دترمینان ماتریس


        بررسی روش‌های بسط لاپلاس، گاوس، فرمول تحویل و ساروس، برای محاسبه‌ی دترمینان ماتریس مربعی و پیچیده‌گی زمانی آنها

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

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

      

\[ det( \begin{bmatrix} a \end{bmatrix} ) = \vert \begin{bmatrix} a \end{bmatrix} \vert = a \]

      

    اما اگر مرتبه‌ی ماتریس بزرگتر از یک باشد ($n > 1$) دترمینان را به یکی از روش‌های زیر می‌توان محاسبه کرد.

ادامه ...
پیوندهای مرتبط
تمامی نوشته‌های وب‌گاه الگوریتمستان تحت قرارداد باز Creative Commons Attribution-ShareAlike v4.0 هستند.