हाल ही में, एक भौतिक विज्ञानी से बात करते समय, मैंने दावा किया कि मेरे अनुभव में, जब एक समस्या जो भोलेपन से लगती है, तो यह घातांक समय लेना चाहिए, अनायास पी या बीपीपी में बदल जाता है, एक "अतिव्यापी कारण" कि कमी क्यों होती है आमतौर पर पहचाना जा सकता है। --- और लगभग हमेशा, वह कारण एक दर्जन या उससे कम "सामान्य संदिग्धों" की सूची से संबंधित है (उदाहरण के लिए: गतिशील प्रोग्रामिंग, रैखिक बीजगणित ...)। हालांकि, तब मुझे यह सोचने को मिला: क्या हम वास्तव में ऐसे कारणों की एक सभ्य सूची लिख सकते हैं? यहाँ एक पर पहला, अधूरा प्रयास है:
(०) गणितीय लक्षण वर्णन। समस्या की एक गैर-स्पष्ट "विशुद्ध रूप से गणितीय" विशेषता है, जिसे एक बार ज्ञात होने पर, यह तत्काल बना देता है कि आप केवल पॉली (एन) संभावनाओं की सूची में विस्तृत खोज कर सकते हैं। उदाहरण: ग्राफ प्लानारिटी, जिसके लिए एक ओ (एन 6 ) एल्गोरिथ्म Kuratowski के प्रमेय से अनुसरण करता है।
(जैसा कि "प्लानर" नीचे इंगित करता है, यह एक बुरा उदाहरण था: यहां तक कि एक बार जब आप प्लानारिटी के एक दहनशील लक्षण वर्णन को जानते हैं, तो इसके लिए एक बहुपद-समय एल्गोरिथ्म देना अभी भी बहुत ही सरल है। इसलिए, मुझे यहां एक बेहतर उदाहरण प्रस्तुत करना चाहिए: कैसे के बारे में , कहते हैं, "बाइनरी में लिखा एक इनपुट एन दिया गया है, गणना करें कि एन छेद के साथ सतह पर एम्बेडेड एक मनमाना मानचित्र को रंगने के लिए कितने रंगों की आवश्यकता है।" यह स्पष्ट रूप से एक प्राथमिकता नहीं है कि यह बिल्कुल (या यहां तक कि परिमित है)। लेकिन उत्तर देने वाला एक ज्ञात सूत्र है, और एक बार जब आप सूत्र जानते हैं, तो यह बहुपद समय में गणना करने के लिए तुच्छ है। इस बीच, "बाहर किए गए नाबालिगों / रॉबर्टसन-सीमोर सिद्धांत को कम करता है" को संभवतः एक अलग अतिव्यापी कारण के रूप में जोड़ा जाना चाहिए कि कुछ क्यों हो सकता है। पी। में)
वैसे भी, यह विशेष रूप से ऐसी स्थिति नहीं है जो मुझे सबसे अधिक रुचिकर लगे।
(1) डायनेमिक प्रोग्रामिंग। समस्या को एक ऐसे तरीके से तोड़ा जा सकता है, जो तेजी से फैलने के बिना पुनरावर्ती समाधान को सक्षम बनाता है - अक्सर क्योंकि संतुष्ट होने के लिए बाधाओं को एक रैखिक या अन्य सरल क्रम में व्यवस्थित किया जाता है। "विशुद्ध रूप से दहनशील"; कोई बीजीय संरचना की जरूरत नहीं है। यकीनन, ग्राफ रीचबिलिटी (और इसलिए 2SAT) विशेष मामले हैं।
(२) मैट्रॉइड। समस्या में एक परिपक्व संरचना है, जो काम करने के लिए एक लालची एल्गोरिथ्म को सक्षम करती है। उदाहरण: मिलान, न्यूनतम फैले हुए वृक्ष।
(३) रेखीय बीजगणित। एक रेखीय प्रणाली को हल करने के लिए समस्या को कम किया जा सकता है, एक निर्धारक की गणना, eigenvalues की गणना, आदि। संभवतः, "चमत्कारी रद्दीकरण" से जुड़ी अधिकांश समस्याएं, जिनमें वैलेंट की माचिस औपचारिकता द्वारा हल की जाती है, भी रैखिक-बीजगणितीय छतरी के नीचे आती हैं।
(४) उत्तलता। समस्या को किसी प्रकार के उत्तल अनुकूलन के रूप में व्यक्त किया जा सकता है। सेमीफ़ाइनल प्रोग्रामिंग, लीनियर प्रोग्रामिंग और जीरो-सम गेम आम मामले (तेजी से) विशेष मामले हैं।
(5) बहुपद पहचान परीक्षण। समस्या को एक बहुपद पहचान की जांच करने के लिए कम किया जा सकता है, ताकि बीजगणित के मौलिक सिद्धांत एक कुशल यादृच्छिक एल्गोरिदम की ओर जाता है - और कुछ मामलों में, जैसे कि प्राणिकता, यहां तक कि एक निश्चित-निर्धारणवादी एल्गोरिथ्म।
(6) मार्कोव चेन मोंटे कार्लो। तेजी से मिक्सिंग वॉक के नतीजे से सैंपलिंग में समस्या को कम किया जा सकता है। (उदाहरण: लगभग सही मिलान गिनती।)
(7) यूक्लिडियन एल्गोरिथ्म। जीसीडी, निरंतर अंश ...
विविध / स्पष्ट नहीं कि कैसे वर्गीकृत किया जाए: स्थिर विवाह, बहुपद फैक्टरिंग, क्रमोन्नति समूहों के लिए सदस्यता समस्या, संख्या सिद्धांत और समूह सिद्धांत में विभिन्न अन्य समस्याएं, कम-आयामी जाली समस्याएं ...
मेरा सवाल है: सबसे महत्वपूर्ण चीजें जो मैंने छोड़ी हैं?
स्पष्टीकरण देना:
मुझे पता है कि कोई भी सूची संभवतः पूरी नहीं हो सकती है: आप जो भी सीमित संख्या में कारण देते हैं, कोई भी उस पी में नहीं बल्कि उन कारणों में से एक विदेशी समस्या का पता लगाने में सक्षम होगा। आंशिक रूप से इस कारण से, मैं उन विचारों में अधिक रुचि रखता हूं, जो कि एक समस्या के लिए काम करने वाले विचारों की तुलना में, पी या बीपीपी में बहुत अधिक भिन्न, प्रतीत होने वाली-असंबंधित समस्याएं डालते हैं।
मुझे यह भी एहसास है कि यह व्यक्तिपरक है कि चीजों को कैसे विभाजित किया जाए। उदाहरण के लिए, क्या मैट्रोइड्स को गतिशील प्रोग्रामिंग का एक विशेष मामला होना चाहिए? क्या गहराई से-पहली खोज द्वारा सॉल्वेबिलिटी काफी महत्वपूर्ण है, इसका अपना कारण, गतिशील प्रोग्रामिंग से अलग होना? इसके अलावा, अक्सर एक ही समस्या कई कारणों से पी में हो सकती है, इस पर निर्भर करता है कि आप इसे कैसे देखते हैं: उदाहरण के लिए, प्रिंसिपल आइगेनवेल्यू को खोजने के कारण पी में रैखिक बीजगणित है, लेकिन यह भी क्योंकि यह उत्तल अनुकूलन समस्या है।
संक्षेप में, मैं "वर्गीकरण प्रमेय" की उम्मीद नहीं कर रहा हूं - बस एक सूची के लिए जो उपयोगी रूप से दर्शाती है कि वर्तमान में हम कुशल एल्गोरिदम के बारे में क्या जानते हैं। और यही कारण है कि पी या बीपीपी में चीजों को डालने के लिए मुझे सबसे ज्यादा दिलचस्पी है कि व्यापक प्रयोज्यता है, लेकिन यह उपरोक्त सूची में फिट नहीं है - या मेरे क्रूड में सुधार करने के लिए अन्य विचार पहले मेरे वरदान पर अच्छा बनाने का प्रयास करें भौतिक विज्ञानी।