स्ट्रीमिंग-ढंग से एक क्रमचय की समता की गणना करना


16

मैं एक पास-एल्गोरिथ्म की तलाश कर रहा हूं जो क्रमचय की समता की गणना करता है। मुझे लगता है कि एक इनपुट क्रमचय धारा द्वारा दिया जाता है π[1],π[2],,π[n] । उत्पादन क्रमपरिवर्तन की समता होना चाहिए। सवाल यह है कि मैं एक निर्धारित एल्गोरिथ्म का उपयोग कितनी मेमोरी में करना चाहता हूं। क्या समस्या के लिए कोई यादृच्छिक एल्गोरिदम है?

मुझे पता है कि कंप्यूटिंग एक पास में व्युत्क्रम की संख्या का उपयोग करता है Θ(n) स्मृति। ऊपरी सीमा को आसानी से किसी भी BST के साथ प्राप्त किया जा सकता है। निचली सीमा यहाँ प्रस्तुत की गई है: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622

काश, कागज में निचली सीमा के प्रमाण को समता के मामले तक नहीं बढ़ाया जा सकता (या यह मेरे लिए इतना स्पष्ट नहीं है)।

इसके अलावा मुझे पता है कि एक क्रमपरिवर्तन के लिए रैंडम एक्सेस के साथ एक छोटे से अंतरिक्ष में कंप्यूटिंग समता में किया जा सकता O(nlogn) समय और O(log2n) स्मृति नियतात्मक एल्गोरिथ्म द्वारा या में O(nlogn) समय और O(logn) यादृच्छिक एक द्वारा स्मृति। Http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256 देखें

मुख्य विचार यह है कि क्रमपरिवर्तन की समता सूत्र द्वारा गणना की जा सकती है , जहां सी चक्र की संख्या है और n आकार है। लेखक एक क्रमचय का चक्र अपघटन करते हैं। तो कोई आसानी से चक्रों की संख्या की गणना कर सकता है।sgn(π)=(1)nccn

किसी को भी एक प्रभावी एल्गोरिथ्म पता है या स्ट्रीमिंग मॉडल में समानता के लिए स्मृति पर कम बाध्य है? यादृच्छिक सिक्का से बेहतर यादृच्छिक एल्गोरिदम मेरे लिए भी दिलचस्प हैं।


यह दिलचस्प है। क्या आप एक सबूत को स्केच कर सकते हैं या किसी समस्या का नाम दे सकते हैं, जिसे आप समता में कम कर देते हैं?
वास्वोलॉड ओपरिन

4
@ एन्द्रस: ओ (एन) स्पेस एल्गोरिथ्म केवल उन तत्वों पर नज़र रखने के द्वारा काम नहीं करता है जो पहले से ही देखे गए हैं (एक बिटवेक्टर में कहें), और फिर प्रत्येक नए तत्व x के लिए # अभी तक की समानता को जोड़ते हुए देखा तत्व x से छोटा है?
लेज़्ज़्लो कोज़मा

1
@ ओल्स्ज़लो अपने ऊपरी बाउंड अब एक बड़ी निचली बाउंड के लिए मेरे तर्क की तुलना में मेरे लिए अधिक आश्वस्त हैं। O(n)
एन्द्र दास सलामोन

कम बाउंड के लिए एक नकारात्मक परिणाम। पहले कागज के लेखकों को प्रदान करता है क्रमचय दो सेट के आधार पर एक और बी । वे इसका उपयोग यह गणना करने के लिए करते हैं कि क्या A और B प्रतिच्छेद करते हैं। क्रमपरिवर्तन की कम्प्यूटिंग समता केवल एक-तरफ़ा संचार के 3 बिट्स लेती है। इसे संबंधित मैट्रिक्स के रैंक के आधार पर आसानी से प्राप्त किया जा सकता है। π=A0¯B1A0B1¯ABAB
वेस्वोलॉड ओपरिन

जवाबों:


2

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

एक और बाउंड का उपयोग करने वाले सबूत कठिन हैं। नोम निसान इस टिप्पणी यहाँ (गैर नियतात्मक संस्करण के लिए) देखें: L_k-अलग के लिए छोटी से छोटी NFA के आकार पर सीमा ,

हर्मन ग्रुबर द्वारा खुद के द्वारा दिए गए इस संबंधित प्रश्न से पता चलता है कि संचार जटिलता कम बाध्य सत्य से बहुत दूर हो सकती है (गैर-नियतात्मक संस्करण में) एनएफए 3 अक्षर भाषा को स्वीकार करने के लिए कम बाध्य है

यह भी संबंधित है कि यह तय करने के लिए कि क्रमचय एक चक्र है, कठिन प्रतीत होता है, रान रेज़ और बोरिस स्पीकर का यह FOCS पेपर देखें: http://www.computer.org/csdl/proceedings/focs/1993-4370/00 /0366870-abs.html

इसलिए, मुझे इस प्रश्न का उत्तर जानने में भी बहुत दिलचस्पी है।


जब आप कहते हैं कि "कोई फर्क नहीं पड़ता कि हम इनपुट को दो भागों में कैसे काटते हैं" तो क्या आपका तर्क भी कटौती को नियंत्रित करता है जब क्रमपरिवर्तन दो भागों में विभाजित होता है? व्युत्क्रम की संख्या की गिनती के बारे में जुड़ा हुआ पत्र में उदाहरण के लिए, सेट disjointness, जहां ऐलिस और बॉब आदानों है से एक कमी है , और वे क्रमपरिवर्तन फार्म ¯ एक 0 बी 1 0 ¯ बी 1 और ¯ एक 1 बी 0 1 ¯ बी 0 । इंडेक्स 0 या 1 ट्रांसफ़ॉर्मेशन 2 x को संदर्भित करता हैA,B[n]A0¯B1A0B1¯A1¯B0A1B0¯2xऔर , और बार पूरक को संदर्भित करता है। दूसरे शब्दों में, अगर संचार बहु-गोल हो सकता है तो क्या होगा? 2x+1
लेज़्ज़्लो कोज़मा

@ इलाज़्लो: इस समस्या में यह वास्तव में कोई फर्क नहीं पड़ता कि आप इनपुट को कैसे काटते हैं जब तक आप इसे केवल दो खिलाड़ियों को देते हैं क्योंकि क्रमचय की समता इसके चक्रों की संख्या से निर्धारित होती है (इसलिए यही कारण है कि यह संख्या से भिन्न है व्युत्क्रम के)।
डोमटोटर

क्या यह देखना आसान है कि A अपने इनपुट से थोड़ी गणना कैसे कर सकता है, जिसके उपयोग से B समता की गणना कर सकता है? मैं देखता हूं कि ए और बी दोनों चक्रों की संख्या "उनके भागों के भीतर" कैसे जानते हैं। लेकिन वे # "क्रॉसिंग" चक्रों की समानता को कैसे पाते हैं?
लेज़्ज़्लो कोज़मा

2
@ इलाज़्लो: मान लीजिए कि A का इनपुट कुछ ऐसा है जैसे 1-> 7, 2-> 5, 3-> 8, 4-> 6। इसमें 1-1, 5, 2-> 6, 3-> 8, 4-> 7 के समान ही व्युत्क्रम हैं। अधिक आम तौर पर, बी को पता होता है कि A के नंबरों को किस संख्या में मैप किया गया है। एक समान संख्या में व्युत्क्रमों का उपयोग करते हुए, ए इन संख्याओं को बढ़ते क्रम में अनुमति दे सकता है, संभवतः अंतिम दो को छोड़कर। इन अंतिम दो नंबरों का संबंध वह एक बिट है जिसे वह भेजता है।
डोमटोटर

@ Domotor: अनुवर्ती प्रश्न - अगर एक हो जाता है , बी हो जाता है एक n + 1 , ... , एक 2 एन , सी हो जाता है एक 2 n + 1 , ... , एक 3 एन क्रमपरिवर्तन की एक की [ एन ] , क्या वे संचार के ( एन ) बिट्स के साथ समानता स्थापित कर सकते हैं ? a1,,anan+1,,a2na2n+1,,a3na[3n]o(n)
लेज़्ज़्लो कोज़मा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.