जब दो एल्गोरिदम को "समान" कहा जाता है?


16

मैं सिद्धांत में काम नहीं करता हूं, लेकिन मेरे काम को हर बार एक समय में सिद्धांत पत्रों को पढ़ने (और समझने) की आवश्यकता होती है। एक बार जब मैं परिणामों का (सेट) समझ लेता हूं, तो मैं उन लोगों के साथ इन परिणामों पर चर्चा करता हूं जिनके साथ मैं काम करता हूं, जिनमें से अधिकांश सिद्धांत रूप में भी काम नहीं करते हैं। इस तरह की एक चर्चा के दौरान, निम्नलिखित प्रश्न सामने आया:

जब कोई कहता है कि दो दिए गए एल्गोरिदम "समान" हैं?

मुझे "समान" से क्या मतलब है? हम कहते हैं कि दो एल्गोरिदम समान हैं यदि आप किसी भी समीक्षक को भ्रमित / परेशान किए बिना निम्नलिखित दावों में से किसी एक में सुधार कर सकते हैं (बेहतर परिभाषाएं स्वागत की गई हैं):

दावा 1. "एल्गोरिथ्म , जो एल्गोरिदम बी के समान है , समस्या एक्स को भी हल करता हैABX "

दावा 2. "हमारा एल्गोरिथ्म एल्गोरिथम सी के समान C "

मुझे इसे थोड़ा और विशिष्ट बनाने दें। मान लीजिए हम ग्राफ एल्गोरिदम के साथ काम कर रहे हैं। दो एल्गोरिदम के समान होने के लिए पहले कुछ आवश्यक शर्तें:

  1. वे एक ही समस्या को हल कर रहे होंगे।
  2. उनके पास समान उच्च स्तरीय सहज विचार होना चाहिए।

उदाहरण के लिए, ग्राफ ट्रैवर्सल, चौड़ाई-प्रथम और डेप्थ-प्रथम ट्रैवर्सल के बारे में बात करना उपरोक्त दो स्थितियों को संतुष्ट करता है; लघु-पथ संगणना के लिए, चौड़ाई-प्रथम और दिज्क्स्ट्रा के एल्गोरिथ्म उपरोक्त दोनों स्थितियों (बिना वज़न वाले ग्राफ़ पर, निश्चित रूप से) को संतुष्ट करते हैं; आदि।

क्या ये भी पर्याप्त परिस्थितियां हैं? अधिक विशेष रूप से, मान लें कि दो एल्गोरिदम समान होने के लिए आवश्यक शर्तों को पूरा करते हैं। क्या आप वास्तव में उन्हें समान कहेंगे, यदि

  1. उनके पास अलग-अलग स्पर्शोन्मुख प्रदर्शन है?
  2. रेखांकन की एक विशेष वर्ग के लिए, एक एल्गोरिथ्म की आवश्यकता है , जबकि अन्य की आवश्यकता है समय हे ( एन 1 / 3 )Ω(n)O(n1/3) समय?
  3. उनकी अलग-अलग समाप्ति की स्थिति है? (याद रखें, वे एक ही समस्या को हल कर रहे हैं)
  4. दो एल्गोरिदम में पूर्व-प्रसंस्करण कदम अलग है?
  5. मेमोरी एल्गोरिदम दो एल्गोरिदम में अलग है?

संपादित करें: प्रश्न स्पष्ट रूप से बहुत संदर्भ पर निर्भर है और व्यक्तिपरक है। मैं उम्मीद कर रहा था कि उपरोक्त पांच स्थितियां, हालांकि, कुछ सुझाव प्राप्त करने की अनुमति देंगी। मुझे इस प्रश्न को और संशोधित करने और अधिक विवरण देने में खुशी हो रही है, यदि उत्तर प्राप्त करने की आवश्यकता है। धन्यवाद!


1
यह वास्तव में संदर्भ पर निर्भर करता है। उदाहरण के लिए, कुछ अनुक्रमिक एल्गोरिदम के लिए, DFS और BFS बहुत अलग हैं और एक भी काम नहीं कर सकता है। समानांतर सेटिंग्स में, डीएफएस (या कम से कम एक संस्करण) पी-पूर्ण है, जबकि बीएफएस "समानांतर में आसान" है।
सुरेश वेंकट

@ सुरेश वेंकट - मैं मानता हूं कि यह प्रश्न बहुत संदर्भ पर निर्भर है। एक बहस शुरू नहीं करने के हित में, मैं अस्पष्ट लगने के जोखिम में "दो एल्गोरिदम" के नाम लेने से
बच गया

4
समस्या यह है कि करीब है और करीब है। "अनिवार्य रूप से एक द्विआधारी खोज" के रूप में गुणक-वजन-अद्यतन विधि के बारे में सोचने का एक तरीका है, लेकिन गलत संदर्भ में यह बहुत बुरा लगेगा। एफडब्ल्यूआईडब्ल्यू, ऊपर आपके सभी मामलों में मैं दो एल्गोरिदम को अलग-अलग घोषित करने की कल्पना कर सकता हूं।
सुरेश वेंकट

1
यह प्रश्न मेरे लिए बहुत व्यक्तिपरक लगता है। आप मूल रूप से "समान" की परिभाषा पूछ रहे हैं, जब कोई विहित परिभाषा मौजूद नहीं है।
जो

1
कुछ हद तक संबंधित: cstheory.stackexchange.com/questions/9409/…
रादु GRIGore

जवाबों:


23

"एल्गोरिथ्म ए, एल्गोरिथ्म बी के समान" की भी सुसंगत परिभाषा देना एक कठिन समस्या है। एक के लिए, मुझे नहीं लगता कि "उन्हें एक ही समस्या को हल करना चाहिए" एक आवश्यक शर्त है। अक्सर जब कोई पेपर में कहता है कि " थ्योरम 2 का एल्गोरिथ्म थ्योरम 1 में एल्गोरिदम बी के समान है ", एल्गोरिथम वास्तव में बी की तुलना में एक अलग समस्या को हल कर रहा है , लेकिन नई समस्या को संभालने के लिए कुछ मामूली संशोधन हैं। ।A2B1AB

यहां तक ​​कि यह निर्धारित करने की कोशिश कर रहा है कि दो एल्गोरिदम होने का क्या मतलब है के समान का है एक दिलचस्प और कठिन समस्या है। कागज देखें "दो एल्गोरिदम समान कब हैं?" http://research.microsoft.com/~gurevich/Opera/192.pdf


17

अधिक बार नहीं, इसका मतलब है "मैं एलगोरिदम बी को विस्तार से नहीं लिखना चाहता हूं, क्योंकि सभी दिलचस्प विवरण अल्गोरिथम ए में लगभग समान हैं, और मैं 10-पृष्ठ की सीमा से अधिक नहीं जाना चाहता हूं, और वैसे भी सबमिशन की समय सीमा तीन घंटे में है। "


7

अगर आपको आम बोलचाल में "समान" से मतलब है, तो मुझे लगता है कि जेफ़ई का जवाब कुछ लोगों को समझाता है।

एक तकनीकी अर्थ में, यह इस बात पर निर्भर करता है कि आप किस चीज की परवाह करते हैं। यदि असममित समय जटिलता आप सभी के बारे में परवाह है, तो पुनरावृत्ति और पुनरावृत्ति के बीच का अंतर मायने नहीं रखता है। अगर कम्प्यूटेबिलिटी आप सभी के बारे में परवाह है, एक काउंटर चर और एक-प्रतीक स्टैक के बीच का अंतर मायने नहीं रखता है।

एल्गोरिदम की तुलना करने के लिए, तुल्यता की धारणा को सटीक बनाने के लिए एक पहला कदम होगा। Intuitively, चलो एल्गोरिदम के अंतरिक्ष हो सकता है और एम गणितीय वस्तुओं की एक जगह है और हो रों मीटर : एक एम एक समारोह एन्कोडिंग कि हो रों मीटर ( पी ) कलन विधि का अर्थ है पी । अंतरिक्ष एम में आपके एल्गोरिथ्म में चर की संख्या से लेकर उसके राज्य-ग्राफ तक कुछ भी हो सकता है या यह समय की जटिलता है। मुझे विश्वास नहीं होता कि एम क्या हो सकता है की एक पूर्ण धारणा है। दिया गया एमAMsem:AMsem(P)PMMMहालाँकि, हम कह सकते हैं कि दो एल्गोरिदम बराबर हैं यदि s e m ( Q ) के बराबर हैsem(P)sem(Q) । मुझे यह जोड़ने दें कि मुझे लगता है कि आपके द्वारा उल्लिखित पांच मानदंडों में से प्रत्येक को इस तरीके से गणितीय रूप से औपचारिक रूप दिया जा सकता है।

अगर हम एक एल्गोरिथ्म के बारे में दूसरे (या किसी अन्य को परिष्कृत करने वाले एल्गोरिथ्म) से अधिक सामान्य होने के बारे में बात करना चाहते हैं, तो मैं को अधिक संरचना के साथ बंद कर दूंगा । कल्पना कीजिए कि ( M , ) एक आंशिक रूप से आदेश दिया गया सेट है और आदेश x odes y एन्कोड करता है कि x , y की तुलना में अधिक परिभाषित ऑब्जेक्ट है । उदाहरण के लिए, अगर एम एक एल्गोरिथ्म के निशान के सेट शामिल है और सेट शामिल किए जाने, है रों मीटर ( पी ) रों मीटर ( क्यू ) का मतलब है कि के हर ट्रेस पीM(M,)xyxyMsem(P)sem(Q)P का एक निशान है । हम इसकी व्याख्या यह कहते हुए कर सकते हैं कि P , Q से अधिक निर्धारक है ।QPQ

इसके बाद, हम पूछ सकते हैं कि यह संभव है कि दो एल्गोरिदम कितने करीब हों। इस मामले में, मुझे लगता है कि को एक मीट्रिक के साथ संपन्न होना होगा। फिर, हम उन गणितीय वस्तुओं के बीच की दूरी को माप सकते हैं जिन्हें दो एल्गोरिदम दर्शाते हैं। रिक्त स्थान या संभाव्यता रिक्त स्थान को मापने और अन्य मानदंडों का उपयोग करके उनकी तुलना करने के लिए आगे की संभावनाएं एल्गोरिदम को मैप करने के लिए हैं।M

आम तौर पर, मैं पूछता हूं - आपको (सहज शब्दों में) क्या परवाह है, इन सहज गुणों का प्रतिनिधित्व करने वाली गणितीय वस्तुएं क्या हैं, मैं इन वस्तुओं के लिए एल्गोरिदम से कैसे मैप कर सकता हूं, और इस स्थान की संरचना क्या है? मैं यह भी पूछूंगा कि क्या वस्तुओं का स्थान समानता की धारणा को स्वीकार करने के लिए पर्याप्त संरचना प्राप्त करता है। यह वह तरीका है जो मैं एक प्रोग्रामिंग लैंग्वेज शब्दार्थ के नजरिए से आता हूं। मुझे यकीन नहीं है कि अगर आपको यह दृष्टिकोण आकर्षक लगता है, तो कंप्यूटर विज्ञान में विचारों की विशाल विभिन्न संस्कृतियों को देखते हुए।


5

जेफ के जवाब की तर्ज पर, दो एल्गोरिदम समान हैं यदि उनमें से एक लेखक को उम्मीद है कि दूसरे के लेखक उसके पेपर की समीक्षा कर सकते हैं।

लेकिन सिद्धांत समुदाय में मजाक करते हुए, मैं कहूंगा कि एल्गोरिथ्म ए किस समस्या को हल कर रहा है, बल्कि यह है कि क्या यह एल्गोरिदम बी के लिए "समान" है, जो एक पूरी तरह से अलग समस्या को हल कर सकता है। A, B के समान है यदि यह एक ही मुख्य सैद्धांतिक विचार के कारण "काम करता है"। उदाहरण के लिए, दोनों एल्गोरिदम में मुख्य विचार है कि आप डेटा को बहुत कम आयामी स्थान में प्रोजेक्ट कर सकते हैं, जॉनसन-लिंडेनस्ट्रस लेम्मा के साथ मानदंडों को संरक्षित कर सकते हैं, और फिर एक क्रूर-बल खोज कर सकते हैं? फिर आपका एल्गोरिथ्म अन्य एल्गोरिदम के समान है जो ऐसा करते हैं, इससे कोई फर्क नहीं पड़ता कि आप क्या समस्या हल कर रहे हैं। कुछ छोटी संख्या में भारी शुल्क वाली एल्गोरिथम तकनीकें हैं जिनका उपयोग विभिन्न प्रकार की समस्याओं को हल करने के लिए किया जा सकता है, और मुझे लगता है कि ये तकनीक "समान" एल्गोरिदम के कई सेटों के केंद्रक का निर्माण करती हैं।


3

बहुत दिलचस्प सवाल है, और बहुत अच्छा कागज रयान!

मैं निश्चित रूप से इस विचार से सहमत हूं कि एल्गोरिदम के बीच समग्र समानता पर एक आकलन करना मुख्य रूप से एक व्यक्तिपरक मूल्य निर्णय है। जबकि तकनीकी दृष्टिकोण से एल्गोरिदम की समानता पर निर्णय लेने के लिए कई विशेषताएं हैं, जो अंत में बारीकी से देखी जाती हैं, यह व्यक्तिगत स्वाद का भी मामला है। मैं आपके प्रश्न के विशेष बिंदुओं का उल्लेख करते हुए एक ही सिक्के के दोनों पक्षों के महत्व का विवरण प्रदान करने का प्रयास करूंगा:

तकनीकी दृष्टि से:

  1. रयान ने पहले ही बताया कि दोनों एल्गोरिदम को एक ही समस्या को हल करना चाहिए । कोई आगे भी जा सकता है और इस धारणा को यह कहकर सामान्य कर सकता है कि यह आमतौर पर यह साबित करने के लिए पर्याप्त है कि एक ही उदाहरण का एक बहुपद परिवर्तन है जिसे एल्गोरिदम ए द्वारा समझा जा सकता है ताकि एल्गोरिदम बी इसे संभाल सके। हालांकि, यह वास्तव में बहुत कमजोर होगा। मैं एक मजबूत अर्थ में समानता के बारे में सोचना पसंद करता हूं।
  2. हालांकि, मैं दो समान एल्गोरिदम के लिए एक ही सहज विचार के लिए कभी भी उम्मीद नहीं करूंगा --- हालांकि, फिर से, यह एक परिभाषा है जिसे पकड़ने में आसान नहीं है। इससे अधिक, यह अक्सर ऐसा होता है कि एल्गोरिदम को समान माना जाता है जो मुख्य तर्क का पालन नहीं करते हैं। उदाहरण के लिए कुछ छंटाई वाले एल्गोरिदम पर विचार करें, जो अलग-अलग विचारों के बाद अलग-अलग तरीके से उत्पन्न हुए हैं। एक चरम उदाहरण के रूप में आनुवंशिक एल्गोरिदम पर विचार करें जो आमतौर पर गणितीय समुदाय द्वारा केवल स्टोचस्टिक प्रक्रियाओं के रूप में माना जाता है (और इसलिए वे उनके विचार में समतुल्य हैं) जो तब अलग-अलग तरीके से मॉडलिंग और विश्लेषण किए जाते हैं।
  3. N(N21)योगात्मक पैटर्न डेटाबेस वास्तव में एक ही क्रम में नोड्स की समान संख्या का विस्तार करेगा, और यह दोनों एल्गोरिदम (और उनके उत्तराधिकारियों) को बहुत मजबूत अर्थों में कड़ाई से बराबर होने की अनुमति देता है, जबकि पहले दृष्टिकोण में कोई पूर्व-प्रसंस्करण नहीं है और दूसरा एक किसी विशेष उदाहरण को हल करने के लिए शुरू करने से पहले एक महत्वपूर्ण ओवरहेड है। हालाँकि, जैसे ही आपके पैटर्न डेटाबेस में अधिक सिमुलटेनियस इंटरैक्शन पर विचार किया जाता है, उनके बीच प्रदर्शन में बहुत बड़ा अंतर होता है, जिससे वे निश्चित रूप से अलग-अलग विचार / एल्गोरिदम होते हैं।
  4. वास्तव में, मुझे लगता है कि अधिकांश लोग अपने उद्देश्य और प्रदर्शन के लिए एल्गोरिदम का न्याय करेंगे । इसलिए, प्रोग्राम के बीच समानता के बारे में तर्क करने के लिए असममित प्रदर्शन एक अच्छा मीट्रिक है। हालांकि, ध्यान रखें कि यह प्रदर्शन विशिष्ट रूप से विशिष्ट मामला नहीं है, ताकि यदि दो एल्गोरिदम में समान स्पर्शोन्मुख प्रदर्शन हो, लेकिन व्यवहार में अलग तरह से व्यवहार करें, तो आप शायद यह निष्कर्ष निकालेंगे कि वे अलग हैं। इस संबंध में मजबूत सबूत यह होगा कि दोनों एल्गोरिदम का समय और मेमोरी दोनों पर एक ही प्रदर्शन है (और जैसा कि सुरेश ने कहा, डीएफएस और बीएफएस को अलग दिखने के लिए बनाता है)। यदि यह दावा आपके लिए ठोस नहीं है, तो कृपया उत्कृष्ट (और बहुत अनुशंसित पुस्तक) देखें: प्रोग्रामिंग यूनिवर्ससेठ लॉयड द्वारा। पृष्ठ 189 में वह एक सूची को संदर्भित करता है जिसमें जटिलता के 30 से अधिक उपायों का उपयोग किया जा सकता है जो कि एल्गोरिदम को अलग-अलग होने के रूप में माना जा सकता है।

तो क्या एल्गोरिदम समान / भिन्न होता है? मेरे विचार में (और यह विशुद्ध रूप से सट्टा है), मुख्य अंतर इस बारे में है कि वे आपको क्या सुझाव देते हैं। कई, कई (कई!) एल्गोरिदम बस कुछ तकनीकीताओं में भिन्न होते हैं जब एक ही उद्देश्य के लिए सेवा करते हैं ताकि इनपुट के विभिन्न श्रेणियों के लिए विशिष्ट मामला अलग हो। हालाँकि, सभी अंतरों में सबसे बड़ा है (मेरी नज़र में) वे आपको क्या सुझाव देते हैं। एल्गोरिदम में अलग-अलग क्षमताएं हैं और इसलिए उनकी अपनी ताकत और कमजोरियां हैं। यदि दो एल्गोरिदम समान दिखते हैं, लेकिन अलग-अलग मामलों में सामना करने के लिए अलग-अलग तरीकों से बढ़ाया जा सकता है, तो मैं निष्कर्ष निकालूंगा कि वे अलग हैं। अक्सर, हालांकि, दो एल्गोरिदम बहुत अधिक दिखते हैं ताकि आप उन्हें एक ही मानें ... जब तक कि कोई एक महत्वपूर्ण अंतर नहीं आता और अचानक, वे पूरी तरह से अलग होते हैं!

क्षमा करें, मेरी प्रतिक्रिया इतनी देर में थी ...

चीयर्स,


1
दरअसल, रेयान ने सुझाव दिया कि दोनों एल्गोरिदम के लिए एक ही समस्या को हल करना आवश्यक नहीं है।
जेफ

सच! मैं इस संबंध में केवल अपनी राय एकत्र कर रहा था, लेकिन आप निश्चित रूप से सही हैं!
कार्लोस लिनारेस लोपेज़

2

एक समानता मीट्रिक को परिभाषित किए बिना समानता का कोई भी उल्लेख अच्छी तरह से परिभाषित नहीं है। ऐसे कई तरीके हैं जिनमें दो एल्गोरिदम समान हो सकते हैं:

Quicksort और Mergesort बहुत समान समस्याओं को हल करते हैं, लेकिन वे ऐसा करने के लिए विभिन्न एल्गोरिदम का उपयोग करते हैं। उनके पास समान एल्गोरिथम जटिलता है (हालांकि उनका सबसे खराब प्रदर्शन और मेमोरी उपयोग अलग-अलग हो सकता है)। क्विकॉर्ट और मर्जेसर्ट दोनों ही बबस्पोर्ट के समान हैं, हालांकि बबोर्टोर्ट में बहुत अलग प्रदर्शन मैट्रिक्स हैं। यदि आप जटिलता के आँकड़ों को नज़रअंदाज़ करते हैं तो क्विकॉर्ट, मर्जसॉर्ट और बबल्सॉर्ट सभी एक ही तुल्यता वर्ग में हैं। हालाँकि, यदि आप सभी एल्गोरिथम जटिलता के बारे में परवाह करते हैं, तो क्विकॉर्ट और मर्जेसर्ट एक दूसरे के लिए बबल्सॉर्ट की तुलना में बहुत अधिक समान हैं।

स्मिथ-वाटरमैन डायनेमिक प्रोग्रामिंग और एचएमएम-अनुक्रम तुलना दो अनुक्रमों को संरेखित करने की समस्या को हल करने का प्रयास करता है। हालांकि, वे अलग-अलग इनपुट लेते हैं। स्मिथ-वाटरमैन इनपुट के रूप में दो क्रम लेता है, और HMM- अनुक्रम तुलना एक HMM और इनपुट के रूप में एक अनुक्रम लेता है। दोनों आउटपुट अनुक्रम संरेखण। विचारों को प्रेरित करने के मामले में, ये दोनों लेवेंसहाइट की संपादित दूरी के समान हैं , लेकिन केवल बहुत उच्च स्तर पर।

यहां कुछ मानदंड हैं जिनके द्वारा दो एल्गोरिदम समान कहे जा सकते हैं:

  1. इनपुट / आउटपुट प्रकार
  2. एल्गोरिथम / मेमोरी जटिलता
  3. इनपुट के प्रकारों के बारे में अनुमान (उदाहरण के लिए केवल सकारात्मक संख्या या फ्लोटिंग पॉइंट स्थिरता)
  4. नेस्टेड रिश्ते (जैसे कुछ एल्गोरिदम दूसरों के विशेष मामले हैं)

समानता के अर्थ के बारे में महत्वपूर्ण निर्णय बना हुआ है। कभी-कभी आप एक एल्गोरिथ्म की जटिलता के बारे में परवाह करते हैं, कभी-कभी आप नहीं करते हैं। जैसा कि समानता की परिभाषा चर्चा के संदर्भ पर निर्भर करती है, शब्द "समान एल्गोरिथ्म" अच्छी तरह से परिभाषित नहीं है।

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