الگوریتم‌های تقریبی: نزدیک‌شدن اثبات‌پذیر به بهینه برای مسائل سخت

وقتی یک مسئله NP-complete اثبات شود، یک راه‌حل کارآمد دقیق بعید است وجود داشته باشد، اما این به معنای رهاکردن کامل مسئله نیست. این راهنمای جامع الگوریتم‌های تقریبی را توضیح می‌دهد، که تضمین بهینه‌بودن را در ازای تضمین کارایی معامله می‌کنند، و مسائل پوشش رأس و فروشنده دوره‌گرد را به‌عنوان مثال‌های کلاسیک با نسبت‌های تقریبی اثبات‌پذیر پوشش می‌دهد.

الگوریتم تقریبی,مسئله پوشش رأسمسئله فروشنده دوره‌گرد

~7 دقیقه مطالعه · آخرین به‌روزرسانی ۱۶ شهریور ۱۴۰۵

چرا تقریب یک پاسخ منطقی به NP-Completeness است

همان‌طور که پیش‌تر در این مجموعه بحث شد، اثبات NP-complete بودن یک مسئله شواهد قوی فراهم می‌کند که هیچ الگوریتم زمان-چندجمله‌ای راه‌حل بهینه دقیق را پیدا نمی‌کند. به‌جای رها‌کردن مسئله، یک Approximation Algorithm (الگوریتم تقریبی) عمداً تضمین یافتن راه‌حل بهینه دقیق را در ازای تضمین اجرا در زمان چندجمله‌ای معامله می‌کند، در حالی که همچنان یک کران ریاضی روی اینکه پاسخش چقدر می‌تواند از بهینه دور باشد فراهم می‌کند.

تعریف نسبت تقریبی

یک الگوریتم یک Approximation Ratio (نسبت تقریبی) ρ(n) دارد اگر، برای هر ورودی به اندازه n، نسبت بین هزینه راه‌حل الگوریتم و هزینه بهینه واقعی هرگز از ρ(n) فراتر نرود (برای مسائل کمینه‌سازی)، یا هرگز از 1/ρ(n) کمتر نشود (برای مسائل بیشینه‌سازی).

برای یک مسئله کمینه‌سازی:
C / C* ≤ ρ(n)

جایی که C هزینه راه‌حل تقریبی پیداشده است،
و C* هزینه راه‌حل بهینه واقعی است

یک تقریب ρ(n) = 2 تضمین می‌کند راه‌حل الگوریتم
هرگز بیش از دو برابر بهینه واقعی هزینه نداشته باشد،
صرف‌نظر از اینکه چه ورودی داده شود

این تضمین برای هر ورودی ممکن برقرار است، نه صرفاً به‌طور میانگین — یک تمایز حیاتی که به الگوریتم‌های تقریبی دندان‌های ریاضی واقعی می‌دهد، به‌جای صرفاً یک ابتکار که "معمولاً" خوب کار می‌کند.

مسئله پوشش رأس: یک تقریب-۲

یک Vertex Cover (پوشش رأس) یک گراف، زیرمجموعه‌ای از رأس‌ها است طوری‌که هر یال حداقل یک نقطه‌انتهایی در زیرمجموعه دارد. مسئله Minimum Vertex Cover Problem (مسئله پوشش رأس کمینه) کوچک‌ترین چنین زیرمجموعه‌ای را می‌خواهد، و NP-complete است، که پیش‌تر در این مجموعه درباره NP-completeness بحث شد.

APPROX-VERTEX-COVER(G):
  C = مجموعه خالی
  E' = یک کپی از G.E
  تا زمانی که E' خالی نباشد:
      فرض کن (u, v) یک یال دلخواه از E' باشد
      C = C ∪ {u, v}       // هر دو نقطه‌انتهایی را اضافه کن
      هر یال متصل به u یا v را از E' حذف کن
  C را برگردان

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

اثبات تضمین تقریب-۲

اثبات به یک مشاهده ماهرانه درباره یال‌های انتخاب‌شده در طول اجرای الگوریتم متکی است، به نام یک Matching (تطبیق) — مجموعه‌ای از یال‌ها که هیچ دوتایشان یک نقطه‌انتهایی مشترک ندارند.

مشاهده کلیدی: یال‌های (u,v) انتخاب‌شده در سراسر همه
تکرارهای حلقه while یک تطبیق تشکیل می‌دهند، چون
وقتی u و v به C اضافه می‌شوند، هر یالی که هرکدام از
آن‌ها را لمس می‌کند حذف می‌شود، پس هیچ یال انتخاب‌شده
آینده‌ای نمی‌تواند یک نقطه‌انتهایی با یکی قبلی مشترک داشته باشد

از آنجا که هیچ دو یال انتخاب‌شده یک نقطه‌انتهایی مشترک ندارند،
هر پوشش رأس — شامل بهینه — باید حداقل یک نقطه‌انتهایی
از هر یال انتخاب‌شده را شامل شود
(یک رأس منفرد نمی‌تواند دو یال غیرمجاور را پوشش دهد)

بنابراین: |C*| ≥ (تعداد یال‌های انتخاب‌شده)

اما پوشش C الگوریتم دقیقاً
2 · (تعداد یال‌های انتخاب‌شده) رأس دارد،
چون هر بار هر دو نقطه‌انتهایی را اضافه می‌کند

بنابراین: |C| = 2 · (تعداد یال‌های انتخاب‌شده) ≤ 2 · |C*|

این اثبات می‌کند خروجی الگوریتم هرگز بیش از دو برابر اندازه پوشش رأس کمینه واقعی نیست، یک تقریب-۲ تضمین‌شده، که با یک الگوریتم به‌طور قابل‌توجه ساده و سریع که در زمان O(V + E) اجرا می‌شود به دست می‌آید.

مسئله فروشنده دوره‌گرد با نامساوی مثلث

Traveling Salesman Problem (TSP) کوتاه‌ترین مسیر ممکن که دقیقاً یک‌بار از هر شهر بازدید می‌کند و به ابتدا برمی‌گردد را می‌خواهد. این مسئله NP-complete است، و در عمومی‌ترین شکلش، نمی‌تواند به هیچ فاکتور ثابتی تقریب زده شود مگر اینکه P = NP. با این حال، وقتی وزن‌های یال Triangle Inequality (نامساوی مثلث) را برآورده کنند (فاصله مستقیم بین دو نقطه هرگز طولانی‌تر از یک مسیر از میان یک نقطه سوم نیست — فرضی طبیعی برای فاصله‌های جغرافیایی واقعی)، یک تقریب-۲ ظریف وجود دارد.

APPROX-TSP-TOUR(G, c):
  یک درخت پوشای کمینه T از G محاسبه کن،
  با استفاده از یک الگوریتم که پیش‌تر در این مجموعه بحث شد
  (مانند الگوریتم پریم یا کروسکال)

  یک پیمایش جستجوی عمق‌اول T انجام بده،
  که پیش‌تر در این مجموعه بحث شد، و رأس‌ها را
  به ترتیبی که ابتدا بازدید می‌شوند فهرست کن

  توری که رأس‌ها را به این ترتیب بازدید می‌کند برگردان،
  سپس به رأس شروع برمی‌گردد

چرا این به یک تقریب-۲ دست می‌یابد

اثبات سه کمیت را با استفاده از یک استدلال ماهرانه متصل می‌کند. اول، هر تور TSP، اگر یک یال حذف شود، به یک مسیر همیلتونی تبدیل می‌شود، که خودش یک درخت پوشاست، پس هزینه تور بهینه حداقل وزن درخت پوشای کمینه است: MST ≤ OPT. دوم، یک پیمایش کامل جستجوی عمق‌اول MST، که هر یال را دقیقاً دو بار طی می‌کند (یک‌بار پایین‌رفتن، یک‌بار بازگشت)، هزینه کل دقیقاً 2 · MST دارد. سوم، با استفاده از نامساوی مثلث، "کوتاه‌کردن" این پیمایش دوبرابرشده — پریدن از رأس‌های از‌قبل‌بازدیدشده برای رفتن مستقیم به بعدی بازدیدنشده — فقط می‌تواند کل فاصله را کاهش دهد، هرگز افزایش دهد.

ترکیب این حقایق:
هزینه تور تقریبی ≤ 2 · MST ≤ 2 · OPT

این زنجیره نامساوی‌ها اثبات می‌کند تور الگوریتم هرگز بیش از دو برابر تور بهینه واقعی هزینه ندارد، تقریب-۲ تمیز دیگری، که در زمان غالب‌شده توسط محاسبه درخت پوشای کمینه، که پیش‌تر در این مجموعه بحث شد، معمولاً O(E log V)، اجرا می‌شود.

نسبت‌های تقریبی همه به‌یک‌اندازه خوب نیستند

مسائل NP-hard مختلف تقریب‌های کیفیت به‌طور چشمگیری متفاوتی می‌پذیرند. برخی مسائل یک Polynomial-Time Approximation Scheme (PTAS) دارند، که یک نسبت تقریبی به‌طور دلخواه نزدیک به ۱ را اجازه می‌دهد (هرچند زمان اجرا با نزدیک‌شدن نسبت به ۱ رشد می‌کند). دیگران، مانند TSP عمومی بدون نامساوی مثلث، اثبات شده‌اند هیچ تقریب فاکتور-ثابتی را اصلاً نمی‌پذیرند مگر اینکه P = NP. باز هم دیگران بین این دو قرار دارند، و برخی نسبت تقریبی ثابت را می‌پذیرند اما نه بهتر، صرف‌نظر از اینکه الگوریتم چقدر ماهرانه طراحی شده باشد. درک اینکه یک مسئله NP-hard مشخص به کدام دسته تعلق دارد خودش یک حوزه پژوهشی نظری فعال است.

چرا الگوریتم‌های تقریبی برای اپلیکیشن‌های دنیای واقعی اهمیت دارند

نوع‌های پوشش رأس و TSP در سراسر لجستیک، طراحی شبکه، و مسائل تخصیص منابع ظاهر می‌شوند جایی که یک راه‌حل بهینه دقیق، هرچند از نظر تئوری مطلوب، از نظر محاسباتی برای ورودی‌های با اندازه واقع‌بینانه غیرقابل‌اجرا است. الگوریتم‌های تقریبی یک میانه از نظر ریاضی دقیق فراهم می‌کنند: یک راه‌حل که تضمین می‌شود سریع اجرا شود و تضمین می‌شود درون یک فاکتور شناخته‌شده و اثبات‌پذیر از بهینه باشد، تضمینی بسیار قوی‌تر از یک ابتکار اثبات‌نشده، حتی اگر اتفاقاً در عمل خوب عمل کند.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

الگوریتم‌های نظریه اعداد: GCD، توان‌رسانی پیمانه‌ای، و RSA

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

ادامه

اصول هندسه محاسباتی: جهت، تقاطع پاره‌خط، و پوسته محدب

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

ادامه

الگوریتم‌های تطبیق رشته: جستجوی ساده، Rabin-Karp، و فراتر از آن

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

ادامه

NP-Completeness توضیح داده شده: P، NP، و چرا برخی مسائل در برابر راه‌حل‌های کارآمد مقاومت می‌کنند

برخی مسائل برای دهه‌ها در برابر هر تلاشی برای یک الگوریتم کارآمد مقاومت کرده‌اند، با این حال هیچ‌کس اثبات نکرده یک راه‌حل کارآمد غیرممکن است. این راهنمای جامع کلاس‌های P و NP، مفهوم تقلیل‌های زمان-چندجمله‌ای مورد استفاده برای مقایسه سختی مسئله، و چگونگی اینکه اثبات NP-complete بودن یک مسئله شواهد قوی، هرچند نه اثبات، فراهم می‌کند که هیچ الگوریتم کارآمدی وجود ندارد را توضیح می‌دهد.

ادامه

جریان بیشینه: فورد-فالکرسون و قضیه برش-کمینه/جریان-بیشینه

مسائل جریان بیشینه بیشترین توان عملیاتی ممکن از میان یک شبکه با اتصالات محدود-به-ظرفیت را مدل‌سازی می‌کنند، از لوله‌های آب تا شبکه‌های داده. این راهنمای جامع شبکه‌های جریان را معرفی می‌کند، روش فورد-فالکرسون برای یافتن جریان بیشینه با استفاده از مسیرهای تقویتی را مرور می‌کند، و قضیه ظریف برش-کمینه/جریان-بیشینه که دو مسئله به‌ظاهر متفاوت را به یکی متصل می‌کند را توضیح می‌دهد.

ادامه

الگوریتم فلوید-وارشال: یافتن کوتاه‌ترین مسیرها بین هر جفت رأس

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

ادامه