الگوریتمستان - الگوریتم
نوشتهها با موضوع الگوریتم
الگوریتمستان
برچسبها
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
الگوریتم
برنامهنویسی
مسئله الگوریتمی
ریاضیات
منبع آموزشی
پایتون
یادگیری ماشین
هوش مصنوعی
الگوریتم تقسیم و غلبه
الگوریتم بازگشتی
طراحی الگوریتم
الگوریتم برنامهنویسی پویا
مقاله آموزشی
محاسبات ریاضی
نکته برنامهنویسی
کتاب مسابقات برنامهنویسی
پیمایش گراف
الگوریتم مرتبسازی
ساختمان داده
الگوریتم حریصانه
الگوریتم گراف
کتاب یادگیری ماشین
الگوریتم مسیریابی
ماتریس
ویدئوی آموزشی
جستجوی اول سطح
بازی فکری
الگوریتم کوتاهترین مسیر
درخت دودویی
الگوریتم دایکسترا
امنیت اطلاعات
مسئله کولهپشتی
صف
الگوریتم فلوید-وارشال
جستجوی اول عمق
معرفی وبسایت
الگوریتم عقبگرد
الگوریتم آنلاین
پایتون
الگوریتم حریصانه
الگوریتم
تعریف الگوریتم آنلاین در ویکیپدیا به این صورت است: «در علوم رایانه الگوریتم بَرخط به الگوریتمی اطلاق میشود که ورودی آن به صورت دنبالهای از تقاضاها در دسترس الگوریتم قرار میگیرد. به عبارت دیگر، ورودی این الگوریتمها از ابتدا در اختیار الگوریتم نیست ...
کتاب Competetive Programming
سیپلاسپلاس
آمادگی مسابقه برنامهنویسی
الگوریتم
ویراست سوم کتاب برنامهنویسی رقابتی با نام کامل Competitive Programming 3: The New Lower Bound of Programming Contests با تلاش Steven Halim و Felix Halim از مربیان تیمهای برنامهنویسی ACM-ICPC سنگاپور تالیف و در سال ۲۰۱۳ منتشر شده است که امروزه به عنوان یکی از منابع مناسب برای آمادگی تیمهای شرکتکننده در مسابقات برنامهنویسی الگوریتمی بویژه مسابقات برنامهنویسی ACM-ICPC توصیه میشود ...
کتاب راهنمای برنامهنویسان رقابتی
آمادگی مسابقه برنامهنویسی
الگوریتم
منبع آموزشی
کتاب Competitive Programmer's Handbook (راهنمای برنامهنویسان رقابتی) کتابچهای است که در آن عموم مباحث مورد نیاز جهت شرکت در رقابتهای برنامهنویسی همچون المپیاد کامپیوتر دانشآموزی یا مسابقات برنامهنویسی دانشجویی به صورت مختصر و مفید یک جا جمع شده است ...
پیچیدگی زمانی اجرای الگوریتم
سیپلاسپلاس
الگوریتم
طراحی الگوریتم
زمانی که برای حل یک مسئله الگوریتم طراحی میکنیم یا قصد استفاده از یک الگوریتم از پیش ابداع شده را داریم، عموما برایمان مهم است بدانیم کارآیی الگوریتم چگونه است و تا چه حد میتوان روی آن حساب باز کرد ...
دوره طراحی و تحلیل الگوریتم دانشگاه استنفورد
الگوریتم
منبع آموزشی
ویدئوی آموزشی
ویدئوهای جلسات آموزشی طراحی و تحلیل الگوریتم پروفسور Tim Roughgarden دانشگاه استنفورد از طریق پیوندهای زیر قابل مشاهده است. در این دوره هر الگوریتم یا ساختمان داده بحث شده، همراه با تحلیل، مثالهای کاربردی یا جایگاه مورد نیاز آنها است ...
دورهی مسابقات برنامهنویسی استنفورد
آمادگی مسابقه برنامهنویسی
مسئله الگوریتمی
الگوریتم
مستندات دوره «Introduction to Programming Contests» دانشگاه استنفورد با تدریس Jaehyun Park (مربی تیمهای ACM-ICPC این دانشگاه) شامل اسلایدها، سوالات برگزیده برای تمرین در موضوعات مختلف ریاضیات، ساختمان دادهها و الگوریتمها به همراه نکات برنامهنویسی از پیوند زیر قابل مشاهده و دریافت هستند: CS 97SI: Introduction to Programming Contests ...
کلاس Programming Challenges
آمادگی مسابقه برنامهنویسی
الگوریتم
منبع آموزشی
کتاب Programming Challenges: The Programming Contest Training Manual اثر Steven Skiena و Miguel Revilla یکی از کتابهای مناسب تمرین گام به گام برای شرکت در مسابقات برنامهنویسیای همچون المپیاد کامپیوتر و ACM-ICPC است ...
دنباله اعداد فیبوناچی
سیپلاسپلاس
ریاضیات
الگوریتم تقسیم و غلبه
بسیاری از فرآیندهای طبیعی از جمله ترکیب ساختار بدن موجودات زنده نظم مشخصی دارند و از دنباله اعدادی تبعیت میکنند که امروزه با نام دنباله اعداد فیبوناچی (فیبوناتچی - Fibonacci) شناخته میشود. مشهورترین خاصیت این اعداد نسبت دو جمله متوالی آنها به ازای جملات بزرگ دنباله است که به عدد طلایی مشهور است ...
کتاب طراحی الگوریتم با رویکردی خلاقانه
آمادگی مسابقه برنامهنویسی
الگوریتم
منبع آموزشی
کتاب Introduction to Algorithms: A Creative Approach را میتوان مکملی بر استفاده از کتاب Introduction to Algorithms (مشهور به کتاب CLRS) دانست. در این کتاب علاوه بر معرفی تکنیکهای مختلف طراحی الگوریتمها و روشهای حل برخی مسائل الگوریتمی، روشهای تحلیل و حل آنها با جزئیات بیشتر و به صورت گام به گام بررسی شده است ...
الگوریتم جستجوی اول عمق (DFS)
سیپلاسپلاس
پیمایش گراف
الگوریتم مسیریابی
الگوریتم جستجوی اول عمق (Depth First Search - DFS) یا نامهای دیگری همچون جستجو در عمق، پیمایش اول عمق، پیمایش عمق اول الگوریتمی مشابه الگوریتم جستجوی اول سطح (BFS) برای پیمایش گراف است. این دو الگوریتم خواص و کاربردهای مشترک بسیاری دارند و تفاوت اصلی در این است که در هر تکرار الگوریتم DFS تنها یکی از گرههای مجاور گره پردازش شده برای مرحله بعد انتخاب میشود ...
کتاب مقدمهای بر الگوریتمها
الگوریتم
منبع آموزشی
طراحی الگوریتم
کتاب Introduction to Algorithms (مشهور به کتاب CLRS) از انتشارات MIT اثر Thomas H. Cormen ، Charles E. Leiserson ، Ronald L. Rivest و Clifford Stein کتاب جامع مباحث الگوریتمها و ساختمان دادهها است که منبع درسی بسیاری از دانشگاههای معتبر بوده و تا کنون بیش از سی هزار مقاله و کتاب با ارجاع به آن نگارش یافته است ...
الگوریتم فلوید-وارشال
سیپلاسپلاس
پایتون
الگوریتم برنامهنویسی پویا
الگوریتم فلوید-وارشال (Floyd-Warshall) یک الگوریتم مبتنی بر روش برنامهنویسی پویا برای محاسبه کوتاهترین مسیر بین هر دو جفت گره گرافهای وزندار است. دو الگوریتم رایج دایکسترا و بلمن-فورد روشهای محاسبه کوتاهترین مسیر از مبدأ ثابت هستند که در صورت تکرار آنها به ازای هر گره عملکردی همانند الگوریتم فلوید-وارشال دارند ...
الگوریتم جستجوی اول سطح (BFS)
سیپلاسپلاس
پیمایش گراف
الگوریتم مسیریابی
الگوریتم پیمایش اول سطح یا جستجوی اول سطح (Breadth First Search - BFS) از جمله الگوریتمهای مشهور پیمایش و جستجوی گراف است که در حل مسائل الگوریتمی و هوش مصنوعی کاربرد دارد. این الگوریتم برای پیمایش و جستجوی گراف از یک صف برای نگهداری ترتیب جستجو استفاده میکند ...
الگوریتم دایجسترا
سیپلاسپلاس
پیمایش گراف
الگوریتم حریصانه
الگوریتم دایکسترا (دیکسترا، دایجسترا - Dijkstra) یک راهکار حریصانه برای یافتن کوتاهترین مسیر از مقصد ثابت (تک منبع) به سایر گرههای گراف وزندار است. این گراف میتواند معرف مسیرهای یک شهر و تقاطعهای آن باشد که انبار شرکت در یک گره آن قرار داشته و هدف یافتن کوتاهترین مسیر به هر محل دیگر از این انبار است ...
الگوریتمهای حریصانه
سیپلاسپلاس
الگوریتم حریصانه
الگوریتم
روش حریصانه (Greedy) یکی از روشهای مشهور و پرکاربرد طراحی الگوریتمها است که با ساختاری ساده در حل بسیاری از مسائل استفاده میشود. این روش اغلب در حل مسائل بهینهسازی استفاده شده و در پارهای مواقع جایگزین مناسبی برای روشهایی مانند برنامهریزی پویا است ...
دنباله اعداد کاتالان و محاسبه آن
سیپلاسپلاس
ریاضیات
الگوریتم تقسیم و غلبه
دنباله اعداد کاتالان (Catalan Numbers) یکی از دنبالههای عددی مشهور ریاضیات است که برای عدد نامنفی n به صورت $C_n$ نمایش داده میشود. $C_n:\qquad 1,\;1,\;2,\;5,\;14,\;42,\;132,\;429,\;1430,\;4862,\;16796,\;\cdots$ این دنباله کاربردهای بسیاری در مسائل شمارشی دارد ...
ضرب زنجیرهای ماتریسها
سیپلاسپلاس
ریاضیات
الگوریتم تقسیم و غلبه
مسئله ضرب زنجیرهای ماتریسها و پرانتزبندی بهینه آن یکی از مثالهای مشهور کاربرد برنامهنویسی پویا در حل مسائل بهینهسازی است. فرض کنید قصد داریم حاصلضرب عبارت ماتریسی $ A_{3 \times 7} \times B_{7 \times 8 } \times C_{8 \times 4} $ را محاسبه کنیم ...
الگوریتمهای تقسیم و حل
سیپلاسپلاس
الگوریتم تقسیم و غلبه
الگوریتم بازگشتی
یکی از روشهای پرکاربرد و محبوب برای طراحی الگوریتمها روش Divide and Conquer است که در زبان فارسی به صورت الگوریتمهای تقسیم و حل یا تقسیم و غلبه ترجمه شده است. در این روش، دادهها به دو یا چند دسته تقسیم شده و حل میشوند ...
الگوریتمهای برنامهنویسی پویا
سیپلاسپلاس
الگوریتم برنامهنویسی پویا
الگوریتم
یکی از روشهای پرکاربرد و مشهور طراحی الگوریتم روش برنامهنویسی پویا (یا برنامهریزی پویا، برنامهسازی پویا - Dynamic Programming) است. این روش همچون روش تقسیم و حل (Divide and Conquer) بر پایه تقسیم مسئله بر زیرمسئلهها کار میکند ...
الگوریتم مرتبسازی هرمی
سیپلاسپلاس
الگوریتم مرتبسازی
الگوریتم
مرتبسازی هرمی (Heap Sort) یکی از روشهای مشهور مرتبسازی دادهها است که بر اساس خصوصیات درخت heap (هیپ، هرم یا کپه) و عملکرد آن پیادهسازی شده است. بر اساس تعریف درخت heap، در یک max-heap (یا min-heap) بزرگترین (یا کوچکترین) مقدار بین دادهها همواره در ریشه درخت قرار دارد ...
کتاب چالشهای برنامهنویسی
آمادگی مسابقه برنامهنویسی
الگوریتم
منبع آموزشی
کتاب Programming Challenges: The Programming Contest Training Manual از انتشارات معتبر Springer کتاب مفیدی برای آمادگی شرکت در مسابقات برنامهنویسی است که نویسندگان آن به صورت گام به گام، خلاصه و مفید، به مفاهیم و نکات مهم برنامهنویسی، ساختمان دادهها، محاسبات ریاضی و طراحی الگوریتمها اشاره داشته و با طرح مسائل متفاوت از هر موضوع، خواننده را به چالش حل مسئله کشیدهاند ...
الگوریتم ضرب استراسن
سیپلاسپلاس
ریاضیات
الگوریتم تقسیم و غلبه
ضرب ماتریسها یک عمل ریاضی است برای ترکیب دو ماتریس است که در مباحث مختلفی مانند گرافیک کامپیوتری، فیزیک و یادگیری ماشین کاربرد دارد. در این عملیات، برای هر عنصر از ماتریس حاصل، عناصر سطرهای ماتریس اول با عناصر ستونهای ماتریس دوم ضرب میشوند و مجموع این ضربها بهعنوان عنصر متناظر در ماتریس جدید قرار میگیرد ...
پیمایش درخت دودویی
سیپلاسپلاس
الگوریتم تقسیم و غلبه
الگوریتم بازگشتی
در علم کامپیوتر و ساختمان دادههای برنامهنویسی منظور از درخت دودویی درختی است که از یک گره به نام ریشه و حداکثر دو زیردرخت برای این گره تشکیل شده است که هر کدام از این دو زیردرخت خودشان یک درخت دودویی هستند ...
الگوریتم مرتبسازی سریع
سیپلاسپلاس
پایتون
الگوریتم تقسیم و غلبه
روش مرتبسازی سریع (Quick Sort) یکی از الگوریتمهای مشهور مرتبسازی دادهها است. این الگوریتم طی مراحل بازگشتی زیر یک روش تقسیم و غلبه برای مرتب کردن دادهها ارائه مینماید: 1- انتخاب عنصر محوری: یکی از عناصر آرایه به عنوان عنصر محوری (pivot) - به عنوان مثال عنصر اول - انتخاب میشود ...
محاسبه ضرایب دوجملهای
سیپلاسپلاس
ریاضیات
الگوریتم تقسیم و غلبه
ترکیب (Combination) به انتخاب تعدادی عنصر از یک مجموعه بزرگتر بدون در نظر گرفتن ترتیب آنها اشاره دارد. در ترکیب، برخلاف جایگشت (Permutation)، ترتیب انتخاب عناصر مهم نیست. این مفهوم در ریاضیات کاربرد گستردهای دارد و یکی از موارد اصلی استفاده از آن در محاسبهی ضرایب بسط دوجملهای است ...
الگوریتم مرتبسازی ادغامی
سیپلاسپلاس
پایتون
الگوریتم تقسیم و غلبه
روش مرتبسازی ادغامی (Merge Sort) یک روش مرتبسازی مبتنی بر مقایسه عناصر با استفاده از روش تقسیم و غلبه است. این روش از مراحل بازگشتی زیر تشکیل یافته است: 1- آرایه را به دو زیرآرایه با اندازه تقریبا یکسان تقسیم کن ...
الگوریتمهای ریشهیابی
ریاضیات
پایتون
الگوریتم تقسیم و غلبه
منظور از ریشهها یک تابع مقادیری برای متغیرهای ورودی آن هستند که به ازای آنها خروجی تابع صفر شود. به عنوان مثال خروجی تابع $f(x)=2x-4$ به ازای $x=2$ صفر یا مقدار $2$ ریشه معادله $2x-4=0$ است. به همین ترتیب در مورد معادلات درجه دوم نیز میدانیم چطور میتوانیم به ریشه یا ریشهها در صورت موجود بودن دست پیدا کنیم ...
الگوریتم مرتبسازی درجی
سیپلاسپلاس
پایتون
الگوریتم مرتبسازی
روش مرتبسازی درجی (Insertion Sort) یکی از روشهای مقدماتی مرتبسازی مبتنی بر مقایسه عناصر است که در مقایسه با روشهای دیگر بیشتر مورد توجه قرار دارد. قفسه کتابی را در نظر بگیرید که قصد دارید کتابها را بر اساس عنوان و به ترتیب حروف الفبا مرتب کنید ...
کتاب مقدمهای بر مسابقات برنامهنویسی
آمادگی مسابقه برنامهنویسی
الگوریتم
منبع آموزشی
کتاب مقدمهای بر مسابقات برنامهنویسی (با عنوان انگلیسی An Introduction to Programming Contests) کتابی به زبان فارسی مناسب برای علاقهمندان به شرکت در مسابقات برنامهنویسی است که توسط احمد یوسفان، محسن بیگلری، فائزه میرزایی و امین بابادی، از شرکتکنندگان در مسابقات برنامهنویسی ACM-ICPC، نوشته شده است ...
الگوریتم مرتبسازی حبابی
سیپلاسپلاس
پایتون
الگوریتم مرتبسازی
یکی از روشهای مرتبسازی، روش مرتبسازی حبابی (Bubble Sort) است که به آن روش تعویض استاندارد (Standard Exchange) نیز میگویند. این روش شامل چند مرحله است که در هر مرحله یک عنصر از لیست به طور قطع در محل مناسب خود قرار میگیرد ...
الگوریتم مرتبسازی انتخابی
سیپلاسپلاس
پایتون
الگوریتم مرتبسازی
روش مرتبسازی انتخابی (Selection Sort) یکی از روشهای اولیه مرتبسازی بر اساس مقایسه عناصر است. این الگوریتم طی چند مرحله عناصر لیست را به صورت صعودی یا نزولی مرتب میکند. به این ترتیب که در هر مرحله با بررسی عناصر نامرتب، بزرگترین (یا کوچکترین) عنصر را پیدا کرده و به انتهای لیست منتقل میکند ...
محاسبه دترمینان ماتریس
ریاضیات
الگوریتم تقسیم و غلبه
الگوریتم بازگشتی
دترمینان ماتریس مربعی - که به صورت $ \vert A \vert $ یا $ det( A ) $ نمایش داده میشود - یکی از مفاهیم مشهور جبر خطی است که کاربردهای بسیاری در علوم مختلف دارد. امکان محاسبه سریع دترمینان یک ماتریس با ابعاد بزرگ بحث مهمی است که در ادامه سه روش محاسباتی رایج و پیچیدگی زمانی آنها مرور خواهند شد ...