वास्तव में "diff algorithm" जैसी कोई चीज़ नहीं है। कई अलग-अलग diff एल्गोरिदम हैं, और वास्तव में उपयोग किए गए विशेष diff एल्गोरिदम कुछ मामलों में विशेष diff उपकरण का व्यावसायिक लाभ माना जाता है।
सामान्यतः, कई diff एल्गोरिदम सबसे लंबे समय तक आम उपक्रम (एलसीएस) समस्या पर आधारित होते हैं।
1 9 70 के दशक से मूल यूनिक्स diff
प्रोग्राम डौग मैकिल्रॉय द्वारा लिखा गया था और इसका उपयोग हंट-मैकिलॉयय एल्गोरिदम के रूप में जाना जाता है। लगभग 40 साल बाद, उस एल्गोरिदम के एक्सटेंशन और डेरिवेटिव अभी भी बहुत आम हैं।
कुछ साल पहले, ब्रैम कोहेन (सबसे सफल फाइलेशयरिंग प्रोग्राम और कम से कम सफल संस्करण नियंत्रण प्रणाली के निर्माता) ने Patience Diff algorithm बनाया जो एलसीएस की तुलना में अधिक मानव-पठनीय परिणाम देने के लिए डिज़ाइन किया गया है। इसे मूल रूप से बाजार वीसीएस में लागू किया गया था और गिट को एक विकल्प के रूप में भी जोड़ा गया था।
हालांकि, जब तक कि आप diff एल्गोरिदम पर शोध में रूचि रखते हैं, तो आपकी सबसे अच्छी शर्त शायद कुछ मौजूदा diff लाइब्रेरी का उपयोग करना होगा जैसे कि Davide Libenzi's LibXDiff, उदाहरण के लिए गिट क्या उपयोग करता है। अगर मैं पहले ही एक PHP एक्सटेंशन लपेट रहा था तो मैं बहुत आश्चर्यचकित नहीं होगा। एक अच्छा विकल्प Google's Diff-Match-Patch library है, जिसका प्रयोग बेसिन या व्हाइटरूम में किया जाता है, उदाहरण के लिए और जो कई भाषाओं के लिए उपलब्ध है। यह मेयर्स डिफ एल्गोरिदम प्लस कुछ अतिरिक्त और अतिरिक्त स्पीडअप के लिए पोस्ट-प्रोसेसिंग का उपयोग करता है।
यदि आप diffing से विलय करने में अधिक रूचि रखते हैं, तो एक पूरी तरह से अलग दृष्टिकोण, ऑपरेशनल ट्रांसफॉर्मेशन कहा जाता है। ओटी का विचार यह है कि दो दस्तावेजों के बीच मतभेदों को समझने के बजाय, आप संचालन "रिवर्स इंजीनियर" करने का प्रयास करते हैं जिससे उन मतभेदों का कारण बनता है। यह बहुत बेहतर विलय के लिए अनुमति देता है, क्योंकि आप फिर उन परिचालनों को "पुनः चला सकते हैं"। ये रीयल-टाइम सहयोगी संपादकों जैसे ईथरपैड, Google वेव या सबइथाएडिट के लिए सबसे उपयोगी हैं।
स्रोत
2010-05-12 09:38:54
कई thx। दुर्भाग्यवश मेरे पास केवल एक वोट है और इस बार मुझे इसे –
+1 के साथ रैंक करना अच्छा लगेगा :) – Unreason
+1 ऑपरेशनल ट्रांसफॉर्मेशन – EoghanM