अंतरिक्ष जटिलता Levenshtein संपादित दूरी के लिए इष्टतम स्ट्रिंग संरेखण की गणना करने के लिए


12

अगर हमें आकार n1 और दो तार दिए जाते हैं n2, तो मानक Levenshtein संपादित दूरी गणना एक गतिशील एल्गोरिथ्म द्वारा समय जटिलता हे(n1n2) और अंतरिक्ष जटिलता हे(n1n2) । (कुछ सुधार संपादित दूरी एक समारोह के रूप में किए जा सकते हैं घ, लेकिन हम d पर कोई धारणा नहीं बनाते हैंघहे(अधिकतम(n1,n2))

हालाँकि, यदि आप एक इष्टतम संपादन स्क्रिप्ट का वास्तविक संपादन प्राप्त करना चाहते हैं, तो क्या यह संभव है कि मेमोरी उपयोग से बेहतर हो , संभवतः चल रहे समय की कीमत पर?हे(n1n2)

जवाबों:


15

युवल ने सुझाव दिया है कि व्यापार की कोई आवश्यकता नहीं है। पूरे इष्टतम संपादन अनुक्रम की गणना समय और ओ ( एन + एम ) अंतरिक्ष में की जा सकती है, गतिशील प्रोग्रामिंग और डिवाइड-एंड-कॉन के मिश्रण का उपयोग करके, जो पहले डैन हिर्शबर्ग द्वारा वर्णित है। ( अधिकतम आम कंप्यूटिंग के लिए एक रेखीय अंतरिक्ष एल्गोरिथ्म। साम्य। एसीएम 18 (6): 341-343, 1975-201)O(nm)O(n+m)

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

Half(i,j)={∞if i<m/2jif i=m/2Half(i−1,j)if i>m/2 and Edit(i,j)=Edit(i−1,j)+1Hएएलच(मैं,जे-1)अगर मैं>म/2 तथा इघमैंटी(मैं,जे)=इघमैंटी(मैं,जे-1)+1एचएएलच(मैं-1,जे-1)अन्यथा

मानों की गणना उसी समय की जा सकती है, जब O ( m n ) समय का उपयोग करते हुए एडिट डिस्टेंस टेबल E d i t ( i , j ) का उपयोग किया जाता है । चूंकि संस्मरण तालिका की प्रत्येक पंक्ति केवल ऊपर की पंक्ति पर निर्भर करती है, दोनों E d i t ( m , n ) और H a l f ( m , n )एचएएलच(मैं,जे)इघमैंटी(मैं,जे)हे(मn)इघमैंटी(म,n)एचएएलच(म,n) आवश्यक है स्थान।हे(म+n)

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

अंत में, इष्टतम संपादन इनपुट तार बदलने अनुक्रम में बी [ 1 .. n ] बदलने इष्टतम दृश्यों के होते हैं एक [ 1 । । मीटर / 2 ] में बी [ 1 । । H a l f ( m , n ) ] के बाद इष्टतम अनुक्रम A [ m / 2 + 1 को परिवर्तित करता है । ।ए[1 ..म]बी[1 ..n]ए[1।।म/2]बी[1।।एचएएलच(म,n)] में बी [ एच एक एल एफ ( मीटर , एन ) + 1 । । एन ] । हम उन दो subsequences रिकर्सिवली, कुल मिलाकर चल रहा है समय का अनुसरण करता है निम्नलिखित पुनरावृत्ति गणना हैं: टी ( मीटर , n ) = { हे ( एन ) यदि  मीटर ≤ 1 हे ( मीटर ) यदि  n ≤ 1 हे ( एम एन ) + अधिकतमए[म/2+1।।म]बी[एचएएलच(म,n)+1।।n] यह सिद्ध करना कठिन नहीं है किT(m,n)=O(mn)। इसी तरह, चूंकि हमें एक समय में केवल एक डायनामिक-प्रोग्रामिंग पास के लिए स्थान की आवश्यकता होती है, इसलिए कुल स्थान अभी भीO(m+n) है। (रिकर्सियन स्टैक के लिए स्थान नगण्य है।)

टी(म,n)={हे(n)अगर म≤1हे(म)अगर n≤1हे(मn)+अधिकतमज(टी(म/2,ज)+टी(म/2,n-ज))अन्यथा
टी(म,n)=हे(मn)हे(म+n)

5
क्योंकि मुझे यह याद आया जब डैन ने मुझसे मेरी योग्यता परीक्षा के बारे में पूछा, इसीलिए।
— जेफ

मुझे याद है कि यह एक (निर्देशित) अभ्यास के रूप में है और यह बहुत अच्छा है
— साशो निकोलेव

3

एल्गोरिथ्म जो आप वर्णन करते हैं कि अंतरिक्ष में चलता है, वास्तव में अंतिम संपादन से पहले, और अंतिम संपादन से पहले स्थिति को ठीक करता है। इसलिए यदि आप इस एल्गोरिथ्म O ( n 1 + n 2 ) बार चलाते हैं , तो आप रनटाइम बढ़ाने की कीमत पर संपूर्ण संपादन अनुक्रम को पुनर्प्राप्त कर सकते हैं। सामान्य तौर पर, एक समय-स्थान व्यापार-बंद होता है जो उस समय आपके द्वारा बनाए रखने वाली पंक्तियों की संख्या से नियंत्रित होता है। इस ट्रेड-ऑफ के दो चरम बिंदु स्पेस ओ ( एन 1 एन 2 ) और स्पेस ओ ( एन 1 एन) हैंहे(n1+n2)हे(n1+n2)हे(n1n2) , और इन के बीच, समय और स्थान का उत्पाद स्थिर है (बड़े ओ तक)।हे(n1+n2)

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