13

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

लेकिन परीक्षकों ने पूछा कि इसमें भाग जीतने के लिए, जहां मैं जवाब देने में असमर्थ था। उन्होंने यह भी अस्वीकार कर दिया कि यह वास्तव में एक विभाजन था और एल्गोरिदम जीत गया था।

लेकिन हर जगह मैं वेब पर जाता हूं, यह कहता है कि यह है, इसलिए मैं जानना चाहता हूं कि क्यों और कहां जीतने का हिस्सा है?

+4

जीत भाग वह जगह है जहां आप समस्या का समाधान करते हैं। मुझे यकीन नहीं है कि उन्होंने क्यों कहा कि यह विभाजन और जीत नहीं था। ये चीजें हैं जिन्हें आप अपने परीक्षकों से पूछना सुनिश्चित कर सकते हैं! वे केवल वे हैं जो वे जो जवाब ढूंढ रहे थे उसे जानते हैं। –

+0

ठीक है, आप केवल एक आधे में खोजते हैं। तो हाँ, आप समस्या को विभाजित करते हैं। लेकिन नहीं, आप दोनों हिस्सों को जीत नहीं पाते हैं, केवल एक (कम से कम जब आप स्मार्ट होते हैं .-)) –

+0

क्या यह घटता है और जीतता है? विकिपीडिया से उद्धरण यहां दिया गया है। "सिंगल-सबप्रोबलेम क्लास के लिए नाम कम हो गया है और जीत का प्रस्ताव दिया गया है" http://en.wikipedia.org/wiki/Divide_and_conquer_algorithms#Decrease_and_conquer – arun8

उत्तर

10

पुस्तक

Data Structures and Algorithm Analysis in Java, 2nd edtition, Mark Allen Weiss 

कहते हैं कि एक डी & सी एल्गोरिथ्म दो संबंध तोड़ना पुनरावर्ती कॉल होना चाहिए। मैं QuickSort की तरह। बाइनरी सर्च में यह नहीं है, भले ही इसे दोबारा लागू किया जा सके, इसलिए मुझे लगता है कि यह जवाब है।

+0

[यह उत्तर] (https://stackoverflow.com/a/46109411/4594973) आम के बारे में अधिक जानकारी भी जोड़ता है डीएनसी एल्गोरिदम के गुण, जो बाइनरी खोज वास्तव में नहीं है। – ray

2

विभाजन भाग निश्चित रूप से सेट को हिस्सों में विभाजित कर रहा है।

जीत भाग यह निर्धारित कर रहा है कि संसाधित भाग में कौन सी स्थिति एक खोजी गई तत्व है या नहीं।

+3

मैं असहमत हूं। यह एक विभाजन-केवल एल्गोरिदम है। एक छमाही पर कोई प्रसंस्करण नहीं हो रहा है। –

1

बाइनरी खोज विभाजित और जीत के साथ वर्णन करने में मुश्किल है क्योंकि विजय चरण स्पष्ट नहीं है। एल्गोरिदम का परिणाम घास के मैदान में सुई का सूचकांक है, और एक शुद्ध डी & सी कार्यान्वयन छोटे-छोटे घास के मैदान में सुई की अनुक्रमणिका लौटाएगा (0 एक-तत्व सूची में) और फिर बाद में ऑफसेट को जोड़ें बड़े घास के मैदान जो विभाजन के चरण में विभाजित थे।

स्यूडोकोड व्याख्या करने के लिए:

function binary_search has arguments needle and haystack and returns index 
    if haystack has size 1 
     return 0 
    else 
     divide haystack into upper and lower half 
     if needle is smaller than smallest element of upper half 
      return 0 + binary_search needle, lower half 
     else 
      return size of lower half + binary_search needle, upper half 

अलावा (0 + या size of lower half) को जीत हिस्सा है। अधिकतर लोग तर्कों के रूप में बड़ी सूची में इंडेक्स प्रदान करके इसे छोड़ देते हैं, और इस प्रकार यह अक्सर आसानी से उपलब्ध नहीं होता है।

8

मुझे लगता है कि विभाजित नहीं है और जीत, में पहले पैराग्राफ को देखने http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm

रिकर्सिवली दो या अधिक उप-समस्याओं जो फिर एक समाधान

देने के लिए जोड़ दिया जाता है में एक समस्या टूट

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

+0

"जीत == विलय" एक oversimplification है, लेकिन फिर भी: "आधे से डेटा को कम करने" उदाहरण के लिए हो सकता है "इस आधा के साथ इस आधे (0 परिणामों का एक सेट) विलय" के रूप में देखा गया। – Piskvor

+2

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

+1

... हालांकि मुझे लगता है कि यदि आप परिभाषित करते हैं कि "जीत" को दो गैर-तुच्छ समाधानों के साथ गैर-तुच्छ काम करना चाहिए, तो परिभाषा के अनुसार एक डी एंड सी एल्गोरिदम अकेले-पुनरावर्ती नहीं है और पूंछ नहीं है। वे महत्वपूर्ण गुण हैं, और मुझे लगता है कि उदाहरण के लिए एक डी एंड सी एल्गोरिदम ओ (1) अतिरिक्त स्थान से अधिक का उपयोग करता है। –

0

अनौपचारिक परिभाषा कम या कम है: समस्या को छोटी समस्याओं में विभाजित करें। फिर उन्हें हल करें और उन्हें एक साथ रखें (जीतें)। हल करना वास्तव में निर्णय ले रहा है कि अगला कहां जाना है (बाएं, दाएं, तत्व मिला)।

यहाँ wikipedia से एक उद्धरण:

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

यह कहा गया है, यह है नहीं [अद्यतन: इस वाक्यांश :) पढ़ने में भूलना] केवल एक विभाजन का हिस्सा है और जीत।

अद्यतन: This लेख यह मेरे लिए स्पष्ट कर दिया। परिभाषा कहती है कि आपको हर उप समस्या को हल करना है क्योंकि मैं उलझन में था। लेकिन यदि आप जानते हैं कि आपको खोज जारी रखने की आवश्यकता नहीं है तो आपने उप समस्या हल की है ..

+0

http://en.wikipedia.org/wiki/Binary_search_algorithm। यह कहता है: एक द्विआधारी खोज एक डिकोटॉमिक विभाजन है और खोज एल्गोरिदम जीतती है। – Kenci

+0

इसके अलावा, क्विकस्टोर्ट जगह-जगह पर काम करता है, इसलिए यह वास्तव में वापस नहीं जाता है और सभी पहेली को एक साथ रखता है। – Kenci

+1

@ केन्सी: विकिपीडिया खुद को वहां पर विरोधाभास करता है। "बाइनरी सर्च एल्गोरिदम" पृष्ठ कहता है कि यह डी एंड सी है, जबकि डी और सी पृष्ठ आपके उद्धरण लिंक से कहता है कि परिभाषा के अनुसार डी एंड सी में * एकाधिक * रिकर्सन शामिल है, जो बाइनरी खोज नहीं करता है। हजारों असंगत संपादकों का उपयोग करने के लिए आपको यही मिलता है, आपके परीक्षक उन सभी के साथ सहमत नहीं होंगे ;-) –

2

जाहिर है कुछ लोगों को बाइनरी खोज एक विभाजन और जीत एल्गोरिथ्म पर विचार, और कुछ नहीं हैं। मैं जल्दी से तीन संदर्भ googled (सभी शिक्षा से संबंधित तो लग) है कि यह एक डी & सी एल्गोरिथ्म फोन: http://www.cs.berkeley.edu/~vazirani/algorithms/chap2.pdf http://homepages.ius.edu/rwisman/C455/html/notes/Chapter2/DivConq.htm http://www.csc.liv.ac.uk/~ped/teachadmin/algor/d_and_c.html

मुझे लगता है कि यह आम सहमति है कि एक डी & सी एल्गोरिथ्म कम से कम पहले दो चरणों होना चाहिए इन तीन में से:

  • विभाजन, यानी यह तय कर लें पूरी समस्या उप समस्याओं में अलग किया जाता है;
  • जीत है, यानी स्वतंत्र रूप से उप-समस्याओं में से प्रत्येक को हल;
  • [वैकल्पिक] गठबंधन है, यानी एक साथ मर्ज स्वतंत्र संगणना का परिणाम है।

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

तीसरे चरण हो सकता है नो-सेशन, और मेरी राय में यह डी & सी एक सामान्य उदाहरण के रूप में एक एल्गोरिथ्म को अयोग्य घोषित नहीं करता है एक for -loop स्वतंत्र डेटा आइटम के साथ विशुद्ध रूप से कार्य कर रहे सभी पुनरावृत्तियों के साथ की पुनरावर्ती अपघटन (है यानी किसी भी रूप में कोई कमी नहीं)। यह नज़र में बेकार लग सकता है, लेकिन वास्तव में यह बहुत शक्तिशाली तरीका है उदा। समानांतर में लूप निष्पादित करें, और सिल्क और इंटेल के टीबीबी के रूप में इस तरह के ढांचे द्वारा उपयोग किया जाता है।

int search(int value, int* a, int begin, int end) { 
    // end is one past the last element, i.e. [begin, end) is a half-open interval. 
    if (begin < end) 
    { 
    int m = (begin+end)/2; 
    if (value==a[m]) 
     return m; 
    else if (value<a[m]) 
     return search(value, a, begin, m); 
    else 
     return search(value, a, m+1, end); 
    } 
    else // begin>=end, i.e. no valid array to search 
    return -1; 
} 

यहाँ डिवाइड हिस्सा int m = (begin+end)/2; और है:;:

मूल प्रश्न पर वापस लौटते हुए (खेद है इस भाषा आप के साथ सहज हैं नहीं है मैं सी का उपयोग ++) के कुछ कोड है कि एल्गोरिथ्म को लागू करता है पर विचार करते हैं बाकी सब जीतने का हिस्सा है। एल्गोरिदम स्पष्ट रूप से एक रिकर्सिव डी & सी रूप में लिखा गया है, भले ही शाखाओं में से केवल एक ही लिया गया हो। हालांकि, यह भी एक पाश रूप में लिखा जा सकता है:

int search(int value, int* a, int size) { 
    int begin=0, end=size; 
    while(begin<end) { 
    int m = (begin+end)/2; 
    if (value==a[m]) 
     return m; 
    else if (value<a[m]) 
     end = m; 
    else 
     begin = m+1; 
    } 
    return -1; 
} 

मुझे लगता है कि यह काफी एक आम तरीका है एक पाश के साथ द्विआधारी खोज को लागू करने के है; मैंने जानबूझकर वही वैरिएबल नामों को रिकर्सिव उदाहरण के रूप में उपयोग किया, ताकि समानता को देखना आसान हो। इसलिए हम कह सकते हैं कि, फिर, मध्यबिंदु की गणना करना विभाजन भाग है, और शेष लूप बॉडी भाग जीतने वाला है।

लेकिन निश्चित रूप से अगर आपके परीक्षकों अलग तरह से सोचने, यह उन्हें समझाने के लिए यह विकास & है सी मुश्किल हो सकता है

अद्यतन: सिर्फ एक विचार है कि अगर मैं एक डी & सी एल्गोरिथ्म के एक सामान्य कंकाल कार्यान्वयन विकसित करने के लिए थे, मैं निश्चित रूप से द्विआधारी खोज एपीआई उपयुक्तता परीक्षणों में से एक के रूप में है कि क्या एपीआई पर्याप्त शक्तिशाली करते हुए भी संक्षिप्त है की जाँच करने के लिए उपयोग होता था । बेशक यह कुछ भी साबित नहीं करता है :)

+0

वीस के बारे में आप क्या सोचते हैं कि पारंपरिक डी एंड सी एल्गोरिदम को दो अपमानजनक रिकर्सन की आवश्यकता है? – Kenci

+0

ठीक है, क्योंकि डी एंड सी एल्गोरिदम की धारणा बल्कि अनौपचारिक है (कम से कम मुझे एक सामान्य रूप से स्वीकार्य औपचारिक परिभाषा के बारे में पता नहीं है), व्याख्या के लिए जगह है, और इसलिए वीस उस तरीके की व्याख्या करने के अपने अधिकार में है। –

+0

मैं कहूंगा कि कभी भी दूसरी छमाही के बिना विजय प्राप्त करना --- क्योंकि आप जानते हैं कि उत्तर वहां नहीं हो सकता --- विजय के लिए अंतिम है। – Raphael

1

उचित विभाजित और एल्गोरिदम को जीतने के लिए दोनों भागों को संसाधित करने की आवश्यकता होगी।

इसलिए, कई लोगों को नहीं कॉल एक विभाजन बाइनरी-खोज और कलन विधि को जीत जाएगा, यह डिवाइड समस्या है, लेकिन अन्य आधा छोड़ देता है।

लेकिन सबसे अधिक संभावना है कि आपके परीक्षक सिर्फ यह देखना चाहते थे कि आप कैसे तर्क देते हैं। (अच्छी) परीक्षा तथ्यों के बारे में नहीं है, लेकिन जब चुनौती मूल सामग्री से परे हो जाती है तो आप कैसे प्रतिक्रिया करते हैं।

तो IMHO उचित जवाब हो गया होता:

ठीक है, तकनीकी रूप से, यह केवल एक विभाजन कदम के होते हैं, लेकिन फिर मूल कार्य का केवल आधा जीत के लिए की जरूरत है, दूसरे आधे तुच्छता से पहले से ही किया जाता है ।

Btw: वहाँ quicksort का एक अच्छा बदलाव है, QuickSelect कहा जाता है, जो वास्तव में औसत O(n) मंझला खोज एल्गोरिथ्म पर एक प्राप्त करने के लिए इस अंतर का शोषण करने वाली है। यह quicksort की तरह है - लेकिन केवल आधा यह में रुचि रखता है में उतरता है

0

द्विआधारी खोज एक फूट डालो और जीत एल्गोरिथ्म है:।

1) फूट डालो और राज एल्गोरिदम में, हम एक को हल करके एक समस्या को हल करने का प्रयास करें छोटी उप समस्या (भाग विभाजित करें) और हमारी बड़ी समस्या (जीत) के लिए समाधान बनाने के लिए समाधान का उपयोग करें।

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

3) इस तरह हम पुन: कार्य करते हैं।

4) को जीत हिस्सा यहाँ सिर्फ शीर्ष पुनरावर्ती पेड़ कंप्यूटर विज्ञान में

0

Dichotomic दो विरोधात्मक विकल्पों के बीच चयन करते समय, दो अलग-अलग विकल्प के बीच को संदर्भित करता है के लिए उप समस्या से दिए गए मान लौटा रहा है। एक डिकोटॉमी पूरी तरह से दो गैर-ओवरलैपिंग भागों में विभाजित होता है, जिसका अर्थ है कि यह एक प्रक्रिया है जिसमें एक पूरे दो भागों में बांटा गया है। यह एक पूरे (या एक सेट) का एक विभाजन है जो दो हिस्सों (सबसेट) में है: 1. संयुक्त रूप से संपूर्ण: सब कुछ एक भाग या दूसरे से संबंधित होना चाहिए, और 2. परस्पर अनन्य: दोनों के साथ कुछ भी संबंधित नहीं हो सकता भागों।

एक ही प्रकार की दो या दो से अधिक उप-समस्याओं में एक समस्या को फिर से तोड़कर कामों को विभाजित और जीतें, जब तक कि ये सीधे हल करने के लिए पर्याप्त सरल न हों।

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

0

मुझे लगता है कि यह घट गया है और जीत है।

यहां विकिपीडिया से उद्धरण दिया गया है।

http://en.wikipedia.org/wiki/Divide_and_conquer_algorithms#Decrease_and_conquer

"नाम कमी और जीत एकल subproblem वर्ग के लिए बजाय प्रस्तावित किया गया है," मेरी समझ के अनुसार, "जीत" हिस्सा अंत में है जब आपको बाइनरी खोज का लक्ष्य तत्व मिलता है। "घटाना" भाग खोज स्थान को कम कर रहा है।

0

बाइनरी सर्च और टर्नरी सर्च एल्गोरिदम तकनीक को कम करने और जीतने पर आधारित हैं। क्योंकि, आप समस्या को विभाजित नहीं करते हैं, आप वास्तव में 2 (3 में तीसरी खोज में) विभाजित करके समस्या को कम करते हैं।

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

0

नहीं, बाइनरी खोज विभाजित नहीं है और जीत नहीं है। हां, बाइनरी खोज कम हो जाती है और जीत जाती है। मेरा मानना ​​है कि एल्गोरिदम को विभाजित करना और जीतना ओ (एन लॉग (एन)) की दक्षता है जबकि एल्गोरिदम को कम करना और जीतना ओ (लॉग (एन)) की दक्षता है। अंतर यह है कि आपको डेटा में विभाजन के दोनों हिस्सों का मूल्यांकन करने की आवश्यकता है या नहीं।

+0

मैंने कुछ पोस्ट टेक्स्ट को हटाने के लिए अपनी पोस्ट संपादित की है। यदि आप अभी भी साझा करना चाहते हैं तो आप जो भी हटाते हैं उसके साथ आप अपने उत्तर पर टिप्पणी कर सकते हैं। धन्यवाद! – CubeJockey

0

फूट डालो और राज एल्गोरिथ्म चरण 3 पर इस प्रकार आधारित है:

  1. फूट डालो
  2. जीतना
  3. कम्बाइन

बाइनरी खोजें समस्या क्रमबद्ध सरणी में एक्स खोजने के रूप में परिभाषित किया जा सकता है एक [n]। इस जानकारी के अनुसार:

  1. फूट डालो: तुलना एक्स बीच
  2. जीत के साथ: एक उप सरणी में recurse। (इस सरणी में एक्स ढूँढना)
  3. संयोजन: यह आवश्यक नहीं है।
3

एक फूट डालो और जीत की रणनीति में:

1.Problem भागों में विभाजित है;

2. हाथों में एल्गोरिदम लागू करके इन हिस्सों में से प्रत्येक को स्वतंत्र रूप से हमला/हल किया जाता है (ज्यादातर इस उद्देश्य के लिए रिकर्सन का उपयोग किया जाता है);

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

उदाहरण के लिए, त्वरित तरह, विलय तरह।

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

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

संक्षेप में, द्विआधारी खोज हिस्सों में समस्या (यह काम करने के लिए है, जिस पर) के आकार बिताते हैं लेकिन बिट और टुकड़ों में समाधान और इसलिए विलय समाधान होता है की कोई जरूरत नहीं नहीं मिल रहा है!

मैं जानता हूँ कि यह थोड़ा बहुत लंबा है, लेकिन मैं इसे मदद करता है :)

इसके अलावा, आप से कुछ विचार प्राप्त कर सकते आशा: https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/running-time-of-binary-search

इसके अलावा मैं अभी-अभी है कि इस सवाल का बहुत पहले पोस्ट किया गया था एहसास हुआ! मेरा बुरा!

1

@Kenci's post के अलावा, DnC एल्गोरिदम कुछ सामान्य/सामान्य गुण होते हैं; वे:

  1. डिवाइड के ही छोटे उप उदाहरणों में से एक सेट में मूल समस्या उदाहरण;
  2. स्वतंत्र रूप से प्रत्येक उप उदाहरण का समाधान;
  3. बड़े/मूल उदाहरण

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

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

पुस्तक एल्गोरिदमिक्स की बुनियादी बातों, जी। ब्रासार्ड, पी।Bratley निम्नलिखित (बोल्ड मेरा जोर, मूल में इटैलिक) का कहना है:

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

धारा 7.3 बाइनरी खोजेंp.226 पर।

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