مسئله کوچک‌ترین دایره
مسئلهٔ کوچکترین دایره یا کمینه دایره پوششی نقاط، یک مسئله ریاضی است که کوچکترین دایره پوششی شامل همه نقاط صفحه اقلیدسی را محاسبه می‌کند. مسئله کوچکترین دایره پوششی در فضای n بعدی، مسئله ای است که کوچکترین کره که همه مجموعه نقاط را شامل می‌شود، محاسبه می‌کند. این مسئله در ابتدا توسط ریاضی‌دان انگلیسی James Joseph Sylvester در سال ۱۸۵۷ مطرح شد. مسئله کوچک‌ترین دایره در صفحه یک مثال از مسئله تحلیل تعیین محل است به طوری که محل یک امکان جدید باید به گونه‌ای انتخاب شود که دورترین فاصله‌ای که هر مشتری باید طی کند تا به این امکان برسد کمینه شود.مسئله پیدا کردن کوچک‌ترین دایره در صفحه در ابعاد بالاتر هم در زمان خطی قابل حل است.
اغلب روش‌های هندسی برای حل این مسئله، نقاطی را در نظر می‌گیرند که روی مرز کوچک‌ترین دایره واقع شده‌اند و برپایهٔ دو اصل سادهٔ زیر می‌باشند:
۱) کوچک‌ترین دایرهٔ پوششی نقاط یکتاست.
۲) کوچک‌ترین دایرهٔ پوششی برای مجموعهٔ نقاط S، حداکثر با ۳ نقطه از S روی مرز دایره مشخص می‌شود. اگر این دایره با دو نقطه مشخص شود، در این صورت خط متصل کنندهٔ این دو نقطه باید قطر کوچک‌ترین دایرهٔ پوششی نقاط باشد و اگر با سه نقطه مشخص گردد آنگاه مثلث شامل این سه نقطه منفرجه نخواهد بود.
همان طور که نیمورد مگیدو (Nimrod Megiddo) نشان داد،مسئلهٔ کوچک‌ترین دایره پوششی نقاط می‌تواند در زمان خطی حل شود و برای این مسئله در فضای اقلیدسی در هر بعد ثابتی همین زمان اجرا وجود دارد.
المو ولز(Emo Welzl) یک الگوریتم تصادفی برای کوچک‌ترین دایره پوششی نقاط با زمان اجرای (O(n ارائه داد که این الگوریتم بر پایهٔ الگوریتم برنامه خطی ریموند سیدل(Raimund Seidel) است. این الگوریتم بازگشتی، مجموعه نقاط Q و S را به عنوان آرگومان دریافت می‌کند و کوچک‌ترین دایرهٔ پوششی از اجتماع Q و S را تا زمانی که هر نقطه از Q نقطه‌ای از نقاط مرزی کوچک‌ترین دایره نهایی شود محاسبه می‌کند. بنابراین، برای حل مسئله اصلی می‌توانیم الگوریتم فوق را برای مجموعه S که شامل نقاطی که قرار است پوشش داده شوند و Q که یک مجموعه تهی است فراخوانی کرد. همان‌طور که الگوریتم به صورت بازگشتی فراخوانی می‌شود، مجموعه Q تا زمانی که مساوی همه نقاط مرزی دایره نشده‌است بزرگ می‌شود.
این الگوریتم نقاط درون مجموعه S و P را به صورت رندوم بررسی می‌کند و همچنین کوچک‌ترین دایره شامل اجتماع P و Q را نیزمورد بررسی قرار می‌دهد. در هر مرحله، الگوریتم بررسی می‌کند که آیا نقطه بعدی r به این دایره تعلق دارد یا نه و اگر نداشت دایره را با دایرهٔ دیگری که از فراخوانی الگوریتم با آرگومان‌های P و Q+r به دست می‌آید جایگزین می‌کند. چه دایره توسط دایره دیگری جایگزین شود و چه نشود، r جز مجموعه نقاط P محسوب می‌شود. در بررسی هر یک از نقاط، باید آزمایش‌های مداومی انجام شود که مشخص کند آیا هر نقطه به یک دایره مستقل تعلق دارد و همچنین امکان اجرای یک الگوریتم بازگشتی را دارد یا نه. می‌توان نشان داد که احتمال این که نقطه iام، یک الگوریتم بازگشتی تولید کند برابر با (O(۱/i است. به همین دلیل زمان کل اجرای مسئله خطی است.
متعاقباً، مسئله کوچک‌ترین دایره جز کلاس عمومی مسئله‌های نوع LP است که می‌تواند با استفاده از الگوریتم‌هایی چون ولز که مبتنی بر برنامه‌نویسی خطی هستند حل شود. در نتیجهٔ عضویت در این کلاس، نشان داده شد که اتکا به بُعد فاکتورهای ثابت در زمان محدود (O(n، که یک فاکتور برای تابع‌های Seidel's است، می‌تواند به زیر مجموعه‌های نمایی که اتکا روی N را حفظ می‌کنند کاهش پیدا کند.
با توجه به بررسی‌های مگیدو(Megiddo) و اینکه کوچک‌ترین دایرهٔ پوششی می‌تواند با زمان اجرای خطی پیدا شود، تعداد زیادی از الگوریتم‌ها با پیچیدگی بالاتر ظاهر شدند. ساده‌ترین الگوریتم برای حل این مسئله از مرتبهٔ n۴ است به این ترتیب که تمام دایره‌های متشکل از دو نقطه و سه نقطه ممکن را در نظر گرفته و سپس بین تمام آن‌ها کمینه می‌گیرد. چاکرابرتی و چادهوری(Chakraborty and Chaudhuri) یک روش خطی برای انتخاب دایرهٔ اولیهٔ مناسب و جفت نقاط روی مرز دایره ارائه کرده‌اند. با هر گام از این الگوریتم یکی از جفت نقاط روی مرز به عنوان یک راس جدید در پوش محدب قرار می‌گیرد؛ بنابراین اگر پوش حاوی h راس باشد، این الگوریتم می‌تواند در مرتبهٔ زمانی n*h پاسخ دهد.
نسخهٔ وزن دار مسئلهٔ کوچک‌ترین دایرهٔ پوششی، ورودی‌ها را به عنوان مجموعه‌ای از نقاط در فضای اقلیدسی در نظر می‌گیرد که هر کدام وزنی دارند. هدف این مسئله پیدا کردن نقطه ایست که بیشینه فاصلهٔ وزن دار با هر نقطهٔ دیگری را کمینه کند. مسئلهٔ اصلیِ کوچک‌ترین دایرهٔ پوششی می‌تواند با اختصاص دادن همهٔ وزن‌ها به همان اعداد بهبود پیدا کند. همانند نسخهٔ بدون وزن، حالت وزن دار مسئله می‌تواند در زمان خطی حل شود، بدیهی است که راه حل‌هایی با زمان اجرای کندتر نیز موجودند.