آرین سلیمان‌زاده
  • خانه
  • وبلاگ
  • پادکست‌ها
  • ویدیوها
  • کتابخانه
  • تماس با من
العربية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پاسخ سریع
کتابخانه الگوریتم ←/ساختمان داده/مجموعه‌های مجزا / Union-Find
یادداشت کامل الگوریتم

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

Disjoint Set

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

نوعساختمان دادهدستهساختمان دادهسطحپیشرفتهپیچیدگی معمولamortized near O(1)
جواب کوتاه و حرفه‌ای

اول این مفهوم را در ذهن نگه دار

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

01
توضیح ساده

چطور کار می‌کند؟ ساده و مرحله‌ای

01

هر مجموعه یک root نماینده دارد.

02

Path Compression و Union by Rank/Size باعث می‌شوند عملیات تکراری در عمل تقریباً ثابت باشند.

02
روند اجرا

الگوریتم را به شکل تصمیم‌های پشت سر هم بخوان

01

Invariant اصلی ساختار را مشخص کن.

02

مسیر read/update را در ساختار دنبال کن.

03

بعد از mutation قبل از return invariant را دوباره برقرار کن.

یک مثال کوچک برای فهم بهتر

یک ورودی خیلی کوچک را دستی اجرا کن و بعد از هر عملیات مهم state را بنویس. برای مجموعه‌های مجزا / Union-Find هدف این است که invariant را ببینی، نه اینکه کد را حفظ کنی.

پیچیدگی

amortized near O(1)

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

03
چه زمانی استفاده کنیم؟

موارد مناسب

  • Kruskal
  • پرسش اتصال بین Nodeها
  • تشخیص cycle در گراف بدون جهت
04
اشتباهات رایج

کجا معمولاً اشتباه می‌کنیم؟

  • پیچیدگی را بدون فهم representation حفظ نکن.
  • بدترین شکل ساختار یا هزینه resize/rebalance را نادیده نگیر.
در مصاحبه چطور توضیح بدهیم؟

مدل یک پاسخ حرفه‌ای

دو optimization اصلی یعنی Path Compression و Union by Rank/Size را نام ببر و بگو پیچیدگی amortized از نوع inverse-Ackermann است که در اندازه‌های واقعی تقریباً ثابت محسوب می‌شود.

مسئله→ایده اصلی→Invariant / State→Big-O→Trade-off
چند سؤال مصاحبه‌ای سریع

مجموعه‌های مجزا / Union-Find چه مسئله‌ای را حل می‌کند؟

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

درباره Complexity چه چیزی باید بگویم؟

پیچیدگی معمول اینجا amortized near O(1) است، اما جواب کامل باید این هزینه را به representation، constraint ورودی و عملیات غالب وصل کند.

رایج‌ترین اشتباه چیست؟

پیچیدگی را بدون فهم representation حفظ نکن.

موضوعات مرتبط برای ادامه مطالعهتحلیل پیچیدگیچیدمان حافظهInvariantها
منبع و مطالعه بیشتر

این درس برای مطالعه آرام و آمادگی مصاحبه به‌صورت مستقل نوشته شده و فهرست موضوعات آن از trekhleb/javascript-algorithms الهام گرفته است. مخزن اصلی implementationها، testها و README تخصصی هر موضوع را دارد.

باز کردن مخزن اصلی ↗
آرین سلیمان‌زاده

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

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

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

ارتباط

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

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

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

خبرنامه

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

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

لینکدین