2010-05-12 16 views
13

मुझे diff एल्गोरिदम का स्पष्टीकरण और कार्यान्वयन कहां मिल सकता है?मुझे diff एल्गोरिदम कहां मिल सकता है?

सबसे पहले मुझे यह समझना है कि मुझे यकीन नहीं है कि यह एल्गोरिदम का सही नाम है या नहीं। उदाहरण के लिए, स्टैक ओवरफ़्लो एक ही प्रश्न के दो संपादन के बीच अंतर को कैसे चिह्नित करता है?

पीएस: मुझे सी और PHP प्रोग्रामिंग भाषाएं पता हैं।

उत्तर

38

वास्तव में "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 वेव या सबइथाएडिट के लिए सबसे उपयोगी हैं।

+0

कई thx। दुर्भाग्यवश मेरे पास केवल एक वोट है और इस बार मुझे इसे –

+0

+1 के साथ रैंक करना अच्छा लगेगा :) – Unreason

+0

+1 ऑपरेशनल ट्रांसफॉर्मेशन – EoghanM

8

wikipedia के साथ क्या गलत है, जहां यह कहता है कि यह Hunt-McIlroy algorithm है?

ओसीआर paper एल्गोरिदम (स्पष्टीकरण) का वर्णन करता है और आप source (कार्यान्वयन) का निरीक्षण कर सकते हैं।

तो संबंधित भी सवाल सूची (दूसरों के बीच):
'Best' Diff Algorithm
How do document diff algorithms work?
Diff Algorithm
जो सभी उपयोगी होने लगते हैं।

+0

पेपर लिंक मर चुका है। आपके उत्तर के लिए – Matsemann

संबंधित मुद्दे