दूरी की गणना को संपादित करने के लिए माइक्रो-ऑप्टिमाइज़ेशन: क्या यह मान्य है?


10

पर विकिपीडिया , संपादित दूरी के लिए नीचे से ऊपर गतिशील प्रोग्रामिंग योजना के लिए एक कार्यान्वयन दिया जाता है। यह पूरी तरह से परिभाषा का पालन नहीं करता है; आंतरिक कोशिकाओं की गणना इस प्रकार की जाती है:

if s[i] = t[j] then  
  d[i, j] := d[i-1, j-1]       // no operation required
else
  d[i, j] := minimum
             (
               d[i-1, j] + 1,  // a deletion
               d[i, j-1] + 1,  // an insertion
               d[i-1, j-1] + 1 // a substitution
             )
}

जैसा कि आप देख सकते हैं, एल्गोरिथ्म हमेशा ऊपरी-बाएं पड़ोसी से मूल्य चुनता है यदि कोई मैच होता है, तो कुछ मेमोरी एक्सेस, एएलयू संचालन और तुलना को सहेजता है।

हालाँकि, विलोपन (या सम्मिलन) के परिणामस्वरूप एक छोटा मूल्य हो सकता है , इस प्रकार एल्गोरिथ्म स्थानीय रूप से गलत है, अर्थात यह इष्टतमता मानदंड के साथ टूट जाता है। लेकिन शायद गलती अंतिम परिणाम को नहीं बदलती है - इसे रद्द किया जा सकता है।

क्या यह माइक्रो-ऑप्टिमाइज़ेशन वैध है, और क्यों (नहीं)?

जवाबों:


6

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

यहाँ छवि विवरण दर्ज करें

यह असंभव है, क्योंकि तीर को "पार" करने की अनुमति नहीं है। मेल खाती tकई आवेषण (आकृति में हरे रंग के बक्से) को प्रेरित करती है, जैसा कि बाईं ओर दर्शाया गया है:

यहाँ छवि विवरण दर्ज करें

लेकिन फिर आप बस एक समान रूप से अच्छा संरेखण पा सकते हैं, जो दाईं ओर दर्शाया गया है। दोनों मामलों में आप एक मैच करते हैं tऔर आपके पास दो आवेषण होते हैं।

अंतिम tएस में से एक के प्रतिस्थापन के लिए तर्क समान है। इसलिए यदि आप अंतिम tएस में से एक को प्रतिस्थापित करते हैं , तो आप इसके बजाय अंतिम दो टी का मिलान कर सकते हैं, और एक बेहतर संरेखण प्राप्त कर सकते हैं (चित्र देखें)।

यहाँ छवि विवरण दर्ज करें


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