यह कहें कि और एक ही लंबाई के दो तार हैं। एक anagramming दो तार की एक द्विभाजित मानचित्रण है ऐसी है कि प्रत्येक के लिए ।
एक ही तार के जोड़े के लिए एक से अधिक विपर्यय हो सकते हैं। उदाहरण के लिए, यदि `abcab` और हमारे पास और , दूसरों के बीच में।cabab
हम कहेंगे कि एनाग्रमिंग का वेट कटौती की संख्या है, जिसे पहले स्ट्रिंग में बनाना होगा ताकि दूसरी स्ट्रिंग प्राप्त करने के लिए फिर से व्यवस्थित किया जा सके। औपचारिक रूप से, यह के मूल्यों की संख्या है जिसके लिए । यही कारण है, यह अंक, जिस पर की संख्या है है नहीं , वास्तव में 1. उदाहरण की वृद्धि और , क्योंकि कटौती एक बार, टुकड़ों में और , और कटौती चार समय, पाँच विखंडू में।123451234512345
मान लीजिए कि दो स्ट्रिंग्स और लिए एक विपर्ययण मौजूद है । फिर कम से कम एक विपर्ययण में कम से कम वजन होना चाहिए। मान लीजिए कि यह सबसे हल्का है । (कई हल्के आरेख हो सकते हैं; मुझे परवाह नहीं है क्योंकि मैं केवल भार में दिलचस्पी रखता हूं।)
सवाल
मुझे एक एल्गोरिथ्म चाहिए, जिसके लिए दो तार दिए गए हैं, जिनके लिए एनाग्रमिंग मौजूद है, कुशलता से दो स्ट्रिंग्स के सबसे हल्के एनाग्रमिंग के सटीक वजन का उत्पादन करता है । यह सब ठीक है अगर एल्गोरिथ्म भी एक सबसे हल्का एनाग्रमिंग पैदावार देता है, लेकिन इसकी आवश्यकता नहीं है।
सभी विपर्ययकों को उत्पन्न करना और उनका वजन करना काफी सरल मामला है, लेकिन कई हो सकते हैं, इसलिए मैं एक ऐसी विधि पसंद करूंगा जो सीधे प्रकाश विपर्यय को खोजे।
प्रेरणा
इस समस्या का कारण इस प्रकार है। कंप्यूटर को शब्दकोश खोजना और एनाग्राम ढूंढना बहुत आसान है, ऐसे शब्दों के जोड़े जिनमें बिल्कुल समान अक्षर होते हैं। लेकिन उत्पादित बहुत सारे विपर्यय निर्बाध हैं। उदाहरण के लिए, वेबस्टर के दूसरे अंतर्राष्ट्रीय शब्दकोश में पाए जाने वाले सबसे लंबे उदाहरण हैं:
कोलेसिस्टोडुओडेनोस्टॉमी
ग्रहणीशोथ
समस्या स्पष्ट किया जाना चाहिए: इन अरुचिकर है क्योंकि वे एक बहुत ही प्रकाश anagramming स्वीकार करते हैं कि बस आदान-प्रदान cholecysto, duedenoऔर stomyवर्गों, 2. दूसरी ओर का वजन के लिए, यह बहुत कम उदाहरण बहुत अधिक आश्चर्य की बात और दिलचस्प है:
तटीय
अनुभागीय
यहां सबसे हल्के विपर्ययण का वजन 8 है।
मेरे पास एक प्रोग्राम है जो इस पद्धति का उपयोग दिलचस्प विपर्यय का पता लगाने के लिए करता है, अर्थात् वे जिनके लिए सभी एनाग्रम उच्च भार के हैं। लेकिन यह सभी संभव विपर्यय को उत्पन्न और वजन करके करता है, जो धीमा है।
cholecystoduodenostomyहै ccddeehlmnooooossttuyy।) दो शब्द विपर्यय हैं यदि और केवल यदि उनका एक ही विहित रूप है। आप शब्दों को एक हैश तालिका में संग्रहीत करते हैं, उनके विहित रूपों के द्वारा, और जब भी आप टकराव पाते हैं, तो आपके पास एक विपर्यय होता है।