লেভেনস্টাইন সম্পাদনার দূরত্বের জন্য অনুকূল স্ট্রিং সারিবদ্ধের গণনা করার জন্য স্পেস জটিলতা


12

যদি আমাদের দুটি আকারের এবং 2 দেওয়া থাকে তবে স্ট্যান্ডার্ড লেভেনস্টেইন সম্পাদনা দূরত্বের গণনা হ'ল সময় জটিলতা এবং স্পেস জটিলতা সহ একটি গতিশীল অ্যালগরিদম দ্বারা । (কিছু উন্নতি সম্পাদন করা দূরত্বের একটি ফাংশন হিসাবে তৈরি করা যেতে পারে , কিন্তু আমরা কোন ধৃষ্টতা করতে বিশেষ করে ছোট হচ্ছে।) আপনি শুধুমাত্র সম্পাদন করা দূরত্বের মান আগ্রহী (অর্থাত, সম্পাদনার সংক্ষিপ্ত সংখ্যা), একটি সাধারণ অ্যালগরিদমের সুপরিচিত উন্নতি (যেখানে আপনি কেবল প্রান্তিককরণের টেবিলের পূর্ববর্তী এবং বর্তমান সারি স্পেস জটিলতা হ্রাস করে ।n1n2O(n1n2)O(n1n2)ddO(max(n1,n2))

তবে, আপনি যদি একটি অনুকূল সম্পাদনা স্ক্রিপ্টের প্রকৃত সম্পাদনাগুলি পেতে চান, তবে O(n1n2) মেমরির ব্যবহারের চেয়ে সম্ভবত আরও ভাল কাজ করা সম্ভব , সম্ভবত চলমান সময় ব্যয় করে?

উত্তর:


15

যুবাল যে ট্রেড অফের পরামর্শ দেয় তার দরকার নেই। গতিশীল প্রোগ্রামিংয়ের মিশ্রণ ব্যবহার করে এবং ড্যান হির্সবার্গের দ্বারা প্রথমে বর্ণিত ডিভাইড-অ্যান্ড-বিজয়ের মাধ্যমে পুরো অনুকূল সম্পাদনা ক্রমটি সময় এবং স্পেসে গণনা করা যায় । ( সর্বাধিক সাধারণ উপসংখ্যার গণনা করার জন্য একটি রৈখিক স্পেস অ্যালগরিদম Commun যোগাযোগ। ACM 18 (6): 341–343, 1975.)O(nm)O(n+m)

স্বজ্ঞাতভাবে, হির্সবার্গের ধারণাটি হ'ল সর্বোত্তম সম্পাদনা ক্রমের মধ্য দিয়ে একটি একক সম্পাদনা ক্রিয়াকলাপ গণনা করা, এবং তারপরে ক্রমবিন্যাসের ক্রমান্বয়ে দুটি অংশকে গণনা করা। আমরা যদি মেমোইজেশন টেবিলের এক কোণ থেকে অন্য কোণে পথ হিসাবে সর্বোত্তম সম্পাদনার ক্রমটি মনে করি তবে আমাদের এই পথটি টেবিলের মধ্য সারিটি অতিক্রম করে রেকর্ড করার জন্য একটি সংশোধিত পুনরাবৃত্তি প্রয়োজন। একটি পুনরাবৃত্তি যা কাজ করে তা নিম্নলিখিত:

Half(i,j)={if i<m/2jif i=m/2Half(i1,j)if i>m/2 and Edit(i,j)=Edit(i1,j)+1Half(i,j1)if i>m/2 and Edit(i,j)=Edit(i,j1)+1Half(i1,j1)otherwise

এর মানগুলি সময় ব্যবহার করে দূরত্ব সারণী হিসাবে একই সময়ে গণনা করা যেতে পারে । যেহেতু স্মৃতি সারণীর প্রতিটি সারি কেবল এটির উপরের সারির উপর নির্ভর করে, এবং উভয়ই কেবল স্থানের প্রয়োজন 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)if m1O(m)if n1O(mn)+maxh(T(m/2,h)+T(m/2,nh))otherwise
T(m,n)=O(mn)। একইভাবে, যেহেতু আমাদের কেবল একবারে একটি ডায়নামিক-প্রোগ্রামিং পাসের জন্য স্থান প্রয়োজন, মোট স্পেস বাউন্ডটি এখনও । (পুনরাবৃত্তি স্ট্যাকের জন্য স্থান নগণ্য))O(m+n)

5
কারণ ড্যান যখন আমাকে আমার যোগ্যতা পরীক্ষার বিষয়ে জিজ্ঞাসা করেছিল তখন আমি এটি মিস করেছি that's
জেফি

আমার মনে আছে এটি একটি (নির্দেশিত) অনুশীলন হিসাবে মনে হয়েছে এবং ভাবছিলাম এটি বেশ দুর্দান্ত ছিল
সাশো নিকোলভ

3

আপনি যে অ্যালগরিদম বর্ণনা করেছেন যে স্থান চলেছে তা আসলে চূড়ান্ত সম্পাদনাটি এবং চূড়ান্ত সম্পাদনার ঠিক আগে রাষ্ট্রটিকে পুনরুদ্ধার করে। সুতরাং আপনি যদি এই অ্যালগরিদম বার চালনা করেন তবে রানটাইম বাড়ানোর ব্যয়ে আপনি পুরো সম্পাদনা ক্রমটি পুনরুদ্ধার করতে পারেন। সাধারণভাবে, একটি সময়-স্থান ট্রেড-অফ রয়েছে যা আপনি সেই সময় ধরে রাখার সারি সংখ্যা দ্বারা নিয়ন্ত্রিত হয়। এই বাণিজ্য বন্ধের দুটি চূড়ান্ত পয়েন্ট স্পেস এবং স্পেস ও এবং এর মধ্যে সময় এবং স্থানের পণ্য ধ্রুবক হয় (বড় ও অবধি)।O(n1+n2)O(n1+n2)O(n1n2)O(n1+n2)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.