श्रेणी सिद्धांत, कम्प्यूटेशनल जटिलता, और कॉम्बिनेटरिक्स कनेक्शन?


17

मैं " कार्यात्मक एल्गोरिथ्म डिजाइन के मोती ", और बाद में " प्रोग्रामिंग के बीजगणित " को पढ़ने की कोशिश कर रहा हूं , और एक ही पुनरावर्ती परिभाषा वाले और बाद में अग्रणी डेटा प्रकारों और दहनशील वस्तुओं के बीच एक स्पष्ट पत्राचार है। समान औपचारिक बिजली श्रृंखला (या निर्माण कार्य), जैसा कि दहनशील प्रजातियों के लिए परिचय में दिखाया गया है (मैंने " प्रजाति और फ़नकार और प्रकार, ओह माय! ") पढ़ा ।

तो, पहले सवाल के लिए, क्या बिजली श्रृंखला से उत्पन्न (पुनरावर्ती) समीकरण को पुनर्प्राप्त करने का एक तरीका है? यह एक यद्यपि है।

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

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

क्या मैं किसी चीज़ पर हूँ (और क्या) यहाँ? क्या इस तरह से कम्प्यूटेशनल जटिलता के बारे में देखने की कोशिश करना लाभकारी (सीखने के दृष्टिकोण से) है? क्या संरचनाएं, जिनके लिए हम किसी भी समस्या के लिए "अल्जीर" प्रारंभिक बीजगणित किसी भी तरह सीमित कर सकते हैं?

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


5
क्या आप इसे पठनीय बनाने के लिए सुधार कर सकते हैं?
लेव Reyzin

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

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

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

जवाबों:


7

डेव क्लार्क की टिप्पणी काफी महत्वपूर्ण है। आम तौर पर संलयन O (-) दक्षता को नहीं बदलता है। हालांकि, विशेष रुचि लियू, चेंग, और कॉडल कम्यूटेटिव एरो पर हडक का काम है। उनके साथ लिखे गए कार्यक्रम आवश्यक रूप से अनुकूलन योग्य हैं, जो कि स्ट्रीम फ़्यूज़न के माध्यम से गतिशील मेमोरी आवंटन और मध्यवर्ती संरचनाओं से मुक्त एक लूप में आते हैं: http://haskell.cs.yale.edu/?post_type=publication&p72


6

Joyal's Combinatorial Species, Sedgwick / Falojet के "एनालिसिसिक कॉम्बिनेटरिक्स के" स्वीकार्य निर्माण, और Yorgy के Haskell Species सभी अच्छे हैं।

पॉवर सीरीज पॉवर सीरियस द्वारा McIlroy of UNIX diff की प्रसिद्धि भी अवश्य पढ़ी जानी चाहिए, जैसा कि द हास्केल रोड में लॉजिक मैथ्स और प्रोग्रामिंग के कॉर्सेस पर अध्याय है।

Saunders MacLane और Chomsky / Schützenberger द्वारा संपादित बुकी द्वारा किए गए ऐतिहासिक कार्य बिजली श्रृंखला, बीजगणित, पेड़ों और परिमित राज्य ऑटोमेटा के बीच संबंध बनाते हैं। स्टेनली में वर्णित ट्रांसफर मैट्रिक्स विधि आपको दिखाता है कि भारित ऑटोमेटा से उत्पन्न कार्यों की गणना कैसे करें।

मैं अभी भी डोमेन (GF, भारित ऑटोमेटा, बीजगणित, वृक्ष, पुनरावृत्ति) के बीच अनुवाद करने का सबसे अच्छा तरीका कुशलतापूर्वक काम कर रहा हूं। अभी मैं सिम्पी से बाहर आ रहा हूँ क्योंकि अभी तक एक अच्छा हास्केल प्रतीक पैकेज नहीं है।

व्यक्तिगत रूप से, मैंने एक एंडोफक्शन के पुनरावृति ग्राफ को लिया है, फिर एक सटीक ब्लैक बॉक्स सर्च बाउंड पाने के लिए उस पर एक मिनिमेट सेट की गणना की, http://oeis.org/A186202 यह सुनिश्चित नहीं करें कि आप किस प्रकार के जटिलता परिणाम खोज रहे हैं, लेकिन यह तकनीक एक सीमित सेट पर किसी भी एंडोफक्शन की जांच करने में बहुत शक्तिशाली है।

- मूल अक्टूबर 2 '14 15:37 पर उत्तर--

ब्रेंट यॉर्गी की थीसिस पर एक नज़र डालें, जो आपके द्वारा उद्धृत किए गए पेपर का अनुसरण करता है। http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.