दिलचस्प विपर्ययण ढूँढना


31

यह कहें कि और एक ही लंबाई के दो तार हैं। एक anagramming दो तार की एक द्विभाजित मानचित्रण है ऐसी है कि प्रत्येक के लिए ।a1a2anb1b2bnp:[1n][1n]ai=bp(i)i

एक ही तार के जोड़े के लिए एक से अधिक विपर्यय हो सकते हैं। उदाहरण के लिए, यदि `abcab` और हमारे पास और , दूसरों के बीच में।a=b=cababp1[1,2,3,4,5][4,5,1,2,3]p2[1,2,3,4,5][2,5,1,4,3]

हम कहेंगे कि एनाग्रमिंग का वेट कटौती की संख्या है, जिसे पहले स्ट्रिंग में बनाना होगा ताकि दूसरी स्ट्रिंग प्राप्त करने के लिए फिर से व्यवस्थित किया जा सके। औपचारिक रूप से, यह के मूल्यों की संख्या है जिसके लिए । यही कारण है, यह अंक, जिस पर की संख्या है है नहीं , वास्तव में 1. उदाहरण की वृद्धि और , क्योंकि कटौती एक बार, टुकड़ों में और , और कटौती चार समय, पाँच विखंडू में।w(p)pi[1n1]p(i)+1p(i+1)pw(p1)=1w(p2)=4p11234512345p212345

मान लीजिए कि दो स्ट्रिंग्स और लिए एक विपर्ययण मौजूद है । फिर कम से कम एक विपर्ययण में कम से कम वजन होना चाहिए। मान लीजिए कि यह सबसे हल्का है । (कई हल्के आरेख हो सकते हैं; मुझे परवाह नहीं है क्योंकि मैं केवल भार में दिलचस्पी रखता हूं।)ab

सवाल

मुझे एक एल्गोरिथ्म चाहिए, जिसके लिए दो तार दिए गए हैं, जिनके लिए एनाग्रमिंग मौजूद है, कुशलता से दो स्ट्रिंग्स के सबसे हल्के एनाग्रमिंग के सटीक वजन का उत्पादन करता है । यह सब ठीक है अगर एल्गोरिथ्म भी एक सबसे हल्का एनाग्रमिंग पैदावार देता है, लेकिन इसकी आवश्यकता नहीं है।

सभी विपर्ययकों को उत्पन्न करना और उनका वजन करना काफी सरल मामला है, लेकिन कई हो सकते हैं, इसलिए मैं एक ऐसी विधि पसंद करूंगा जो सीधे प्रकाश विपर्यय को खोजे।


प्रेरणा

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

कोलेसिस्टोडुओडेनोस्टॉमी
ग्रहणीशोथ

समस्या स्पष्ट किया जाना चाहिए: इन अरुचिकर है क्योंकि वे एक बहुत ही प्रकाश anagramming स्वीकार करते हैं कि बस आदान-प्रदान cholecysto, duedenoऔर stomyवर्गों, 2. दूसरी ओर का वजन के लिए, यह बहुत कम उदाहरण बहुत अधिक आश्चर्य की बात और दिलचस्प है:

तटीय
अनुभागीय

यहां सबसे हल्के विपर्ययण का वजन 8 है।

मेरे पास एक प्रोग्राम है जो इस पद्धति का उपयोग दिलचस्प विपर्यय का पता लगाने के लिए करता है, अर्थात् वे जिनके लिए सभी एनाग्रम उच्च भार के हैं। लेकिन यह सभी संभव विपर्यय को उत्पन्न और वजन करके करता है, जो धीमा है।


जिज्ञासा से बाहर, आप युग्म के युग्म कैसे पाते हैं? क्या आप समान लंबाई के सभी शब्दों के भीतर एक जानवर-बल खोज करते हैं? O(n2)
पेड्रो

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

मेरे पास अब अपने ब्लॉग पर इस बारे में अधिक या कम संबंधित जानकारी है: (α) (() (γ) (
मार्क डोमिनस

जवाबों:


21

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

सकारात्मक पक्ष पर, एक ही लेखक [GKZ05] एक ही प्रतिबंध के तहत एक बहुपद-समय 1.1037-अनुमानित एल्गोरिथ्म देते हैं। (ए "1.1037- सन्निकटन एल्गोरिथ्म " एक एल्गोरिथ्म जो हो सकता है उत्पादन नहीं सही उत्तर का मतलब है एक लेकिन उत्पादन के लिए गारंटी है एक मूल्य के बी ऐसी है कि एकबी ≤ 1.1037 एक उन्होंने यह भी एक रेखीय समय 4-सन्निकटन एल्गोरिथ्म के तहत देते हैं।) प्रत्येक तार में प्रत्येक अक्षर में अधिकतम तीन बार होने वाले कमजोर प्रतिबंध।

[GKZ05] अवराम गोल्डस्टीन, पेट्र कोलमैन और जी झेंग। न्यूनतम आम स्ट्रिंग विभाजन की समस्या: कठोरता और सन्निकटन। इलेक्ट्रॉनिक जर्नल ऑफ़ कॉम्बिनेटरिक्स , 12, आर्टिकल R50, 2005. http://www.combinatorics.org/ojs/index.php/eljc/article/view/v12i1r50



9

यह ऊपर दिए गए त्सुओशी इटो के उत्तर का अनुवर्ती है , GKZ05 पेपर के सबसे प्रासंगिक हिस्से को संक्षेप में प्रस्तुत करता है ।

कागज मैक्सिमल इंडिपेंडेंट सेट ( MIS ) की समस्या को कम करता है। एक ग्राफ़ निर्माण करें, जिसके कोने जोड़े जैसे और । जब भी यह असंभव हो कि एक बढ़त के साथ सभी और (जहां ) कनेक्ट करें एक सभी और और को मैप कर सकता है। और । यह पता लगाना आसान है; यदि निम्न में से कोई एक धारण करता है तो ऐसी मानचित्रण असंभव है:G(i,j)ai=bjai+1=bj+1(i,j)(k,)ikiji+1j+1kk+1+1

  1. i=k औरj
  2. i+1=k औरj+1
  3. i+1<k और से संबंध तोड़ना है{j,j+1}{,+1}

कहो परिणामी ग्राफ़ आकार का एक अधिक से अधिक स्वतंत्र सेट है । फिर न्यूनतम विपर्ययण भार , जहां स्ट्रिंग्स की लंबाई और । (यह निष्कर्ष भी माना जाता है: एक कम वजन वाला विपर्ययण सीधे लिए एक बड़े एमआईएस में अनुवाद करता है । विवरण के लिए, पेपर के 4-5 देखें।)Gsns1nabG

उदाहरण के लिए, दो तारों पर विचार करें yttriousऔर touristy। संबंधित ग्राफ में दो कोने हैं, एक साझा ouजोड़ी के लिए और एक साझा riजोड़ी के लिए है। कोने के बीच कोई किनारा नहीं है, क्योंकि यह संभव है कि एनाग्रमिंग के लिए मानचित्र दोनों के ouलिए ouऔर उसके riलिए ri; या एक जाँच कर सकता है कि ऊपर की तीन स्थितियाँ विफल हैं। तो ग्राफ में स्पष्ट रूप से आकार का एक एमआईएस है और न्यूनतम एनग्रामिंग वजन वास्तव में 8-2-1 = 5 है, जो एनामिंगिंग ↔ के अनुरूप है । 's=2y|t|t|ri|ou|st|ou|ri|s|t|y

दूसरी ओर, विचार करें deraterऔर treader। इस बार ग्राफ में तीन कोने हैं:

  1. DErater + treaDEr
  2. dERater + treadER
  3. deratER + treadER

2 और 3 असंगत हैं, और 1 और 3 असंगत हैं, लेकिन 1 और 2 संगत हैं। कितना अद्वितीय एमआईएस आकार की है 1 और 2 और शामिल कोने वजन के इसी anagramming 7-2-1 = 4 है ↔ ।s=2der|a|t|e|rt|r|e|a|der


2
अनुवर्ती पोस्ट के लिए धन्यवाद, लेकिन यह आपकी समस्या की एनपी-पूर्णता का प्रमाण नहीं है। अपनी समस्या के एनपी-पूर्णता को साबित करने के लिए, आपको अपनी समस्या के बारे में कुछ ज्ञात एनपी-पूर्ण समस्या को कम करना होगा, और वह [GKZ05] का प्रमेय 2.2 है। यहां आपने जो प्रस्तुत किया ([GKZ05] का लेम्मा 1.1) विपरीत दिशा में कमी है।
त्सुयोशी इटो

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

2

यह आपके मन में मौजूद सटीक एल्गोरिदम को कवर नहीं करता है (जो कि त्सोशी इटो का जवाब है ), लेकिन "दिलचस्प" एनाग्रम को खोजने की अंतर्निहित समस्या पर कोशिश कर रहा है ...

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

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

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


0

समस्या को क्रमपरिवर्तन समूहों के संदर्भ में परिभाषित किया जा सकता है ।

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

सबसे पहले, क्रमांकन के लिए संकेतन को याद करें, अर्थात्, तथाकथित चक्र संकेतन :

  • () अर्थ है कोई क्रमपरिवर्तन।
  • (1) अर्थ है 1 को 1 के साथ स्वैप किया जाता है, जो कि क्रमपरिवर्तन भी नहीं है।
  • (12) अर्थ है १ और २ की अदला-बदली।
  • (123) अर्थ है 1 1 की जगह 2 जो 3 की जगह लेता है जो 1 (एक रोटेशन) की जगह लेता है।
  • और इसलिए एक

ये सरल 'चक्र' अधिक जटिल क्रमपरिवर्तन का वर्णन करने के लिए बनाए गए हैं।

ऐसा लगता है कि जिन चालों में आप रुचि रखते हैं (लंबाई एक शब्द के लिए ):n

  • एकल पात्रों के जोड़े की अदला-बदली: ये स्वैप हैं जैसे(12)
  • 2 लगातार वर्णों के जोड़े की अदला-बदली: ये फॉर्म क्रमपरिवर्तन हैं , जहाँ और औरएक > 0 < एक + 1 + 1 n(a b)(a+1 b+1)a>0b<a+1b+1n
  • ...
  • n लगातार वर्णों के जोड़े की अदला-बदली: ये फॉर्म जहाँ , , और ।एक > 0 एक + मैं - 1 + मैं - 1 n(a b)(a+1 b+1)(a+i1 b+i1)a>0a+i1bb+i1n

ये चालें आपके एल्गोरिथ्म का आधार बनती हैं। आप जिस चीज में रुचि रखते हैं, वह एक शब्द से दूसरे में जाने के लिए इन चालों के सबसे छोटे अनुक्रम को ढूंढ रही है।

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


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

1
"आप जिस चीज में रुचि रखते हैं, वह एक शब्द से दूसरे में जाने के लिए इन चालों का सबसे छोटा अनुक्रम ढूंढ रहा है।" मुझे नहीं लगता कि यह सही है। उदाहरण के लिए, यदि n = 4, स्वैप (1 2) का वजन 2 है, लेकिन स्वैप (2 3) का वजन 3 है। आपकी गिनती का तरीका इन दोनों को अलग नहीं करता है।
त्सुकोशी इतो

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

0

Cholecystoduodenostomy / duodenocholecystostome के लिए, मैं ध्यान देता हूं कि यदि आपने प्रत्येक वर्ण को एक संख्या सौंपी है, जिसमें यह वर्णन किया गया है कि इसे डेल्टा के रूप में कितना स्थानांतरित किया गया था, तो आपके पास कुछ चीजें होंगी जैसे 7 7, फिर 8 -7, फिर 6 0। यह सही नहीं है क्योंकि कुछ वर्णों को दोहराया जा सकता है (दूसरा सी केवल 2 आगे चला गया, 7 वापस नहीं) आदि लेकिन फिर भी बहुत "रन लंबाई एन्कोडेबल" ​​क्योंकि आप एक पंक्ति में एक ही डेल्टा देखते हैं।

तटरेखा / अनुभागीय की तुलना करें, जहां आपको कुछ (+2) (+ 5) (+ 5) (- 3) (- 1) (+ 3) (+ 3) .... बहुत कम "रन लंबाई एन्कोडेबल" ​​दिखाई देता है।

शायद डेल्टा की यादृच्छिकता आपको एक "स्कोर" दे सकती है जैसे कि विपर्यय कितना दिलचस्प है?

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