যুবাল যে ট্রেড অফের পরামর্শ দেয় তার দরকার নেই। গতিশীল প্রোগ্রামিংয়ের মিশ্রণ ব্যবহার করে এবং ড্যান হির্সবার্গের দ্বারা প্রথমে বর্ণিত ডিভাইড-অ্যান্ড-বিজয়ের মাধ্যমে পুরো অনুকূল সম্পাদনা ক্রমটি সময় এবং স্পেসে গণনা করা যায় । ( সর্বাধিক সাধারণ উপসংখ্যার গণনা করার জন্য একটি রৈখিক স্পেস অ্যালগরিদম Commun যোগাযোগ। ACM 18 (6): 341–343, 1975.)O(nm)O(n+m)
স্বজ্ঞাতভাবে, হির্সবার্গের ধারণাটি হ'ল সর্বোত্তম সম্পাদনা ক্রমের মধ্য দিয়ে একটি একক সম্পাদনা ক্রিয়াকলাপ গণনা করা, এবং তারপরে ক্রমবিন্যাসের ক্রমান্বয়ে দুটি অংশকে গণনা করা। আমরা যদি মেমোইজেশন টেবিলের এক কোণ থেকে অন্য কোণে পথ হিসাবে সর্বোত্তম সম্পাদনার ক্রমটি মনে করি তবে আমাদের এই পথটি টেবিলের মধ্য সারিটি অতিক্রম করে রেকর্ড করার জন্য একটি সংশোধিত পুনরাবৃত্তি প্রয়োজন। একটি পুনরাবৃত্তি যা কাজ করে তা নিম্নলিখিত:
Half(i,j)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∞jHalf(i−1,j)Half(i,j−1)Half(i−1,j−1)if i<m/2if i=m/2if i>m/2 and Edit(i,j)=Edit(i−1,j)+1if i>m/2 and Edit(i,j)=Edit(i,j−1)+1otherwise
এর মানগুলি সময় ব্যবহার করে দূরত্ব সারণী হিসাবে একই সময়ে গণনা করা যেতে পারে । যেহেতু স্মৃতি সারণীর প্রতিটি সারি কেবল এটির উপরের সারির উপর নির্ভর করে, এবং উভয়ই কেবল স্থানের প্রয়োজন requiresHalf(i,j)Edit(i,j)O(mn)Edit(m,n)Half(m,n)O(m+n)
অবশেষে, রূপান্তর ইনপুট স্ট্রিং অনুকূল সম্পাদনা ক্রম মধ্যে রূপান্তর অনুকূল সিকোয়েন্স নিয়ে গঠিত মধ্যে এরপরে অনুকূল ক্রমটি কে । যদি আমরা এই দুটি অনুচ্ছেদটি পুনরাবৃত্তভাবে গণনা করি, সামগ্রিক চলমান সময়টি নিম্নলিখিত পুনরাবৃত্তিটি মেনে চলে:
এটি প্রমাণ করা কঠিন নয় যেA[1..m]B[1..n]A[1..m/2]B[1..Half(m,n)]A[m/2+1..m]B[Half(m,n)+1..n]
T(m,n)=⎧⎩⎨O(n)O(m)O(mn)+maxh(T(m/2,h)+T(m/2,n−h))if m≤1if n≤1otherwise
T(m,n)=O(mn)। একইভাবে, যেহেতু আমাদের কেবল একবারে একটি ডায়নামিক-প্রোগ্রামিং পাসের জন্য স্থান প্রয়োজন, মোট স্পেস বাউন্ডটি এখনও । (পুনরাবৃত্তি স্ট্যাকের জন্য স্থান নগণ্য))
O(m+n)