آرین سلیمان‌زاده
  • خانه
  • وبلاگ
  • پادکست‌ها
  • ویدیوها
  • کتابخانه
  • تماس با من
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
پنل•تماس سریع

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

درخواست همکاری یا مشاوره

پیام خود را درباره همکاری، مشاوره، توسعه محصول یا پروژه نرم‌افزاری ارسال کنید.

LinkedInپاسخ سریع
کتابخانه الگوریتم و ساختمان داده

الگوریتم‌ها به شکل ایده‌های خواندنی، با کد در کنارشان.

فهرست موضوعی برگرفته از trekhleb را مرور کن. هر صفحه حالا یک درس کامل دو‌زبانه است: توضیح ساده، مراحل اجرا، Complexity، کد JavaScript خوانا، نکات مصاحبه، اشتباهات رایج و مسیر ادامه مطالعه.

112موضوع مطالعاتی
19ساختمان داده
93الگوریتم
15دسته
001⌁

لیست پیوندی

لیست پیوندی داده‌ها را داخل Node نگه می‌دارد. هر Node علاوه بر مقدار، یک اشاره‌گر به Node بعدی دارد؛ بنابراین عناصر لازم نیست مثل Array پشت سر هم قرار بگیرند.

پایهبخوان →
002⌁

لیست پیوندی دوطرفه

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

پایهبخوان →
003⌁

صف

Queue یا صف یک ساختمان داده FIFO است؛ یعنی اولین داده‌ای که وارد می‌شود، اولین داده‌ای است که خارج می‌شود.

پایهبخوان →
004⌁

پشته

Stack یا پشته یک ساختمان داده LIFO است؛ یعنی آخرین چیزی که وارد می‌شود، اولین چیزی است که خارج می‌شود.

پایهبخوان →
005⌁

صف دو سر

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

پایهبخوان →
006⌁

جدول هش

Hash Table با استفاده از تابع Hash، یک key را به محل ذخیره‌سازی یا bucket تبدیل می‌کند و هدفش lookup، insertion و deletion بسیار سریع در حالت متوسط است.

پایهبخوان →
007⌁

هیپ

Heap یک درخت کامل است که معمولاً داخل Array ذخیره می‌شود. در Min-Heap کوچک‌ترین مقدار در ریشه و در Max-Heap بزرگ‌ترین مقدار در ریشه قرار می‌گیرد.

پایهبخوان →
008⌁

صف اولویت

Priority Queue داده را بر اساس اولویت خارج می‌کند، نه لزوماً بر اساس زمان ورود. معمولاً با Heap پیاده‌سازی می‌شود.

پایهبخوان →
009⌁

درخت Trie

درخت Trie یک ساختمان داده از دسته ساختمان داده است. این ساختمان داده، مقادیر و ارتباط بین آن‌ها را طوری سازمان‌دهی می‌کند که عملیات مهم هزینه قابل‌پیش‌بینی داشته باشند.

پیشرفتهبخوان →
010⌁

درخت

درخت یک ساختمان داده از دسته ساختمان داده است. این ساختمان داده، مقادیر و ارتباط بین آن‌ها را طوری سازمان‌دهی می‌کند که عملیات مهم هزینه قابل‌پیش‌بینی داشته باشند.

پیشرفتهبخوان →
011⌁

درخت جست‌وجوی دودویی

در Binary Search Tree مقدارهای کوچک‌تر در زیر‌درخت چپ و مقدارهای بزرگ‌تر در زیر‌درخت راست قرار می‌گیرند؛ بنابراین درخت متعادل اجازه می‌دهد جست‌وجو هر بار فقط یک شاخه را ادامه دهد.

پیشرفتهبخوان →
012⌁

درخت AVL

AVL یک BST خودمتعادل‌شونده است که اختلاف ارتفاع زیر‌درخت چپ و راست هر Node را حداکثر 1 نگه می‌دارد و با Rotation تعادل را برمی‌گرداند.

پیشرفتهبخوان →
013⌁

درخت Red-Black

درخت Red-Black یک ساختمان داده از دسته ساختمان داده است. این ساختمان داده، مقادیر و ارتباط بین آن‌ها را طوری سازمان‌دهی می‌کند که عملیات مهم هزینه قابل‌پیش‌بینی داشته باشند.

پیشرفتهبخوان →
014⌁

درخت Segment

درخت Segment یک ساختمان داده از دسته ساختمان داده است. این ساختمان داده، مقادیر و ارتباط بین آن‌ها را طوری سازمان‌دهی می‌کند که عملیات مهم هزینه قابل‌پیش‌بینی داشته باشند.

پیشرفتهبخوان →
015⌁

درخت Fenwick / BIT

درخت Fenwick / BIT یک ساختمان داده از دسته ساختمان داده است. این ساختمان داده، مقادیر و ارتباط بین آن‌ها را طوری سازمان‌دهی می‌کند که عملیات مهم هزینه قابل‌پیش‌بینی داشته باشند.

پیشرفتهبخوان →
016⌁

گراف

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

پیشرفتهبخوان →
017⌁

مجموعه‌های مجزا / Union-Find

Disjoint Set یا Union-Find مجموعه‌ای از گروه‌های جدا از هم را نگه می‌دارد و دو عملیات اصلی دارد: find برای پیدا کردن نماینده گروه و union برای ادغام دو گروه.

پیشرفتهبخوان →
018⌁

فیلتر Bloom

Bloom Filter یک ساختار احتمالاتی کم‌حافظه برای بررسی عضویت است. می‌تواند بگوید «قطعاً وجود ندارد» یا «احتمالاً وجود دارد»؛ پس false positive ممکن است ولی در مدل استاندارد false negative نداریم.

پیشرفتهبخوان →
019⌁

کش LRU

LRU Cache وقتی ظرفیت پر شود آیتمی را حذف می‌کند که از همه بیشتر زمان است استفاده نشده. طراحی کلاسیک O(1) از Hash Map + Doubly Linked List استفاده می‌کند.

پیشرفتهبخوان →
020⌁

عملیات بیتی

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

پایهبخوان →
021⌁

اعداد ممیز شناور دودویی

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

پایهبخوان →
022⌁

فاکتوریل

فاکتوریل n یا n! حاصل‌ضرب اعداد 1 تا n است و طبق تعریف 0! برابر 1 است.

پایهبخوان →
023⌁

اعداد فیبوناچی

در دنباله Fibonacci هر عدد از جمع دو عدد قبلی ساخته می‌شود؛ معمولاً دنباله با 0 و 1 شروع می‌شود.

پایهبخوان →
024⌁

عوامل اول

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

پایهبخوان →
025⌁

آزمون اول بودن

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

پایهبخوان →
026⌁

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

الگوریتم اقلیدس GCD را با تکرار تبدیل (a,b) به (b, a mod b) پیدا می‌کند تا remainder صفر شود.

پایهبخوان →
027⌁

کمترین مضرب مشترک

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

پایهبخوان →
028⌁

غربال اراتستن

غربال اراتستن همه اعداد اول تا n را با علامت‌زدن مضرب‌های اعداد اول به‌عنوان composite پیدا می‌کند.

پایهبخوان →
029⌁

تشخیص توان دو

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

پایهبخوان →
030⌁

مثلث پاسکال

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

پایهبخوان →
031⌁

اعداد مختلط

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

پایهبخوان →
032⌁

تبدیل رادیان و درجه

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

پایهبخوان →
033⌁

توان‌رسانی سریع

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

پایهبخوان →
034⌁

روش هورنر

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

پایهبخوان →
035⌁

ماتریس‌ها

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

پایهبخوان →
036⌁

فاصله اقلیدسی

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

پایهبخوان →
037⌁

افراز عدد صحیح

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

پیشرفتهبخوان →
038⌁

ریشه دوم با روش نیوتن

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

پیشرفتهبخوان →
039⌁

الگوریتم π لیو هویی

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

پیشرفتهبخوان →
040⌁

تبدیل فوریه گسسته

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

پیشرفتهبخوان →
041⌁

حاصل‌ضرب دکارتی

حاصل‌ضرب دکارتی یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پایهبخوان →
042⌁

درهم‌ریزی Fisher–Yates

درهم‌ریزی Fisher–Yates یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پایهبخوان →
043⌁

مجموعه توانی

مجموعه توانی یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
044⌁

جایگشت‌ها

جایگشت‌ها یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
045⌁

ترکیب‌ها

ترکیب‌ها یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
046⌁

طولانی‌ترین زیرتوالی مشترک

LCS طولانی‌ترین زیرتوالی‌ای را پیدا می‌کند که در هر دو ورودی با همان ترتیب نسبی وجود دارد، ولی لازم نیست عناصر پشت‌سرهم باشند.

پیشرفتهبخوان →
047⌁

طولانی‌ترین زیرتوالی صعودی

طولانی‌ترین زیرتوالی صعودی یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
048⌁

کوتاه‌ترین ابر‌توالی مشترک

کوتاه‌ترین ابر‌توالی مشترک یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
049⌁

مسئله کوله‌پشتی

در 0/1 Knapsack هر آیتم weight و value دارد و حداکثر یک بار انتخاب می‌شود. هدف بیشینه کردن value بدون عبور از ظرفیت است.

پیشرفتهبخوان →
050⌁

بیشترین زیرآرایه

Maximum Subarray به‌دنبال یک بخش پیوسته با بیشترین مجموع است و الگوریتم Kadane آن را در O(n) حل می‌کند.

پیشرفتهبخوان →
051⌁

مجموع ترکیبی

مجموع ترکیبی یک الگوریتم از دسته مجموعه‌ها و برنامه‌نویسی پویا است. این مسئله معمولاً با زیرمسئله‌های کوچک‌تر و stateهای تکرارشونده یا با تولید کنترل‌شده ترکیب‌ها قابل حل است.

پیشرفتهبخوان →
052⌁

فاصله همینگ

فاصله همینگ یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پایهبخوان →
053⌁

Palindrome / قرینه

Palindrome رشته یا دنباله‌ای است که بعد از normalization تعریف‌شده در مسئله، از چپ و راست یکسان خوانده می‌شود.

پایهبخوان →
054⌁

فاصله Levenshtein

Levenshtein Distance حداقل تعداد insert، delete و substitute تک‌کاراکتری برای تبدیل یک رشته به رشته دیگر است.

پیشرفتهبخوان →
055⌁

الگوریتم KMP

الگوریتم KMP یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پیشرفتهبخوان →
056⌁

الگوریتم Z

الگوریتم Z یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پیشرفتهبخوان →
057⌁

الگوریتم Rabin–Karp

الگوریتم Rabin–Karp یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پیشرفتهبخوان →
058⌁

طولانی‌ترین زیررشته مشترک

طولانی‌ترین زیررشته مشترک یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پیشرفتهبخوان →
059⌁

تطبیق عبارت منظم

تطبیق عبارت منظم یک الگوریتم از دسته رشته‌ها است. این الگوریتم رشته‌ای روی characterها، prefix/suffix یا state تطبیق/ویرایش کار می‌کند و تلاش می‌کند مقایسه‌های تکراری را کم کند.

پیشرفتهبخوان →
060⌁

جست‌وجوی خطی

Linear Search عناصر را یکی‌یکی بررسی می‌کند تا target پیدا شود یا به انتهای مجموعه برسیم.

پایهبخوان →
061⌁

جست‌وجوی پرشی

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

پایهبخوان →
062⌁

جست‌وجوی دودویی

Binary Search در یک فضای مرتب‌شده با هر مقایسه نصف محدوده باقی‌مانده را حذف می‌کند تا به target برسد.

پایهبخوان →
063⌁

جست‌وجوی درون‌یابی

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

پایهبخوان →
064⌁

مرتب‌سازی حبابی

Bubble Sort جفت‌های مجاور را مقایسه می‌کند و اگر ترتیب اشتباه باشد swap می‌کند؛ در هر دور مقدارهای بزرگ‌تر به سمت انتهای Array حرکت می‌کنند.

پایهبخوان →
065⌁

مرتب‌سازی انتخابی

مرتب‌سازی انتخابی یک الگوریتم از دسته مرتب‌سازی است. این الگوریتم مرتب‌سازی داده‌ها را با یک استراتژی مشخص مقایسه یا توزیع، به ترتیب موردنظر می‌چیند.

پایهبخوان →
066⌁

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

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

پایهبخوان →
067⌁

مرتب‌سازی Heap

مرتب‌سازی Heap یک الگوریتم از دسته مرتب‌سازی است. این الگوریتم مرتب‌سازی داده‌ها را با یک استراتژی مشخص مقایسه یا توزیع، به ترتیب موردنظر می‌چیند.

پایهبخوان →
068⌁

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

Merge Sort از Divide and Conquer استفاده می‌کند: Array را تا بخش‌های کوچک تقسیم می‌کند و سپس بخش‌های مرتب را دوباره merge می‌کند.

پایهبخوان →
069⌁

مرتب‌سازی سریع

Quicksort یک pivot انتخاب می‌کند، عناصر را نسبت به pivot partition می‌کند و سپس بخش‌های ایجادشده را بازگشتی مرتب می‌کند.

پایهبخوان →
070⌁

مرتب‌سازی Shell

مرتب‌سازی Shell یک الگوریتم از دسته مرتب‌سازی است. این الگوریتم مرتب‌سازی داده‌ها را با یک استراتژی مشخص مقایسه یا توزیع، به ترتیب موردنظر می‌چیند.

پایهبخوان →
071⌁

مرتب‌سازی شمارشی

Counting Sort به‌جای مقایسه عناصر، تعداد تکرار هر key را می‌شمارد و بعد خروجی را بر اساس همین شمارش‌ها می‌سازد.

پایهبخوان →
072⌁

مرتب‌سازی مبنایی

مرتب‌سازی مبنایی یک الگوریتم از دسته مرتب‌سازی است. این الگوریتم مرتب‌سازی داده‌ها را با یک استراتژی مشخص مقایسه یا توزیع، به ترتیب موردنظر می‌چیند.

پایهبخوان →
073⌁

مرتب‌سازی سطلی

مرتب‌سازی سطلی یک الگوریتم از دسته مرتب‌سازی است. این الگوریتم مرتب‌سازی داده‌ها را با یک استراتژی مشخص مقایسه یا توزیع، به ترتیب موردنظر می‌چیند.

پایهبخوان →
074⌁

پیمایش مستقیم

پیمایش مستقیم یک الگوریتم از دسته لیست‌های پیوندی است. این الگوریتم Linked List به‌جای index از referenceها عبور می‌کند؛ بنابراین ترتیب تغییر pointer/reference مهم‌ترین بخش correctness است.

پایهبخوان →
075⌁

پیمایش معکوس

پیمایش معکوس یک الگوریتم از دسته لیست‌های پیوندی است. این الگوریتم Linked List به‌جای index از referenceها عبور می‌کند؛ بنابراین ترتیب تغییر pointer/reference مهم‌ترین بخش correctness است.

پایهبخوان →
076⌁

DFS روی درخت

DFS روی درخت یک الگوریتم از دسته درخت‌ها است. این پیمایش درخت Nodeها را با یک ترتیب مشخص و بر اساس رابطه parent/child بازدید می‌کند.

پایهبخوان →
077⌁

BFS روی درخت

BFS روی درخت یک الگوریتم از دسته درخت‌ها است. این پیمایش درخت Nodeها را با یک ترتیب مشخص و بر اساس رابطه parent/child بازدید می‌کند.

پایهبخوان →
078⌁

DFS روی گراف

DFS یک مسیر را تا جای ممکن عمیق ادامه می‌دهد و سپس backtrack می‌کند. می‌توان آن را recursive یا با Stack پیاده‌سازی کرد.

پایهبخوان →
079⌁

BFS روی گراف

BFS گراف را level-by-level با Queue پیمایش می‌کند و در گراف بدون وزن shortest path از نظر تعداد edge را پیدا می‌کند.

پایهبخوان →
080⌁

الگوریتم Kruskal

Kruskal یک Minimum Spanning Tree می‌سازد: edgeها را بر اساس weight مرتب می‌کند و هر بار ارزان‌ترین edgeای را می‌گیرد که cycle نسازد.

پایهبخوان →
081⌁

الگوریتم Dijkstra

Dijkstra کوتاه‌ترین مسیر از یک مبدأ را در گراف با edgeهای وزن غیرمنفی پیدا می‌کند؛ هر بار Node حل‌نشده با کمترین distance فعلی انتخاب و relax می‌شود.

پیشرفتهبخوان →
082⌁

الگوریتم Bellman–Ford

Bellman–Ford کوتاه‌ترین مسیر از یک مبدأ را حتی با edgeهای وزن منفی پیدا می‌کند و می‌تواند negative cycle قابل‌دسترسی را تشخیص دهد.

پیشرفتهبخوان →
083⌁

الگوریتم Floyd–Warshall

Floyd–Warshall با Dynamic Programming کوتاه‌ترین مسیر بین تمام جفت Nodeها را محاسبه می‌کند و مرحله‌به‌مرحله Nodeهای میانی مجاز را اضافه می‌کند.

پیشرفتهبخوان →
084⌁

تشخیص دور در گراف

تشخیص دور در گراف یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
085⌁

الگوریتم Prim

Prim یک Minimum Spanning Tree را از یک Node شروع می‌کند و هر بار ارزان‌ترین edgeای را اضافه می‌کند که tree فعلی را به یک Node جدید وصل کند.

پیشرفتهبخوان →
086⌁

مرتب‌سازی توپولوژیک

Topological Sort برای DAG یک ترتیب خطی می‌سازد که در هر edge جهت‌دار u→v، ابتدا u و بعد v قرار می‌گیرد.

پیشرفتهبخوان →
087⌁

نقاط برشی

نقاط برشی یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
088⌁

پل‌ها در گراف

پل‌ها در گراف یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
089⌁

مسیر و دور اویلری

مسیر و دور اویلری یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
090⌁

دور همیلتونی

دور همیلتونی یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
091⌁

مولفه‌های قویاً همبند — Kosaraju

Kosaraju مولفه‌های قویاً همبند گراف جهت‌دار را با دو مرحله DFS و گراف transpose پیدا می‌کند.

پیشرفتهبخوان →
092⌁

مسئله فروشنده دوره‌گرد

مسئله فروشنده دوره‌گرد یک الگوریتم از دسته گراف‌ها است. این الگوریتم روی Nodeها و Edgeهای گراف کار می‌کند و معمولاً به representation مثل adjacency list/matrix و stateهایی مثل visited، distance، parent یا indegree نیاز دارد.

پیشرفتهبخوان →
093⌁

هش چندجمله‌ای

هش چندجمله‌ای یک الگوریتم از دسته رمزنگاری است. این cipher/hash آموزشی یک transformation روی کاراکترها یا state عددی نشان می‌دهد. برای یادگیری مفید است ولی بسیاری از cipherهای کلاسیک برای سیستم واقعی امن نیستند.

پایهبخوان →
094⌁

رمز Rail Fence

رمز Rail Fence یک الگوریتم از دسته رمزنگاری است. این cipher/hash آموزشی یک transformation روی کاراکترها یا state عددی نشان می‌دهد. برای یادگیری مفید است ولی بسیاری از cipherهای کلاسیک برای سیستم واقعی امن نیستند.

پایهبخوان →
095⌁

رمز سزار

رمز سزار یک الگوریتم از دسته رمزنگاری است. این cipher/hash آموزشی یک transformation روی کاراکترها یا state عددی نشان می‌دهد. برای یادگیری مفید است ولی بسیاری از cipherهای کلاسیک برای سیستم واقعی امن نیستند.

پایهبخوان →
096⌁

رمز Hill

رمز Hill یک الگوریتم از دسته رمزنگاری است. این cipher/hash آموزشی یک transformation روی کاراکترها یا state عددی نشان می‌دهد. برای یادگیری مفید است ولی بسیاری از cipherهای کلاسیک برای سیستم واقعی امن نیستند.

پایهبخوان →
097⌁

NanoNeuron

NanoNeuron یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده می‌کند و معمولاً بر distance، objective یا model ساده تکیه دارد.

پایهبخوان →
098⌁

k-NN

k-NN یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده می‌کند و معمولاً بر distance، objective یا model ساده تکیه دارد.

پایهبخوان →
099⌁

k-Means

k-Means یک الگوریتم از دسته یادگیری ماشین است. این الگوریتم یادگیری از داده برای ساخت یک rule، grouping یا prediction استفاده می‌کند و معمولاً بر distance، objective یا model ساده تکیه دارد.

پایهبخوان →
100⌁

Seam Carving / تغییر اندازه محتوامحور

Seam Carving / تغییر اندازه محتوامحور یک الگوریتم از دسته پردازش تصویر است. Seam Carving تصویر را با حذف/اضافه کردن مسیرهای کم‌انرژی resize می‌کند، نه با scale یکنواخت همه pixelها.

پایهبخوان →
101⌁

انتخاب تصادفی وزندار

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

پایهبخوان →
102⌁

الگوریتم ژنتیک

الگوریتم ژنتیک یک الگوریتم از دسته الگوریتم‌های تکاملی است. Genetic Algorithm فضای بزرگ جواب‌ها را با population، fitness، selection، crossover و mutation جست‌وجو می‌کند.

پیشرفتهبخوان →
103⌁

برج هانوی

برج هانوی یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پایهبخوان →
104⌁

چرخش ماتریس مربعی

چرخش ماتریس مربعی یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پایهبخوان →
105⌁

بازی پرش

بازی پرش یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پایهبخوان →
106⌁

مسیرهای یکتا

مسیرهای یکتا یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پایهبخوان →
107⌁

جمع‌آوری آب باران

Trapping Rain Water مقدار آبی را می‌خواهد که بین ستون‌ها جمع می‌شود. ارتفاع آب روی index i به کمینه بلندترین ستون چپ و راست آن محدود است.

پایهبخوان →
108⌁

پله‌های بازگشتی

پله‌های بازگشتی یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پایهبخوان →
109⌁

بهترین زمان خرید و فروش سهام

در نسخه یک‌تراکنشی Stock، یک بار Array را پیمایش می‌کنیم، کمترین قیمت دیده‌شده را نگه می‌داریم و سود فروش در قیمت فعلی را با best profit مقایسه می‌کنیم.

پایهبخوان →
110⌁

پرانتزهای معتبر

Valid Parentheses بررسی می‌کند هر bracket باز با نوع درست و در ترتیب nesting صحیح بسته شود. Stack دقیقاً این رفتار تو در تو را مدل می‌کند.

پایهبخوان →
111⌁

مسئله N وزیر

N-Queens باید N وزیر را روی صفحه N×N قرار دهد به‌طوری‌که هیچ دو وزیری در یک row، column یا diagonal نباشند. Backtracking انتخاب‌ها را امتحان می‌کند و به‌محض conflict مسیر را قطع می‌کند.

پیشرفتهبخوان →
112⌁

مسیر اسب

مسیر اسب یک الگوریتم از دسته مسائل کلاسیک است. این مسئله کلاسیک مصاحبه بیشتر درباره تشخیص pattern درست مثل Two Pointer، Stack، Greedy، DP یا Backtracking است، نه حفظ یک کد خاص.

پیشرفتهبخوان →
آرین سلیمان‌زاده

پورتفولیوی شخصی با تمرکز بر Agentic CRM، سامانه‌های هوشمند کسب‌وکار، مهندسی مدرن وب، طراحی سیستم‌های رابط کاربری و توسعه محصولات نرم‌افزاری کاربردی.

لینک‌های سریع

  • درباره من
  • وبلاگ
  • کتابخانه
  • تماس

ارتباط

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

در دسترس: روزهای کاری

معمولاً پاسخ در ۲۴ ساعت

خبرنامه

به‌روزرسانی‌های مربوط به نوشته‌ها، پروژه‌ها و انتشارهای جدید را دریافت کنید.

© 2026 ariansoleimanzadeh.dev — تمامی حقوق محفوظ است.

لینکدین