एल्गोरिथम को साउंड और कम्प्लीट कहने का क्या मतलब है?


33

मैंने ध्वनि और पूर्ण की अलग-अलग व्याख्याएं सुनीं । मैं समझता हूं कि पूर्णता का अर्थ है अगर कोई एक समाधान मिल जाए। एल्गोरिथम ध्वनि कहने का क्या मतलब है ।

एल्गोरिथम को साउंड और कम्प्लीट कहने का क्या मतलब है?


मेरा सुझाव है कि आप पुनर्मूल्यांकन करें कि आपने जो उत्तर दिया है वह गलत है।
ब्लैकजैक

बस यही किया :)
म्यूटेलोगन

जवाबों:


50

ये तर्क से संबंधित बहुत विशिष्ट शब्द हैं।

यहाँ कुछ शुरुआती बिंदु हैं:

http://en.wikipedia.org/wiki/Soundness

http://en.wikipedia.org/wiki/Completeness_(logic)

असल में, साउंडनेस (एक एल्गोरिथ्म) का अर्थ है कि एल्गोरिथ्म कोई परिणाम नहीं देता है जो असत्य हैं। यदि, उदाहरण के लिए, मेरे पास एक सॉर्टिंग एल्गोरिथ्म है जो कभी-कभी सॉर्ट की गई सूची को वापस नहीं करता है, तो एल्गोरिथ्म ध्वनि नहीं है।

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

यह पूर्ण और ध्वनिपूर्ण है यदि यह सभी इनपुट पर काम करता है (कार्यक्रम की दुनिया में शब्दशः मान्य) और हमेशा उत्तर सही मिलता है।


धन्यवाद। मैं वास्तव में उलझन में था कि ध्वनि का क्या अर्थ है। मुझे कई उत्तर मिल रहे थे।
मुतालोगन

खुश अगर यह मदद की ... :)
एरिक Dietrich

13
एक उदाहरण बाइनरी सर्च होगा, यह ध्वनि है, लेकिन यह पूरा नहीं है। यह गैर-क्रमबद्ध सूचियों पर काम नहीं कर सकता है।
मलफिस्ट

3
@ मालफिस्ट लेकिन 'प्रोग्राम की दुनिया' की सूची नहीं है?
एंड्रेस

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

15

मुझे लगता है कि एरिक डायट्रिच का उत्तर एक उलझन भरा है। निम्नलिखित बेहतर है:

एक एल्गोरिथ्म ध्वनि है अगर, कभी भी यह एक उत्तर देता है, तो यह उत्तर सही है। एक एल्गोरिथ्म पूरा हो गया है अगर यह किसी भी मनमाने इनपुट के लिए एक सही उत्तर देने की गारंटी देता है (या, यदि कोई जवाब मौजूद नहीं है, तो यह विफलता की वापसी की गारंटी देता है)।

दो महत्वपूर्ण बिंदु:

  1. साउंडनेस एक कमजोर गारंटी है। यह वादा नहीं करता है कि ए समाप्त होगा।
  2. ध्वनि और पूर्णता संबंधित अवधारणाएं हैं; वास्तव में वे एक-दूसरे के तार्किक रूप हैं। यानी साउंडनेस का कहना है कि अगर कोई जवाब वापस किया जाता है तो जवाब सही है। संपूर्णता कहती है कि अगर यह वापस आ जाता है तो एक उत्तर सही है।

एक उदाहरण के लिए एक छँटाई एल्गोरिथ्म ए पर विचार करें जो इनपुट को संख्याओं की सूची के रूप में प्राप्त करता है। हम कहते हैं कि A ध्वनि है यदि हर बार यह परिणाम देता है तो परिणाम एक क्रमबद्ध सूची है। इसी तरह, हम कहते हैं कि A पूर्ण है यदि किसी भी समय छांटे गए सूची को वापस करने की गारंटी देता है, तो हम इसे संख्याओं की सूची देते हैं।


आप असमंजस में क्यों हो? "एक एल्गोरिथ्म ध्वनि है अगर, कभी भी यह एक उत्तर देता है, तो यह उत्तर सही है।" "मूल रूप से, ध्वनि (एक एल्गोरिथ्म के) के रूप में ही इसका मतलब है कि एल्गोरिथ्म किसी भी परिणाम है कि असत्य हैं उपज नहीं करता है।" इनका मतलब एक ही है। पूर्णता की आपकी (बहुत संक्षिप्त) परिभाषा के लिए, यह विकिपीडिया लिंक में कुछ भी नहीं से मेल खाता है और आप अपने स्वयं के संदर्भ का हवाला देते हैं। मेरा कहना है, एरिक की परिभाषाएं अधिक व्यावहारिक रूप से उपयोगी हैं। यदि आप सही हैं, तो आपको बेहतर सबूत और अधिक मांस प्रदान करना होगा।
itsbruce

1
बस स्पष्ट करने के लिए, जब आप कहते हैं "पूर्णता कहती है कि एक जवाब सच है अगर इसे वापस कर दिया जाता है", तो आपका मतलब है कि उत्तर "सही" सही है?
Dois

1
"यदि कोई उत्तर सत्य है तो उसे लौटाया जाता है" का अर्थ शाब्दिक अर्थ है "यदि कोई उत्तर लौटाया जाता है तो वह सत्य है"। इसके अलावा, उत्तर केवल "सही" नहीं हो सकते हैं। softwareengineering.stackexchange.com/a/311649/21277 अधिक सही है।
१३:

2

ये शब्द कम्प्यूटेशन सिद्धांत से आए हैं, इसलिए वे सॉफ्टवेयर इंजीनियरिंग के संदर्भ में गणना सिद्धांत के संदर्भ में अधिक सार्थक हैं

गणना के अधिकांश मानक मॉडल में, कंप्यूटिंग समस्याओं को भाषाओं के रूप में दर्शाया जाता है । एक भाषा तार का एक सेट है। एक एल्गोरिथ्म, तब, सिर्फ एक प्रणाली या प्रक्रिया है जो यह तय करती है कि क्या दी गई स्ट्रिंग किसी भाषा का सदस्य है (सही या गलत लौटाकर)। सॉफ्टवेयर इंजीनियरिंग के संदर्भ में, गणना सिद्धांत विशेष रूप से ऐसे कार्यों से संबंधित है जो इस तरह दिखते हैं, मान लेते हैं कि तार अपरिवर्तनीय हैं:

boolean some_function(string argument){...}

हम इस फ़ंक्शन को पूर्ण कहते हैं यदि यह हर तर्क के लिए सही है जो भाषा का सदस्य है। इसे हम ध्वनि कहते हैं यदि यह हर तर्क के लिए गलत है जो भाषा का सदस्य नहीं है।

दूसरे शब्दों में, यह तब पूरा होता है जब यह हमेशा सच हो जाता है जब हम चाहते हैं कि यह सच हो, और ध्वनि अगर यह हमेशा झूठी होती है जब हम इसे वापस लौटना चाहते हैं।

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

यह मेरी राय है कि ये शब्द निर्णय समस्याओं के क्षेत्र के बाहर सामान्यीकरण नहीं करते हैं, इसलिए सामान्य फ़ंक्शन पर चर्चा करते समय उनके बीच का अंतर वास्तव में सार्थक नहीं है।


-2

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

सांख्यिकीविद् शायद कहेंगे कि ध्वनि एल्गोरिदम पक्षपाती तौलिए टाइप I त्रुटियाँ हैं (यह सही उम्मीदवारों को स्वीकार नहीं करता है), जबकि पूरा एल्गोरिथ्म टाइप II त्रुटियों (झूठे उम्मीदवारों को स्वीकार करने) के लिए पक्षपाती है।

यहाँ छवि विवरण दर्ज करें

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