एक हेयोरिस्टिक और एक एल्गोरिथ्म के बीच अंतर क्या है?


103

एक हेयोरिस्टिक और एक एल्गोरिथ्म के बीच अंतर क्या है?



1
यदि आप एक पेड़ की संरचना के रूप में एक हेयोरिस्टिक एल्गोरिदम को देखते हैं, तो मुझे लगता है कि आप इसे एक विशेष उद्देश्य एल्गोरिदम के रूप में कह सकते हैं।
जेम्स पी।

एक हेयोरिस्टिक एक एल्गोरिथ्म है जो (साबित) काम नहीं करता है।
जेफ डे

जवाबों:


99

एक एल्गोरिथ्म एक समस्या के लिए एक स्वचालित समाधान का वर्णन है । एल्गोरिथ्म क्या करता है, इसे ठीक से परिभाषित किया गया है। समाधान सबसे अच्छा संभव नहीं हो सकता है या नहीं, लेकिन आप शुरू से जानते हैं कि आपको किस तरह का परिणाम मिलेगा। आप को लागू एल्गोरिथ्म कुछ प्रोग्रामिंग भाषा के उपयोग एक (का एक हिस्सा) प्राप्त करने के लिए कार्यक्रम

अब, कुछ समस्याएं कठिन हैं और आप स्वीकार्य समय में एक स्वीकार्य समाधान प्राप्त करने में सक्षम नहीं हो सकते हैं। ऐसे मामलों में आप अक्सर बहुत अधिक बुरा समाधान नहीं पा सकते हैं, कुछ मनमाने विकल्प (शिक्षित अनुमान) लगाकर: यह एक अनुमान है

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

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

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


3
ह्यूरिस्टिक्स के लिए एक और सामान्य उपयोग वायरस का पता लगाने में है, जहां आपको यकीन नहीं हो सकता है कि कोई वायरस है, लेकिन आप वायरस के विशिष्ट प्रमुख गुणों की तलाश कर सकते हैं।
दाना होल्ट

वह सही है और प्रोग्राम को क्रैक करने के लिए
सड़क पर चलने वाले

1
@kriss, तो .. एक विधर्मी एल्गोरिथ्म का एक प्रकार है।
पचेरियर

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

33
  • एक एल्गोरिथ्म आमतौर पर नियतात्मक होता है और एक इष्टतम परिणाम देने के लिए सिद्ध होता है
  • एक अनुमान के पास शुद्धता का कोई सबूत नहीं है, अक्सर यादृच्छिक तत्व शामिल होते हैं, और इष्टतम परिणाम नहीं दे सकते हैं।

ऐसी कई समस्याएं जिनके लिए कोई इष्टतम एल्गोरिदम खोजने के लिए कोई कुशल एल्गोरिथ्म ज्ञात नहीं है, उनके पास दृष्टिकोण है जो कि इष्टतम परिणाम बहुत जल्दी प्राप्त करता है।

कुछ ओवरलैप्स हैं: "आनुवंशिक एल्गोरिदम" एक स्वीकृत शब्द है, लेकिन कड़ाई से बोलना, वे आंकड़े हैं, एल्गोरिदम नहीं।


2
मैं यह नहीं कहूंगा कि एक एल्गोरिथम एक इष्टतम परिणाम देने के लिए सिद्ध होता है: यह एल्गोरिथ्म पर निर्भर करता है कि किस समस्या के संबंध में है।
नबंबर

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

22

अनुमानी, संक्षेप में एक "शिक्षित अनुमान" है। विकिपीडिया इसे अच्छी तरह से समझाता है। अंत में, एक "सामान्य स्वीकृति" विधि निर्दिष्ट समस्या के लिए एक इष्टतम समाधान के रूप में ली गई है।

अनुभव आधारित तकनीक के लिए विशेषण एक विशेषण है जो समस्या को हल करने, सीखने और खोज में मदद करता है। एक हेयुरिस्टिक विधि का उपयोग तेजी से एक ऐसे समाधान के लिए किया जाता है, जो सबसे अच्छा संभव उत्तर, या 'इष्टतम समाधान' के करीब होने की उम्मीद है। Heuristics "अंगूठे के नियम", शिक्षित अनुमान, सहज निर्णय या बस सामान्य ज्ञान है। एक समस्या को हल करने का एक सामान्य तरीका एक अनुमानी है। संज्ञा के रूप में हेयुरिस्टिक्स, हेयुरिस्टिक विधियों का दूसरा नाम है।

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

जबकि एक एल्गोरिथ्म एक विधि है जिसमें एक समस्या को हल करने के लिए उपयोग किए जाने वाले निर्देशों का सीमित सेट होता है। समस्या के लिए काम करने के लिए विधि को गणितीय या वैज्ञानिक रूप से सिद्ध किया गया है। औपचारिक तरीके और प्रमाण हैं।

ह्यूरिस्टिक एल्गोरिथ्म एक एल्गोरिथ्म है जो एक सामान्य हेयुरिस्टिक के फैशन में, कई व्यावहारिक परिदृश्यों में एक समस्या का स्वीकार्य समाधान पैदा करने में सक्षम है, लेकिन जिसके लिए इसकी शुद्धता का कोई औपचारिक प्रमाण नहीं है।


8

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

एल्गोरिदम की कुछ श्रेणियां हैं, जिनमें से हेयोरिस्टिक एल्गोरिदम एक है। इस मामले में एल्गोरिथम के (सिद्ध) गुणों के आधार पर, यह इन तीन श्रेणियों (नोट 1) में से एक में आता है:

  • सटीक : समाधानइनपुट समस्या के लिएएक इष्टतम (या सटीक समाधान)साबितहोता है
  • अनुमान : समाधान मूल्य का विचलन कुछ पूर्व-निर्धारित बाउंड की तुलना में इष्टतम मूल्य से कभी भी दूर नहीं साबित होता है (उदाहरण के लिए, इष्टतम मान से 50% से अधिक बड़ा कभी नहीं)
  • हेयुरिस्टिक : एल्गोरिथ्म इष्टतम साबित नहीं हुआ है, और न ही इष्टतम समाधान के पूर्व-निर्धारित सीमा के भीतर

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

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

कंप्यूटर क्या कर सकते हैं पर प्रतिबंध के कारण, यह हमेशा संभव नहीं है कुशलता से खोजने के लिए सबसे अच्छा समाधान संभव। यदि किसी समस्या में पर्याप्त संरचना है, तो समाधान स्थान को पार करने के लिए एक कुशल तरीका हो सकता है, भले ही समाधान स्थान विशाल हो (यानी सबसे छोटी पथ समस्या में)।

खोज की दिशा को निर्देशित करने के लिए आमतौर पर एल्गोरिदम के रनिंग टाइम को बेहतर बनाने के लिए 'विशेषज्ञ जानकारी' या 'शिक्षित अनुमान' जोड़कर हेयुरिस्टिक्स लागू की जाती हैं। व्यवहार में, एक यकृत भी एक इष्टतम एल्गोरिथ्म के लिए एक उप-दिनचर्या हो सकता है, यह निर्धारित करने के लिए कि पहले कहाँ देखना है ।

(नोट 1) : इसके अलावा, एल्गोरिदम की विशेषता है कि क्या वे यादृच्छिक या गैर-नियतात्मक तत्व शामिल हैं। एक एल्गोरिथ्म जो हमेशा एक ही तरीके से क्रियान्वित होता है और एक ही उत्तर का उत्पादन करता है, को नियतात्मक कहा जाता है।

(नोट 2) : इसे पी बनाम एनपी समस्या कहा जाता है, और जिन समस्याओं को एनपी-पूर्ण और एनपी-हार्ड के रूप में वर्गीकृत किया जाता है, उनमें 'कुशल' एल्गोरिथ्म होने की संभावना नहीं है। ध्यान दें; जैसा कि @Kriss ने टिप्पणियों में उल्लेख किया है, वहाँ भी 'बदतर' प्रकार की समस्याएं हैं, जिन्हें गणना करने के लिए घातीय समय या स्थान की आवश्यकता हो सकती है।

ऐसे कई उत्तर हैं जो प्रश्न का उत्तर देते हैं। मैंने उन्हें कम पूर्ण और पर्याप्त सटीक नहीं समझा, और @ क्रिस द्वारा किए गए स्वीकृत उत्तर को संपादित नहीं करने का निर्णय लिया


मेरा मानना ​​है कि एल्गोरिथ्म शब्द की आपकी परिभाषा बहुत अधिक प्रतिबंधात्मक है। क्या अनुक्रम शब्द का उपयोग गैर- समानार्थक है ? पैरेलल एल्गोरिदम ठीक हैं और यहां तक ​​कि हमेशा की तरह अब भी। तंत्रिका नेटवर्क का उपयोग करके किसी समस्या को हल करने के बारे में क्या? या एक बाधा प्रसार उपकरण? एल्गोरिदम? मेटा-एल्गोरिदम?
क्रिश

पाठक को लग रहा है कि एनपी की समस्याएं और भी बदतर हैं। वह असत्य है। सही मायने में कठिन समस्याएं हैं जिन्हें सही मायने में खराब एल्गोरिदम की जरूरत है जैसे घातीय या खराब। एनपी विशेष है क्योंकि अगर हमारे पास इसका समाधान है तो इसे जांचना आसान और तेज़ है, जबकि अगर हमारे पास पहले से ही नहीं है तो इसे खोजना बहुत कठिन है। यह जांचना आसान है कि हमारे पास एक भूलभुलैया से बाहर निकलने के लिए सही निर्देश हैं, बाहर निकलने के लिए बहुत कठिन है। इस प्रकार एनपी आसान और कठिन दोनों हैं यदि हम एक ही समय में सभी संभव समाधानों की कोशिश कर सकते हैं (गैर-नियतात्मक रूप से) इसे हल करना बहुत सरल होगा ... लेकिन हम नहीं कर सकते।
क्रिस्स

प्रतिक्रिया के लिए धन्यवाद! मैंने वाक्यांश को थोड़ा अद्यतन किया है, और इसे अलग तरीके से देखा है। मेरे विचार में, बाधा का प्रसार कुछ दृष्टिकोण करने की एक तकनीक है, लेकिन अभी तक एक एल्गोरिथ्म नहीं है जो बताता है कि कैसे बाधा के समाधान में वर्णित समाधान के लिए चरण-वार किया जाता है। आप expspace और 'बदतर' की कक्षाओं के बारे में सही हैं, मैंने उस पर एक नोट भी जोड़ा है। बीटीडब्ल्यू: कृपया एनपी-कम्प्लीट और / या एनपी-हार्ड को पूरी तरह से लिखें, क्योंकि एनपी के सबसेट में भी 'कुशलतापूर्वक' सॉल्व करने योग्य समस्याएं होती हैं, जो एक ही क्लास में नहीं होती हैं।
जोस्ट

निश्चित रूप से आप सही हैं, मुझे एनपी-कम्प्लीट लिखना चाहिए था। मेरी गलती।
क्रिस्स

यह मेरे सहयोगियों में से एक के नाम से बेहतर है: एनपी-नेस (जो सिर्फ भयानक और थोड़े सकल लगता है ...)
जोस्ट

6

वास्तव में मुझे नहीं लगता कि उनके बीच बहुत कुछ है। कुछ एल्गोरिथ्म अपने तर्क में अनुमानों का उपयोग करते हैं (अक्सर कम गणना करने या तेज परिणाम प्राप्त करने के लिए)। आमतौर पर heuristics तथाकथित लालची एल्गोरिदम में उपयोग किया जाता है।

आंकड़े कुछ "ज्ञान" है जो हम मानते हैं कि हमारे एल्गोरिथ्म में सबसे अच्छा विकल्प प्राप्त करने के लिए उपयोग करना अच्छा है (जब एक विकल्प लिया जाना चाहिए)। उदाहरण के लिए ... शतरंज में एक उत्तराधिकार हो सकता है (हमेशा विरोधियों की रानी ले सकते हैं यदि आप कर सकते हैं, क्योंकि आप जानते हैं कि यह सबसे मजबूत है)। आंकड़े आपको गारंटी नहीं देते हैं कि आपको सही उत्तर तक ले जाएगा, लेकिन (यदि धारणा सही है) तो अक्सर जवाब मिलता है जो बहुत कम समय में सबसे अच्छा होता है।


4

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

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


4

एल्गोरिथ्म कुछ ऑपरेशनों का एक क्रम है जो एक इनपुट कुछ गणना करता है (एक फ़ंक्शन) और एक परिणाम आउटपुट करता है।

एल्गोरिथम एक सटीक या अनुमानित मान प्राप्त कर सकता है।

यह एक यादृच्छिक मूल्य की गणना भी कर सकता है जो सटीक मूल्य के करीब उच्च संभावना के साथ है।

एक हेयोरिस्टिक एल्गोरिथ्म इनपुट मूल्यों पर कुछ अंतर्दृष्टि का उपयोग करता है और सटीक मूल्य (लेकिन इष्टतम के करीब हो सकता है) की गणना करता है। कुछ विशेष मामलों में, हेयुरिस्टिक सटीक समाधान पा सकते हैं।


3

एक एल्गोरिथ्म एक समस्या को हल करने के लिए निर्देशों का स्पष्ट रूप से परिभाषित सेट है, समाधान तक पहुंचने के लिए हेयूरिस्टिक्स सीखने और खोज के दृष्टिकोण का उपयोग करना शामिल है।

इसलिए, यदि आप जानते हैं कि किसी समस्या को कैसे हल किया जाए तो एक एल्गोरिथ्म का उपयोग करें। यदि आपको कोई समाधान विकसित करने की आवश्यकता है तो यह उत्तराधिकार है।


2

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


2

मुझे लगता है कि हेयुरिस्टिक आर्टिफिशियल इंटेलिजेंस में लर्निंग बेस्ड मॉडल में इस्तेमाल की जाने वाली अड़चन है क्योंकि भविष्य के समाधान के राज्यों की भविष्यवाणी करना मुश्किल है।

लेकिन फिर उपरोक्त उत्तरों को पढ़ने के बाद मेरा संदेह यह है कि "स्टोकेस्टिक ऑप्टिमाइज़ेशन तकनीक का उपयोग करके हेयुरिस्टिक को सफलतापूर्वक कैसे लागू किया जा सकता है? या क्या स्टोकेस्टिक ऑप्टिमाइज़ेशन के साथ उपयोग किए जाने पर वे पूर्ण विकसित एल्गोरिदम के रूप में कार्य कर सकते हैं?"

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


उफ़ !! वर्तनी की गलती यह "आर्टिफिशियल इंटेलिजेंस" होनी चाहिए
A_tanA

2

मेरे द्वारा पढ़ी गई सर्वश्रेष्ठ व्याख्याओं में से एक महान पुस्तक कोड कम्प्लीट से आती है , जिसे अब मैं उद्धृत करता हूं:

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

यहां किसी के घर तक ड्राइविंग के लिए एक एल्गोरिथ्म है: राजमार्ग 167 को Puy-allup के दक्षिण में ले जाएं। दक्षिण हिल मॉल से बाहर निकलें और पहाड़ी से 4.5 मील की दूरी पर ड्राइव करें। किराने की दुकान द्वारा प्रकाश पर दाएं मुड़ें, और फिर पहले बाईं ओर ले जाएं। 714 उत्तर देवदार में बाईं ओर बड़े टैन हाउस के ड्राइववे में मुड़ें।

यहां किसी के घर जाने के लिए एक अनुमान है: अंतिम पत्र जिसे हमने आपको मेल किया था, उसे ढूंढें। वापसी पते में शहर के लिए ड्राइव। जब आप शहर जाते हैं, तो किसी से पूछें कि हमारा घर कहां है। हर कोई हमें जानता है - कोई आपकी मदद करने में प्रसन्न होगा। यदि आप किसी को नहीं ढूंढ सकते हैं, तो हमें एक सार्वजनिक फोन से कॉल करें, और हम आपको प्राप्त करेंगे।

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


यह कहना कि एक एल्गोरिथ्म और हेयुरिस्टिक के बीच अंतर मौजूद है, यह बताते हुए कि पक्षी और मुर्गी में अंतर है। Heuristics एक प्रकार का एल्गोरिथ्म है।
जोस

0

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

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