SAT और अन्य निर्णय समस्याओं के लिए कोई सन्निकटन एल्गोरिदम क्यों नहीं हैं?


18

मुझे एनपी-पूर्ण निर्णय समस्या है। समस्या की एक उदाहरण को देखते हुए, मैं एक एल्गोरिथ्म डिजाइन करना चाहूंगा जो यस को आउटपुट करता है, यदि समस्या संभव है, और, नहीं, अन्यथा। (बेशक, अगर एल्गोरिथ्म इष्टतम नहीं है, तो यह त्रुटी करेगा।)

मुझे इस तरह की समस्याओं के लिए कोई सन्निकटन एल्गोरिदम नहीं मिल सकता है। मैं सैट के लिए विशेष रूप से देख रहा था और मैंने विकिपीडिया पृष्ठ में निम्नलिखित एल्गोरिथ्म के बारे में पाया : दृष्टिकोण की एक और सीमा यह है कि यह केवल अनुकूलन समस्याओं पर लागू होता है और संतोषजनकता जैसी "शुद्ध" निर्णय समस्याओं पर नहीं, हालांकि यह अक्सर संभव है .. ।

उदाहरण के लिए, हम एल्गोरिदम से होने वाली गलतियों की संख्या के अनुपात में कुछ होने के लिए अनुमानित अनुपात को परिभाषित नहीं करते हैं? हम वास्तव में लालची और उप-इष्टतम तरीके से निर्णय की समस्याओं को कैसे हल करते हैं?


5
MAX-SAT के लिए सन्निकटन एल्गोरिदम हैं।
युवल फिल्मस

2
MAX-SAT एक निर्णय समस्या नहीं है, नहीं?
रिबज

15
अनुकूलन एल्गोरिदम हमेशा अनुकूलन समस्याओं के लिए होते हैं।
युवल फिल्मस

4
तो आप मूल रूप से एक एल्गोरिथ्म रखना चाहते हैं जो जल्दी खत्म हो जाता है लेकिन कभी-कभी गलत उत्तर देने की अनुमति दी जाती है। मुझे लगता है कि आप "सन्निकटन एल्गोरिथ्म" और "इष्टतम" जैसे अच्छी तरह से परिभाषित शब्दों का उपयोग करके मुद्दों को भ्रामक रूप से भ्रमित कर रहे हैं। जिनके बहुत विशिष्ट अर्थ हैं। मुझे लगता है कि आप इसके बजाय एक अनुमानी की तलाश कर रहे हैं - यदि आप उस शब्द के साथ अपने प्रश्न को अपडेट करते हैं (या इससे भी अधिक भ्रम से बचने के लिए एक नए सवाल से शुरू करते हैं), तो आपके बेहतर परिणाम हो सकते हैं।
एनओई

हालांकि यह एक पूर्ण उत्तर नहीं है, यह कारण का हिस्सा बताता है: महत्वपूर्ण सैट समस्याएं मौजूद हैं जिनके लिए केवल कम बिट गलत होना आधे बिट गलत होने से बेहतर नहीं है।
जोशुआ

जवाबों:


33

निर्णय एल्गोरिदम केवल अनुकूलन समस्याओं के लिए हैं, निर्णय समस्याओं के लिए नहीं।

कुछ निर्णय की समस्या को हल करने की कोशिश करते समय हम अनुमानित अनुपात को परिभाषित नहीं करते हैं कि एल्गोरिथ्म में गलतियों का अंश कैसे होता है? क्योंकि "सन्निकटन अनुपात" एक अच्छी तरह से परिभाषित, मानक अर्थ के साथ एक शब्द है, जिसका अर्थ कुछ और है, और यह दो अलग-अलग चीजों के लिए एक ही शब्द का उपयोग करने के लिए भ्रामक होगा।

ठीक है, क्या हम कुछ अन्य अनुपात को परिभाषित कर सकते हैं (चलो इसे कुछ और कहते हैं - उदाहरण के लिए, "det-ratio") जो कुछ निर्णय समस्या के लिए एक एल्गोरिथ्म द्वारा की गई गलतियों की संख्या को निर्धारित करता है। खैर, यह स्पष्ट नहीं है कि यह कैसे करना है। उस अंश के लिए हर क्या होगा? या, इसे किसी अन्य तरीके से रखने के लिए: इसमें अनंत संख्या में समस्याएँ होने वाली हैं, और उनमें से कुछ के लिए एल्गोरिथ्म सही उत्तर देगा और अन्य यह गलत उत्तर देगा, इसलिए आप एक अनुपात के साथ समाप्त होते हैं। "अनंत द्वारा विभाजित कुछ", और यह अर्थहीन है या परिभाषित नहीं है।

वैकल्पिक रूप से, हम आकार n की समस्या के उदाहरणों पर एल्गोरिदम की गलतियों का एक हिस्सा होने के लिए को परिभाषित कर सकते हैं । फिर, हम n n ∞ के रूप में r n की सीमा की गणना कर सकते हैं , अगर ऐसी कोई सीमा मौजूद है। यह होगाआरnnआरnnअच्छी तरह से परिभाषित (यदि सीमा मौजूद है)। हालांकि, ज्यादातर मामलों में, यह बहुत उपयोगी नहीं हो सकता है। विशेष रूप से, यह स्पष्ट रूप से समस्या के उदाहरणों पर एक समान वितरण को मानता है। हालांकि, वास्तविक दुनिया में, समस्या के उदाहरणों पर वास्तविक वितरण एक समान नहीं हो सकता है - यह अक्सर वर्दी से बहुत दूर है। नतीजतन, इस तरह से आपको प्राप्त होने वाली संख्या अक्सर उतनी उपयोगी नहीं होती जितनी आप उम्मीद कर सकते हैं: यह अक्सर एल्गोरिथ्म कितना अच्छा है, इसका भ्रामक प्रभाव देता है।

लोग कैसे अंतरंगता (एनपी-कठोरता) से निपटते हैं, इसके बारे में अधिक जानने के लिए, व्यवहार्यता से निपटने पर एक नज़र डालें : एनपी-पूर्ण समस्याएं


3
+1। लेकिन अंतिम बिंदु ठोस नहीं है, कोई यह तर्क दे सकता है कि आप सन्निकटन अनुपात को परिभाषित कर सकते हैं क्योंकि n अधिकतम संख्या में गलतियों की संख्या के अनंतता को जाता है जो प्रोग्राम लंबाई n के तारों की संख्या से अधिक लंबाई के इनपुट पर बनाता है। यह निश्चित रूप से उपयोगी नहीं है, क्योंकि अक्सर एक साधारण प्रोग्राम जो "YES" (या "NO") को आउटपुट करता है, एक अच्छा अनुपात प्राप्त करता है (कभी-कभी 1 भी!)।
23

1
@det, यह एक अलग प्रश्न है, जिसे आपको अलग से पूछना चाहिए (मानक पाठ्यपुस्तकों या ऑनलाइन संसाधनों में इसके बारे में पढ़ने के बाद)। हम पसंद करते हैं कि आप प्रति पोस्ट केवल एक प्रश्न पूछें।
DW

1
@aelguindy, अच्छी बात है। मैंने उसी हिसाब से अपना जवाब अपडेट किया है।
डीडब्ल्यू

2
@det लालची क्यों? निर्णय समस्या को "लगभग" हल करने का क्या मतलब है?
राफेल

2
@ मेहरदाद: आमतौर पर आप इसकी सबसे खराब स्थिति द्वारा एक अनुमान एल्गोरिथ्म का मूल्यांकन करते हैं: यह कितना गैर-इष्टतम है, इस पर एक ऊपरी बाध्यता। इसलिए, उदाहरण के लिए, आप कह सकते हैं कि किसी दिए गए सन्निकटन एल्गोरिथ्म में हमेशा एक परिणाम मिलता है जो कम से कम पाँच-छठे इष्टतम परिणाम होता है। अनुवाद करने का कोई वास्तविक तरीका नहीं है कि निर्णय की समस्या हो; यदि आपका एल्गोरिथ्म कभी-कभी निकलता है (कहते हैं) 0.1, तो या तो यह कभी-कभी 0.9 से बंद हो जाता है (जिस स्थिति में आप बेहतर करेंगे, सबसे खराब स्थिति में, हमेशा 0.5 से बाहर निकलें ), या "अनुमानित" -अमत एक दिखावा और "0.1" है। "वास्तव में सिर्फ" 0 "का मतलब है।
बर्बाद करें

14

कारण यह है कि निर्णय लेने की समस्याओं में सन्निकटन अनुपात जैसी चीजें नहीं देखी जाती हैं, क्योंकि वे आम तौर पर उन सवालों के संदर्भ में कोई मतलब नहीं रखते हैं जो आमतौर पर निर्णय लेने की समस्याओं के बारे में पूछते हैं। एक अनुकूलन सेटिंग में, यह समझ में आता है क्योंकि यह "करीब" होना उपयोगी है। कई वातावरणों में, इसका कोई मतलब नहीं है। यह देखने का कोई मतलब नहीं है कि आप कितनी बार असतत लघुगणक समस्या में "करीब" हैं। यह देखने के लिए कोई मतलब नहीं है कि आप कितनी बार एक ग्राफ आइसोमर खोजने के लिए "करीब" हैं। और इसी तरह, ज्यादातर निर्णय लेने की समस्याओं में, यह सही निर्णय के लिए "करीब" होने का कोई मतलब नहीं है।

अब, व्यावहारिक कार्यान्वयन में, ऐसे कई मामले हैं जहां यह जानना उपयोगी है कि समस्याओं के किस भाग को "जल्दी से" तय किया जा सकता है और कौन सा भाग नहीं हो सकता है। हालांकि, अनुकूलन के विपरीत, इसको निर्धारित करने के लिए कोई एक आकार-फिट-सभी तरीका नहीं है। आप इसे सांख्यिकीय रूप से कर सकते हैं, जैसा कि आप सुझाव देते हैं, लेकिन केवल तभी जब आप अपने इनपुट के सांख्यिकीय वितरण को जानते हैं। ज्यादातर समय, जो लोग निर्णय की समस्याओं में रुचि रखते हैं, वे इस तरह के वितरण के लिए भाग्यशाली नहीं हैं।

एक मामले के अध्ययन के रूप में, रुकने की समस्या पर विचार करें। रुकने की समस्या को अनिर्दिष्ट माना जाता है। यह शर्म की बात है, क्योंकि यह एक बहुत उपयोगी समस्या है अगर आप एक संकलक बना रहे हैं तो हल करने में सक्षम हो। व्यवहार में, हालांकि, हम पाते हैं कि अधिकांश कार्यक्रमों को वास्तव में समस्या निवारण के दृष्टिकोण से विश्लेषण करना बहुत आसान है। इन परिस्थितियों में इष्टतम कोड उत्पन्न करने के लिए कंपाइलर इसका लाभ उठाते हैं। हालांकि, एक संकलक को यह पहचानना होगा कि एक संभावना है कि कोड का एक विशेष ब्लॉक निर्णायक नहीं है। कोई भी प्रोग्राम जो कोड पर निर्भर होने की संभावना है "संभावित पतनशील" मुसीबत में पड़ सकता है।

हालांकि, संकलक द्वारा उपयोग की जाने वाली मीट्रिक यह निर्धारित करने के लिए कि वे कितनी अच्छी तरह से हल करने की समस्या के इन विशेष मामलों को हल करते हैं, एक क्रिप्टोग्राफी कार्यक्रम द्वारा उपयोग किए गए मीट्रिक से बहुत अलग है यह जांचने के लिए कि क्या हमलों के खिलाफ किसी विशेष जोड़ी को स्वीकार किया जाता है या नहीं। कोई भी आकार सभी समाधान के लायक नहीं है। यदि आप इस तरह की मीट्रिक चाहते हैं, तो आप इसे अपने विशेष समस्याओं के स्थान और व्यावसायिक तर्क के अनुरूप बनाना चाहते हैं।


इसलिए, जैसा कि मैं समझता हूं, निर्णय समस्या को हल करने का एकमात्र तरीका इष्टतम एल्गोरिथ्म को डिजाइन करना है जो बहुत अक्षम हो सकता है? क्योंकि मुझे एक निर्णय समस्या (एनपी-पूर्ण) है और मुझे एक समाधान खोजने के लिए लालची (तेज) एल्गोरिदम के साथ आने के लिए कहा गया था। इसे कैसे हल किया जा सकता है? क्या आप किसी ऐसे कागज के बारे में जानते हैं जो इस तरह की समस्याओं पर केंद्रित है?
रिबज नोव

1
@det वापस लाएं और समस्या को शांत करें। यदि आपको एनपी-पूर्ण समस्या है, तो आप बल्कि अटक जाते हैं, लेकिन इसकी अत्यधिक संभावना है कि आपको वास्तव में एक को हल करने की आवश्यकता नहीं है । उदाहरण के लिए, आपको हमेशा सही उत्तर की आवश्यकता नहीं है। शायद पास काफी अच्छा है। या शायद आप उन मामलों के सबसेट के लिए समस्या को हल कर सकते हैं जो आसान हैं, और जो कठिन हैं उन पर ध्यान दें। एक उदाहरण के रूप में, पैकिंग एल्गोरिदम अक्सर एनपी-पूर्ण होते हैं, लेकिन प्रोबैलिस्टिक दृष्टिकोण का उपयोग करके इष्टतम रूप से 5% के भीतर प्राप्त करने वाले एल्गोरिदम आम हैं।
Cort Ammon - मोनिका

2
सभी ईमानदारी में, एक एनपी-पूर्ण कार्यक्रम को हल करने के लिए एक लालची एल्गोरिथ्म के साथ आने के लिए कहा जा रहा है, शाब्दिक रूप से पूरे कंप्यूटर विज्ञान / गणितीय समुदाय को अखंड रूप से लेने का काम सौंपा जा रहा है। आप पी समय में एक एन पी-सम्पूर्ण कार्यक्रम के लिए एक एल्गोरिथ्म, पर मिल जाए बहुत कम से कम आप पी = एनपी को सुलझाने के लिए $ 1million क्ले पुरस्कार कमाई कर ली। वास्तव में, आपकी खोज के प्रभाव कंप्यूटिंग को बदल देंगे जैसा कि हम जानते हैं, और पूरी सुरक्षा / क्रिप्टोग्राफ़ी उद्योग को रातोंरात पूरी तरह से उखाड़ फेंकते हैं। बेहतर कार्य के लिए समायोजित करने के लिए बेहतर है कि एनपी-पूर्ण रूप से समायोजित नहीं किया जाए।
Cort Ammon -

मैंने एनपी-पूर्ण समस्या के लिए एक लालची सटीक एल्गोरिदम का उपयोग किया है। मुझे केवल एक छोटे से मामले को हल करने की आवश्यकता थी, और मुझे एक सप्ताहांत के लिए 64-प्रोसेसर सर्वर मिल सकता था।
पेट्रीसिया शहनहान

8

मौजूदा उत्तरों के अलावा, मुझे यह बताने दें कि ऐसी परिस्थितियाँ हैं, जहाँ निर्णय की समस्या के लिए एक अनुमानित समाधान होना मायने रखता है, लेकिन यह आपके विचार से अलग काम करता है।

इन एल्गोरिदम के साथ, दो परिणामों में से केवल एक को निश्चितता के साथ निर्धारित किया जाता है, जबकि दूसरा गलत हो सकता है। उदाहरण के लिए, अभाज्य संख्याओं के लिए मिलर-राबिन परीक्षा लें : यदि परीक्षण यह निर्धारित करता है कि कोई संख्या अभाज्य नहीं है , तो इसका परिणाम निश्चित है। लेकिन दूसरे मामले में इसका मतलब केवल यह है कि संख्या शायद प्रमुख है। इस बात पर निर्भर करता है कि आप निवेश करने के लिए कितने समय की गणना कर रहे हैं, आप परिणाम में अपना आत्मविश्वास बढ़ा सकते हैं, लेकिन यह 100% नहीं होगा क्योंकि यह नॉट-प्राइम केस के लिए है।

यह विशेष रूप से शक्तिशाली है जब अकल्पनीय समस्याओं से निपटते हैं: आप एक उपकरण लिख सकते हैं जो कोड के एक विशिष्ट टुकड़े के लिए हॉल्टिंग समस्या को हल करने की कोशिश करता है। यदि यह एक प्रमाण पा सकता है कि कार्यक्रम अंतहीन रूप से लूप नहीं करेगा, तो आप 100% निश्चितता के साथ दावा कर सकते हैं। यदि आपको ऐसा कोई प्रमाण नहीं मिलता है, तो यह हो सकता है कि आपके नियंत्रण के विश्लेषण के लिए कार्यक्रम नियंत्रण प्रवाह बहुत जटिल हो, लेकिन यह इस बात का प्रमाण नहीं है कि यह हमेशा के लिए बंद हो जाएगा। नियंत्रण संरचनाओं को सरल बनाने से, आप एक समतुल्य प्रोग्राम बनाने में सक्षम हो सकते हैं, जो टूल के लिए पर्याप्त है कि वह इस बात को प्रमाणित कर सके कि यह निश्चित रूप से रुकेगा।


संभाव्यता (आपके उत्तर) और सन्निकटन (प्रश्न) एल्गोरिदम के बीच एक बड़ा अंतर है। विशेष रूप से, दोनों का संयोजन एक बहुत ही विशेष नस्ल है।
राफेल

इसके अलावा, हम जानते हैं कि इस समस्या को हल करने के लिए संभाव्य एल्गोरिदम मौजूद नहीं हैं, इस संदर्भ में शब्द की एक उचित व्याख्या है।
राफेल

@ राफेल मैंने अपने उत्तर को संभाव्य एल्गोरिदम के लिए विशिष्ट नहीं बताया। दी गई, मिलर-राबिन के लिए, जो कि मामला है, लेकिन जैसा कि आपने खुद बताया, यह अब हॉल्टिंग समस्या के उदाहरण के लिए सही नहीं है, और मुझे लगता है कि अधिकांश मामलों के लिए भी यह सच नहीं होगा जहां आपको यह व्यवहार मिलता है। मैं जिस बिंदु को पार करना चाहता था वह यह है कि आप केवल एक परिणाम पर निश्चितता प्राप्त करेंगे, लेकिन दूसरे पर नहीं।
ComicSansMS

यदि आप इससे अधिक नहीं कह रहे हैं कि कुछ समस्याएं केवल अर्ध-कम्प्यूटेबल हैं, तो मुझे नहीं लगता कि आप प्रश्न का उत्तर दे रहे हैं।
राफेल

@ राफेल मेरा जवाब भी अर्ध-कम्प्यूटेशनल समस्याओं के लिए विशिष्ट नहीं है। वास्तव में, मुझे नहीं लगता कि मैंने जो वर्णन किया था वह अर्ध-कम्प्यूटेशनल समस्याओं पर भी लागू होता है। वहाँ अब आप सुनिश्चित करेंगे कि यदि आप फ़ंक्शन की अपरिभाषित शाखा में उतरे हैं, तो आप निश्चितता के साथ दावा कर सकते हैं कि कोई परिणाम नहीं है। मैंने क्या उबालने का वर्णन किया है: एक उत्तर हो सकता है, लेकिन एल्गोरिथ्म इस पर ठोकर खाने के लिए पर्याप्त कठिन नहीं लग सकता है।
कॉमिकसंसएमएस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.