शाखा और बंधन: Difference between revisions
(Created page with "{{Short description|Optimization by eliminating non optimal solutions to sub-problems}} ब्रांच और बाउंड (BB, B&B, या BnB) अनुकूलन...") |
No edit summary |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Optimization by eliminating non optimal solutions to sub-problems}} | {{Short description|Optimization by eliminating non optimal solutions to sub-problems}} | ||
'''शाखा और बंधन''' (BB, B&B, या BnB) अनुकूलन समस्याओं को छोटी उप-समस्याओं में तोड़कर और उप-समस्याओं को पूर्ण रूप से खत्म करने के लिए बाउंडिंग फ़ंक्शन का उपयोग करके हल करने की उपयुक्त विधि है जिसमें इष्टतम समाधान नहीं हो सकते हैं। यह इस प्रकार [[असतत अनुकूलन]] और संयोजी अनुकूलन समस्याओं के साथ-साथ [[गणितीय अनुकूलन]] के लिए [[ कलन विधि ]] [[एल्गोरिथम प्रतिमान]] का उपयोग करती हैं। इस प्रकार शाखा और बंधन एल्गोरिथ्म में [[राज्य अंतरिक्ष खोज|स्थितियों के आधार पर अंतरिक्ष खोज]] के माध्यम से किसी उपयोगकर्ता के समाधानों की व्यवस्थित गणना करने में सहायक होता है: उपयोगकर्ता समाधानों के सेट को रूट पर पूर्ण सेट के साथ ट्री (ग्राफ़ सिद्धांत) बनाने के रूप में माना जाता है। इस प्रकार इस एल्गोरिद्म को किसी ट्री की ''शाखाओं'' की जाँच करने के लिए सहायता करता है, जो इस प्रकार समाधान सेट के सबसेट का प्रतिनिधित्व करती है। इन शाखाओं के उपयोगकर्ता समाधानों की गणना करने से पहले किसी शाखा को इष्टतम समाधान पर ऊपरी और निचले अनुमानित ''सीमा'' के विरुद्ध जाँच करते हैं, और यदि यह एल्गोरिथम द्वारा अब तक मिले सबसे अच्छे समाधान से उत्तम समाधान नहीं दे पाता है तो उसे छोड़ दिया जाता है। | |||
एल्गोरिथ्म खोज स्थान के क्षेत्रों/शाखाओं की निचली और ऊपरी सीमा के कुशल आकलन पर निर्भर करता है। यदि कोई सीमा उपलब्ध नहीं है, तो एल्गोरिथम | एल्गोरिथ्म खोज स्थान के क्षेत्रों/शाखाओं की निचली और ऊपरी सीमा के कुशल आकलन पर निर्भर करता है। यदि कोई सीमा उपलब्ध नहीं है, तो एल्गोरिथम संपूर्ण खोज के लिए पतित हो जाता है। | ||
1960 में असतत अनुकूलन के लिए [[BP]] द्वारा प्रायोजित [[लंदन स्कूल ऑफ इकोनॉमिक्स]] में शोध करते समय पहली बार [[Ailsa Land]] और [[Alison Harcourt]] द्वारा विधि प्रस्तावित की गई थी।<ref name=land_doig>{{cite news |author = A. H. Land and A. G. Doig | year = 1960 | title = असतत प्रोग्रामिंग समस्याओं के हल के लिए एक स्वचालित विधि| journal = Econometrica | volume = 28 | issue = 3 | pages = 497–520 | doi=10.2307/1910129}}</ref><ref>{{Cite web|url=http://www.lse.ac.uk/newsletters/pressAndInformation/staffNews/2010/20100218.htm|title=स्टाफ न्यूज|website=www.lse.ac.uk|access-date=2018-10-08|archive-date=2021-02-24|archive-url=https://web.archive.org/web/20210224173541/https://www.lse.ac.uk/newsletters/pressAndInformation/staffNews/2010/20100218.htm|url-status=dead}}</ref> | 1960 में असतत अनुकूलन के लिए [[BP]] द्वारा प्रायोजित [[लंदन स्कूल ऑफ इकोनॉमिक्स]] में शोध करते समय पहली बार [[Ailsa Land|ऐल्सा प्रांत]] और [[Alison Harcourt|एलीसन हारर्कोट]] द्वारा विधि प्रस्तावित की गई थी।<ref name=land_doig>{{cite news |author = A. H. Land and A. G. Doig | year = 1960 | title = असतत प्रोग्रामिंग समस्याओं के हल के लिए एक स्वचालित विधि| journal = Econometrica | volume = 28 | issue = 3 | pages = 497–520 | doi=10.2307/1910129}}</ref><ref>{{Cite web|url=http://www.lse.ac.uk/newsletters/pressAndInformation/staffNews/2010/20100218.htm|title=स्टाफ न्यूज|website=www.lse.ac.uk|access-date=2018-10-08|archive-date=2021-02-24|archive-url=https://web.archive.org/web/20210224173541/https://www.lse.ac.uk/newsletters/pressAndInformation/staffNews/2010/20100218.htm|url-status=dead}}</ref> इस प्रकार इस कारण [[ एनपी कठिन ]]अनुकूलन समस्याओं को हल करने के लिए सबसे अधिक उपयोग किया जाने वाला उपकरण बन गया है।<ref name="clausen99"/> इस प्रकार इस शाखा और बंधन के नाम में सबसे पहले लिटिल एट अल के कार्य में आया हैं। जिसकी यात्रा विक्रेता की समस्याओं पर निर्भर होती हैं।<ref name="little"/><ref>{{cite report |last1=Balas |first1=Egon |first2=Paolo |last2=Toth |year=1983 |title=ट्रैवलिंग सेल्समैन समस्या के लिए ब्रांच और बाउंड तरीके|issue=Management Science Research Report MSRR-488 |publisher=[[Carnegie Mellon University]] Graduate School of Industrial Administration |url=http://apps.dtic.mil/dtic/tr/fulltext/u2/a126957.pdf |url-status=live |archive-url=https://web.archive.org/web/20121020235044/http://www.dtic.mil/dtic/tr/fulltext/u2/a126957.pdf |archive-date=October 20, 2012}}</ref> | ||
== अवलोकन == | |||
ब्रांचिंग और बाउंडिंग एल्गोरिथम का लक्ष्य {{mvar|x}} मान को खोजना है, जो वास्तविक मूल्यवान फ़ंक्शन {{math|''f''(''x'')}} के मान को अधिकतम या कम करता है, कुछ सेट के बीच {{mvar|S}} स्वीकार्य, या [[उम्मीदवार समाधान|उपयोगकर्ता समाधान]] को ऑब्जेक्टिव फ़ंक्शन कहा जाता है। इस प्रकार सेट {{mvar|S}} को खोजे गए स्थान या व्यवहार्य क्षेत्र कहा जाता है। इस प्रकार इस खंड के बचे हुए भागों के रूप में माना जाता है कि कम से कम {{math|''f''(''x'')}} वांछित है, इस प्रकार यह धारणा [[व्यापकता के नुकसान के बिना|व्यापकता के हानि के बिना]] आती है, क्योंकि कोई अधिकतम मूल्य {{math|''f''(''x'')}} का न्यूनतम ज्ञात करके {{math|''g''(''x'') {{=}} −''f''(''x'')}} पा सकता है, इस प्रकार बी एंड बी एल्गोरिदम दो सिद्धांतों के अनुसार कार्य करता है: | |||
* यह पुनरावर्ती रूप से खोज स्थान को छोटे स्थानों में विभाजित करता है, फिर {{math|''f''(''x'')}} इन छोटे स्थानों पर छोटा करता है, इस प्रकार इसके विभाजन को ब्रांचिंग कहा जाता है। | |||
* अकेले ब्रांचिंग [[ क्रूर-बल खोज ]] या ब्रूट-फोर्स एन्यूमरेशन ऑफ़ कैंडिडेट सॉल्यूशंस और उन सभी का परीक्षण करने की राशि के रूप में उपयोग होती हैं। इस प्रकार ब्रूट-फोर्स सर्च के प्रदर्शन में सुधार करने के लिए, B&B एल्गोरिद्म कम से कम सीमा का ट्रैक रखता है जिसे वह खोजने का प्रयास करता है, और इस प्रकार इन सीमाओं का उपयोग खोज स्थान का निर्णय ट्री के रूप में प्रदर्शित करने के लिए करता है, इस प्रकार उपयोगकर्ता समाधानों को समाप्त करता है जो यह साबित कर सकता है इष्टतम समाधान सम्मिलित नहीं रहता है। | |||
विशिष्ट अनुकूलन समस्या के लिए इन सिद्धांतों को ठोस एल्गोरिदम में परिवर्तित करने के लिए कुछ प्रकार की [[डेटा संरचना]] की आवश्यकता होती है जो उपयोगकर्ता समाधान के सेट का प्रतिनिधित्व करती है। इस प्रकार के प्रतिनिधित्व को समस्या का उदाहरण कहा जाता है। इस प्रकार उदाहरण के लिए उपयोगकर्ता समाधान के सेट को {{mvar|I}} द्वारा {{mvar|S<sub>I</sub>}} निरूपित करते हैं। इसके उदाहरण के लिए प्रतिनिधित्व को तीन परिचालनों के साथ प्रदर्शित कर सकते हैं: | |||
* | * {{math|branch(''I'')}} - दो या दो से अधिक उदाहरण उत्पन्न करता है जिनमें से प्रत्येक सबसेट {{mvar|S<sub>I</sub>}} का प्रतिनिधित्व करता है। (सामान्यतः उपसमुच्चय असम्बद्ध सेट होते हैं जो एल्गोरिदम को ही उपयोगकर्ता समाधान पर दो बार जाने से रोकते हैं, लेकिन इसकी आवश्यकता नहीं है। चूंकि इस प्रकार बीच में इष्टतम समाधान {{mvar|S<sub>I</sub>}} कम से कम सबसेट में सम्मिलित होना चाहिए।<ref name="bader">{{cite encyclopedia |first1=David A. |last1=Bader |first2=William E. |last2=Hart |first3=Cynthia A. |last3=Phillips |author3-link=Cynthia A. Phillips |title=शाखा और बाउंड के लिए समानांतर एल्गोरिथम डिज़ाइन|editor-first=H. J. |editor-last=Greenberg |encyclopedia=Tutorials on Emerging Methodologies and Applications in Operations Research |publisher=Kluwer Academic Press |year=2004 |url=http://www.cc.gatech.edu/~bader/papers/ParallelBranchBound.pdf |access-date=2015-09-16 |archive-url=https://web.archive.org/web/20170813145917/http://www.cc.gatech.edu/~bader/papers/ParallelBranchBound.pdf |archive-date=2017-08-13 |url-status=dead }}</ref>) | ||
* | * {{math|bound(''I'')}} द्वारा दर्शाए गए स्थान में किसी भी उपयोगकर्ता समाधान के मूल्य पर निचली सीमा {{mvar|I}} की गणना करता है, इस प्रकार इसका मान {{math|bound(''I'') ≤ ''f''(''x'')}} सभी के लिए {{mvar|x}} में {{mvar|S<sub>I</sub>}}. के समान हैं। | ||
* {{math|solution(''I'')}} निर्धारित करता है कि क्या {{mvar|I}} एकल उपयोगकर्ता समाधान का प्रतिनिधित्व करता है। (इस प्रकार वैकल्पिक रूप से, यदि ऐसा नहीं होता है, तो {{mvar|S<sub>I</sub>}} ऑपरेशन बीच में से कुछ व्यवहार्य समाधान वापस करने का विकल्प चुन सकता है.{{r|bader}}) यदि {{math|solution(''I'')}} तब फंक्शन {{math|''f''(solution(''I''))}} लौटाता है, इस प्रकार इसके व्यवहार्य समाधानों के पूरे स्थान पर इष्टतम उद्देश्य मान के लिए ऊपरी सीमा प्रदान करता है। | |||
इन परिचालनों का उपयोग करते हुए, बी एंड बी एल्गोरिदम शाखा संचालन द्वारा गठित उदाहरणों के [[खोज पेड़|ट्री सर्चिंग]] के माध्यम से शीर्ष-नीचे पुनरावर्ती खोज करता है। उदाहरण पर जाने पर {{mvar|I}}, यह जांचता है कि क्या {{math|bound(''I'')}} वर्तमान ऊपरी सीमा के बराबर या उससे अधिक है; यदि ऐसा है तो, {{mvar|I}} को खोज से सुरक्षित रूप से हटाया जा सकता है और इस प्रकार पुनरावर्तन बंद हो जाता है। इस प्रकार यह सार्टिंग सामान्यतः वैश्विक वैरियेबल को बनाए रखने के द्वारा कार्यान्वित किया जाता है जो कि अब तक की जांच की गई सभी उदाहरणों में देखी गई न्यूनतम ऊपरी सीमा को रिकॉर्ड करता है। | |||
इन परिचालनों का उपयोग करते हुए, | |||
=== सामान्य संस्करण === | === सामान्य संस्करण === | ||
निम्नलिखित | निम्नलिखित सामान्य शाखा का प्रारूप है और इस विधि से इस फंक्शन को कम करने के लिए bound एल्गोरिदम {{mvar|f}} है।<ref name="clausen99">{{cite techreport |first=Jens |last=Clausen |title=Branch and Bound Algorithms—Principles and Examples |year=1999 |publisher=[[University of Copenhagen]] |url=http://www.diku.dk/OLD/undervisning/2003e/datV-optimer/JensClausenNoter.pdf |access-date=2014-08-13 |archive-url=https://web.archive.org/web/20150923214803/http://www.diku.dk/OLD/undervisning/2003e/datV-optimer/JensClausenNoter.pdf |archive-date=2015-09-23 |url-status=dead }}</ref> इससे वास्तविक एल्गोरिथम प्राप्त करने के लिए, बाउंडिंग फ़ंक्शन की आवश्यकता होती है {{math|bound}}, जो निम्न सीमा की गणना करता है {{mvar|f}} सर्च ट्री के नोड्स पर, साथ ही समस्या-विशिष्ट ब्रांचिंग नियम का उपयोग किया जाता हैं जैसे, यहाँ इस प्रकार सामान्य एल्गोरिथ्म उच्च-क्रम का कार्य प्रस्तुत करती हैं। | ||
# इस प्रकार [[अनुमानी]] का उपयोग करके समाधान {{mvar|x<sub>h</sub>}} की अनुकूलन समस्या को सर्च करने के लिए किया जाता हैं। इसका मूल्य संग्रहीत करें, {{math|''B'' {{=}} ''f''(''x<sub>h</sub>'')}}. (यदि कोई अनुमानी मान उपलब्ध नहीं है, तो इस प्रकार {{mvar|B}} अनंत की ओर सेट करते हैं।) इस प्रकार {{mvar|B}} अब तक मिले सर्वोत्तम समाधान को दर्शाएगा, और उपयोगकर्ता समाधानों पर ऊपरी सीमा के रूप में उपयोग किया जाएगा। | |||
# इस प्रकार असाइन की गई समस्या के किसी भी चर के साथ आंशिक समाधान रखने के लिए क्रम आरंभ करते हैं। | |||
# यह क्रम रिक्त होने तक लूप चलता रहता हैं: | |||
## इस प्रकार एक नोड लें {{mvar|N}} क्रम से बाहर रखते हैं। | |||
## यदि {{mvar|N}} एकल उपयोगकर्ता समाधान का प्रतिनिधित्व करता है {{mvar|x}} और {{math|''f''(''x'') < ''B''}}, तब {{mvar|x}} अब तक का सबसे अच्छा समाधान है। इसे रिकॉर्ड करें और सेट करें {{math|''B'' ← ''f''(''x'')}}. | |||
## इसके अतिरिक्त आगे बढ़ने पर {{mvar|N}} नए नोड बनाने के लिए {{mvar|N<sub>i</sub>}} इनमें से प्रत्येक के लिए: | |||
### यदि {{math|bound(''N<sub>i</sub>'') > ''B''}}, कुछ भी नहीं है, चूंकि इस प्रकार इस नोड पर निचली सीमा समस्या की ऊपरी सीमा से अधिक है, इसलिए यह कभी भी इष्टतम समाधान की ओर नहीं ले जाएगी, और इसे त्याग दिया जा सकता है। | |||
### इसके अतिरिक्त {{mvar|N<sub>i</sub>}} क्रम में स्टोर करें। | |||
कई अलग-अलग [[कतार (सार डेटा प्रकार)|क्रम (सार डेटा प्रकार)]] डेटा संरचनाओं का उपयोग किया जा सकता है। इस प्रकार यह [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] आधारित कार्यान्वयन चौड़ाई-पहली खोज देता है। [[ढेर (डेटा संरचना)]] (एलआईएफओ क्रम) [[गहराई-पहली खोज]]|गहराई-पहला एल्गोरिदम उत्पन्न करेगा। इस कारण श्रेष्ठ-प्रथम खोज या सर्वश्रेष्ठ-प्रथम शाखा और इस प्रकार बाउंड एल्गोरिथम प्राथमिकता क्यू का उपयोग करके प्राप्त किया जा सकता है जो उनके निचले बाउंड पर नोड्स को सॉर्ट करता है।<ref name="clausen99"/>इस आधार के साथ सर्वश्रेष्ठ-प्रथम खोज एल्गोरिदम के उदाहरण दिज्क्स्ट्रा के एल्गोरिदम और इसके वंशज A* खोज हैं। इस प्रकार डेप्थ-फर्स्ट वैरिएंट का प्रस्ताव तब उपयोग किया जाता है जब प्रारंभिक समाधान तैयार करने के लिए कोई अच्छा अनुमानी उपलब्ध नहीं होता है, क्योंकि यह शीघ्रता से पूर्ण समाधान तैयार करता है, और इसलिए ऊपरी सीमा में इसका मान उपयोग किया जाता हैं।<ref>{{cite book |last1=Mehlhorn |first1=Kurt |author-link1=Kurt Mehlhorn |first2=Peter |last2=Sanders|author2-link=Peter Sanders (computer scientist) |title=Algorithms and Data Structures: The Basic Toolbox |publisher=Springer |year=2008 |page=249 |url=http://people.mpi-inf.mpg.de/~mehlhorn/ftp/Toolbox/GenericMethods.pdf}}</ref> | |||
==== {{Anchor|Code}स्यूडोकोड ==== | ==== {{Anchor|Code}स्यूडोकोड ==== | ||
एक [[सी ++]] - उपरोक्त के स्यूडोकोड कार्यान्वयन | एक [[सी ++]] - उपरोक्त के स्यूडोकोड कार्यान्वयन के समान है। | ||
// C++-like implementation of branch and bound, | |||
// | // assuming the objective function f is to be minimized | ||
// | CombinatorialSolution branch_and_bound_solve( | ||
CombinatorialProblem problem, | |||
ObjectiveFunction objective_function /*f*/, | |||
BoundingFunction lower_bound_function /*bound*/) | |||
{ | |||
{ | // Step 1 above | ||
double problem_upper_bound = std::numeric_limits<double>::infinity; // = B | |||
CombinatorialSolution heuristic_solution = heuristic_solve(problem); // x_h | |||
problem_upper_bound = objective_function(heuristic_solution); // B = f(x_h) | |||
CombinatorialSolution current_optimum = heuristic_solution; | |||
// Step 2 above | |||
queue<CandidateSolutionTree> candidate_queue; | |||
// problem-specific queue initialization | |||
candidate_queue = populate_candidates(problem); | |||
while (!candidate_queue.empty()) { // Step 3 above | |||
// Step 3.1 | |||
CandidateSolutionTree node = candidate_queue.pop(); | |||
// "node" represents N above | |||
if (node.represents_single_candidate()) { // Step 3.2 | |||
if (objective_function(node.candidate()) < problem_upper_bound) { | |||
current_optimum = node.candidate(); | |||
problem_upper_bound = objective_function(current_optimum); | |||
} | |||
// else, node is a single candidate which is not optimum | |||
} | |||
else { // Step 3.3: node represents a branch of candidate solutions | |||
// "child_branch" represents N_i above | |||
for (auto&& child_branch : node.candidate_nodes) { | |||
if (lower_bound_function(child_branch) <= problem_upper_bound) { | |||
candidate_queue.enqueue(child_branch); // Step 3.3.2 | |||
} | |||
// otherwise, bound(N_i) > B so we prune the branch; step 3.3.1 | |||
} | |||
} | |||
} | |||
return current_optimum; | |||
उपरोक्त स्यूडोकोड में, functions <code>heuristic_solve</code> और <code>populate_candidates</code> समस्या के लिए उपयुक्त के रूप में सबरूटीन्स के रूप में | } | ||
उपरोक्त स्यूडोकोड में, functions <code>heuristic_solve</code> और <code>populate_candidates</code> समस्या के लिए उपयुक्त के रूप में सबरूटीन्स के रूप में काॅल किया जाना चाहिए। फंक्शन {{mvar|''f''}} (<code>objective_function</code>) और {{math|bound}} (<code>lower_bound_function</code>) लिखित रूप में [[समारोह वस्तु|फंक्शन एलिमेंट]] के रूप में माना जाता है, और इस प्रकार सी ++ प्रोग्रामिंग भाषा में अज्ञात फ़ंक्शंस, [[समारोह सूचक|फंक्शन प्वाइंट]] और अन्य प्रकार के कॉल करने योग्य ऑब्जेक्ट्स के अनुरूप हो सकता है। | |||
=== सुधार === | === सुधार === | ||
इस प्रकार <math>\mathbf{x}</math> का सदिश <math>\mathbb{R}^n</math> है , इस प्रकार ब्रांचिंग और बाउंड एल्गोरिदम को [[अंतराल अंकगणित]] के साथ जोड़ा जा सकता है<ref>{{cite book|last1=Moore|first1=R. E.| | |||
title=Interval Analysis| | title=Interval Analysis| | ||
year=1966|publisher=Prentice-Hall| | year=1966|publisher=Prentice-Hall| | ||
location=Englewood Cliff, New Jersey|isbn=0-13-476853-1}} | location=Englewood Cliff, New Jersey|isbn=0-13-476853-1}} | ||
</ref> वैश्विक न्यूनतम | </ref> इस प्रकार वैश्विक न्यूनतम को संलग्नक प्रदान करने के लिए [[अंतराल ठेकेदार|अंतराल काॅंट्रैक्टर]] विधियों का उपओग करते हैं।<ref> | ||
{{cite book|last1=Jaulin|first1=L.|last2=Kieffer|first2=M.|last3=Didrit|first3=O.|last4=Walter|first4=E.| | {{cite book|last1=Jaulin|first1=L.|last2=Kieffer|first2=M.|last3=Didrit|first3=O.|last4=Walter|first4=E.| | ||
title=Applied Interval Analysis|year=2001|publisher=Springer|location=Berlin|isbn=1-85233-219-0}} | title=Applied Interval Analysis|year=2001|publisher=Springer|location=Berlin|isbn=1-85233-219-0}} | ||
Line 95: | Line 89: | ||
publisher=Marcel Dekker|location=New York}} | publisher=Marcel Dekker|location=New York}} | ||
</ref> | </ref> | ||
== अनुप्रयोग == | == अनुप्रयोग == | ||
इस दृष्टिकोण का उपयोग कई एनपी-हार्ड समस्याओं के लिए किया जाता है: | इस दृष्टिकोण का उपयोग कई एनपी-हार्ड समस्याओं के लिए किया जाता है: | ||
* [[पूर्णांक प्रोग्रामिंग]] | * [[पूर्णांक प्रोग्रामिंग]] | ||
Line 111: | Line 102: | ||
* [[उलटा सेट करें]] | * [[उलटा सेट करें]] | ||
* [[अनुमान लगाएं]] | * [[अनुमान लगाएं]] | ||
* 0/1 | * 0/1 बैग समस्या | ||
* [[कवर समस्या सेट करें]] | * [[कवर समस्या सेट करें]] | ||
* [[ यंत्र अधिगम ]] में फ़ीचर चयन<ref>{{cite journal |title=सुविधा सबसेट चयन के लिए एक शाखा और बाध्य एल्गोरिथम|last1=Narendra |first1=Patrenahalli M. |last2=Fukunaga |first2=K. |journal=IEEE Transactions on Computers |volume=C-26 |issue=9 |year=1977 |pages=917–922 |doi=10.1109/TC.1977.1674939 |url=http://www.computer.org/csdl/trans/tc/1977/09/01674939.pdf}}</ref><ref>{{cite arXiv |last=Hazimeh |first=Hussein| last2=Mazumder |first2=Rahul |last3=Saab |first3=Ali |eprint=2004.06152 |title=Sparse Regression at Scale: Branch-and-Bound rooted in First-Order Optimization |date=2020}}</ref> | * [[ यंत्र अधिगम ]] में फ़ीचर चयन<ref>{{cite journal |title=सुविधा सबसेट चयन के लिए एक शाखा और बाध्य एल्गोरिथम|last1=Narendra |first1=Patrenahalli M. |last2=Fukunaga |first2=K. |journal=IEEE Transactions on Computers |volume=C-26 |issue=9 |year=1977 |pages=917–922 |doi=10.1109/TC.1977.1674939 |url=http://www.computer.org/csdl/trans/tc/1977/09/01674939.pdf}}</ref><ref>{{cite arXiv |last=Hazimeh |first=Hussein| last2=Mazumder |first2=Rahul |last3=Saab |first3=Ali |eprint=2004.06152 |title=Sparse Regression at Scale: Branch-and-Bound rooted in First-Order Optimization |date=2020}}</ref> | ||
Line 118: | Line 109: | ||
* [[ प्रतिभा निर्धारण ]], सीन शूटिंग अरेंजमेंट प्रॉब्लम | * [[ प्रतिभा निर्धारण ]], सीन शूटिंग अरेंजमेंट प्रॉब्लम | ||
शाखा और बंधन भी विभिन्न अनुमानों का आधार हो सकता है। इस प्रकार उदाहरण के लिए, जब ऊपरी और निचली सीमा के बीच का अंतर निश्चित सीमा से छोटा हो जाता है, तो शाखाकरण को रोकना चाह सकता है। इसका उपयोग तब किया जाता है जब समाधान व्यावहारिक उद्देश्यों के लिए पर्याप्त अच्छा होता है और आवश्यक संगणनाओं को बहुत कम कर सकता है। इस प्रकार का समाधान विशेष रूप से तब लागू होता है जब उपयोग किया जाने वाला लागत फ़ंक्शन ट्यून करता है या आंकड़ों का परिणाम देने में सहायक होता है और इसलिए ठीक से ज्ञात नहीं है, केवल विशिष्ट [[संभावना]] वाले मूल्यों की सीमा के भीतर ही जाना जाता है। | |||
== अन्य एल्गोरिदम से संबंध == | == अन्य एल्गोरिदम से संबंध == | ||
नौ एट | नौ एट अल शाखा और बाउंड का सामान्यीकरण प्रस्तुत करता है जो A* खोज एल्गोरिद्म या A*, [[B*]] और ऐल्फा–बीटा प्रूनिंग या ऐल्फा–बीटा सर्च एल्गोरिद्म को समाहित करता है।<ref>{{cite journal |last1=Nau |first1=Dana S. |first2=Vipin |last2=Kumar |first3=Laveen |last3=Kanal |title=General branch and bound, and its relation to A∗ and AO∗ |journal=Artificial Intelligence |volume=23 |issue=1 |year=1984 |pages=29–58 |url=https://www.cs.umd.edu/~nau/papers/nau1984general.pdf | doi = 10.1016/0004-3702(84)90004-3 }}</ref> | ||
== अनुकूलन उदाहरण == | == अनुकूलन उदाहरण == | ||
Line 137: | Line 127: | ||
<math>x_1</math> और <math>x_2</math> पूर्णांक हैं। | <math>x_1</math> और <math>x_2</math> पूर्णांक हैं। | ||
पहला | पहला चरण में पूर्णांक बाधा को उपयोग नहीं किया जाता है। इस प्रकार रेखा बनाने वाले पहले समीकरण के लिए हमारे पास दो चरम बिंदु हैं: <math>\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}=\begin{bmatrix}50 \\0\end{bmatrix}</math> और <math>\begin{bmatrix}0 \\50\end{bmatrix}</math>, इस प्रकार हम सदिश बिंदुओं के साथ दूसरी पंक्ति <math>\begin{bmatrix}0\\40\end{bmatrix}</math> और <math>\begin{bmatrix} 70\\0\end{bmatrix}</math>बना सकते हैं। | ||
[[File:Branch and Bound optimization example with linear constraints in BricsCad Ultimate Academic Edition.png|thumb|दो पंक्तियाँ।]]तीसरा बिंदु है <math>\begin{bmatrix}0\\0\end{bmatrix}</math> | [[File:Branch and Bound optimization example with linear constraints in BricsCad Ultimate Academic Edition.png|thumb|दो पंक्तियाँ।]]तीसरा बिंदु है <math>\begin{bmatrix}0\\0\end{bmatrix}</math> यह उत्तल है इसलिए समाधान क्षेत्र के किसी कोने पर स्थित है। इस प्रकार हम पंक्ति में कमी का उपयोग करके चौराहे का पता लगा सकते हैं, जो कि है <math>\begin{bmatrix}70/3\\80/3\end{bmatrix}</math>, या <math>\begin{bmatrix} 23.333\\26.667\end{bmatrix}</math> 276.667 के मान के साथ उपयोग किया जाता हैं। इस प्रकार हम क्षेत्र के ऊपर रेखा को स्वीप करके अन्य समापन बिंदुओं का परीक्षण करते हैं और पाते हैं कि यह वास्तविक से अधिक अधिकतम है। | ||
इस मामले में, हम अधिकतम भिन्नात्मक भाग वाले चर को चुनते हैं <math>x_2</math> शाखा और बाउंड विधि के लिए पैरामीटर बन जाता है। हम शाखा करते हैं <math>x_2\leq26</math> और 276 @ प्राप्त करें <math>\langle 24,26\rangle</math>. हम | इस मामले में, हम अधिकतम भिन्नात्मक भाग वाले चर को चुनते हैं <math>x_2</math> शाखा और बाउंड विधि के लिए पैरामीटर बन जाता है। हम शाखा करते हैं <math>x_2\leq26</math> और 276 @ प्राप्त करें <math>\langle 24,26\rangle</math>. हम पूर्णांक समाधान तक पहुँच चुके हैं इसलिए हम दूसरी शाखा में <math>x_2\geq27</math> जाते हैं। इस प्रकार हम 275.75 @ प्राप्त करते हैं<math>\langle 22.75, 27\rangle</math>. हमारे पास दशमलव है इसलिए हम ब्रांच करते हैं, इस प्रकार <math>x_1</math> को <math>x_1\leq22</math> और हम पाते हैं 274.571 @<math>\langle 22,27.4286\rangle</math>. हम दूसरी शाखा <math>x_1\geq23</math> का प्रयास करते हैं और कोई व्यवहार्य समाधान नहीं हैं। इसलिए, अधिकतम 276 है <math>x_1\longmapsto 24</math> और <math>x_2\longmapsto 26</math> संभव हैं। | ||
== यह भी देखें == | == यह भी देखें == | ||
* पीछे हटना | * पीछे हटना | ||
* [[शाखा और कट]] | * [[शाखा और कट]] या ब्रांच-एंड-कट, शाखा और बंधन और [[ काटने का विमान | कटिंग प्लेन]] विधियों के बीच संकर जो [[पूर्णांक रैखिक कार्यक्रम|पूर्णांक रैखिक फंक्शन]] को हल करने के लिए बड़े पैमाने पर उपयोग किया जाता है। | ||
* [[विकासवादी एल्गोरिदम]] | * [[विकासवादी एल्गोरिदम]] | ||
* [[अल्फा-बीटा प्रूनिंग]] | * [[अल्फा-बीटा प्रूनिंग]] | ||
Line 158: | Line 148: | ||
{{Optimization algorithms|combinatorial|state=expanded}} | {{Optimization algorithms|combinatorial|state=expanded}} | ||
{{DEFAULTSORT:Branch And Bound}} | {{DEFAULTSORT:Branch And Bound}} | ||
[[Category: | [[Category:Collapse templates|Branch And Bound]] | ||
[[Category:Created On 06/05/2023]] | [[Category:Created On 06/05/2023|Branch And Bound]] | ||
[[Category:Lua-based templates|Branch And Bound]] | |||
[[Category:Machine Translated Page|Branch And Bound]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists|Branch And Bound]] | |||
[[Category:Pages using duplicate arguments in template calls|Branch And Bound]] | |||
[[Category:Pages with script errors|Branch And Bound]] | |||
[[Category:Sidebars with styles needing conversion|Branch And Bound]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Translated in Hindi|Branch And Bound]] | |||
[[Category:Templates Vigyan Ready|Branch And Bound]] | |||
[[Category:Templates generating microformats|Branch And Bound]] | |||
[[Category:Templates that add a tracking category|Branch And Bound]] | |||
[[Category:Templates that are not mobile friendly|Branch And Bound]] | |||
[[Category:Templates that generate short descriptions|Branch And Bound]] | |||
[[Category:Templates using TemplateData|Branch And Bound]] | |||
[[Category:Wikipedia metatemplates|Branch And Bound]] | |||
[[Category:अनुकूलन एल्गोरिदम और तरीके|Branch And Bound]] | |||
[[Category:संयुक्त अनुकूलन|Branch And Bound]] |
Latest revision as of 14:50, 24 May 2023
शाखा और बंधन (BB, B&B, या BnB) अनुकूलन समस्याओं को छोटी उप-समस्याओं में तोड़कर और उप-समस्याओं को पूर्ण रूप से खत्म करने के लिए बाउंडिंग फ़ंक्शन का उपयोग करके हल करने की उपयुक्त विधि है जिसमें इष्टतम समाधान नहीं हो सकते हैं। यह इस प्रकार असतत अनुकूलन और संयोजी अनुकूलन समस्याओं के साथ-साथ गणितीय अनुकूलन के लिए कलन विधि एल्गोरिथम प्रतिमान का उपयोग करती हैं। इस प्रकार शाखा और बंधन एल्गोरिथ्म में स्थितियों के आधार पर अंतरिक्ष खोज के माध्यम से किसी उपयोगकर्ता के समाधानों की व्यवस्थित गणना करने में सहायक होता है: उपयोगकर्ता समाधानों के सेट को रूट पर पूर्ण सेट के साथ ट्री (ग्राफ़ सिद्धांत) बनाने के रूप में माना जाता है। इस प्रकार इस एल्गोरिद्म को किसी ट्री की शाखाओं की जाँच करने के लिए सहायता करता है, जो इस प्रकार समाधान सेट के सबसेट का प्रतिनिधित्व करती है। इन शाखाओं के उपयोगकर्ता समाधानों की गणना करने से पहले किसी शाखा को इष्टतम समाधान पर ऊपरी और निचले अनुमानित सीमा के विरुद्ध जाँच करते हैं, और यदि यह एल्गोरिथम द्वारा अब तक मिले सबसे अच्छे समाधान से उत्तम समाधान नहीं दे पाता है तो उसे छोड़ दिया जाता है।
एल्गोरिथ्म खोज स्थान के क्षेत्रों/शाखाओं की निचली और ऊपरी सीमा के कुशल आकलन पर निर्भर करता है। यदि कोई सीमा उपलब्ध नहीं है, तो एल्गोरिथम संपूर्ण खोज के लिए पतित हो जाता है।
1960 में असतत अनुकूलन के लिए BP द्वारा प्रायोजित लंदन स्कूल ऑफ इकोनॉमिक्स में शोध करते समय पहली बार ऐल्सा प्रांत और एलीसन हारर्कोट द्वारा विधि प्रस्तावित की गई थी।[1][2] इस प्रकार इस कारण एनपी कठिन अनुकूलन समस्याओं को हल करने के लिए सबसे अधिक उपयोग किया जाने वाला उपकरण बन गया है।[3] इस प्रकार इस शाखा और बंधन के नाम में सबसे पहले लिटिल एट अल के कार्य में आया हैं। जिसकी यात्रा विक्रेता की समस्याओं पर निर्भर होती हैं।[4][5]
अवलोकन
ब्रांचिंग और बाउंडिंग एल्गोरिथम का लक्ष्य x मान को खोजना है, जो वास्तविक मूल्यवान फ़ंक्शन f(x) के मान को अधिकतम या कम करता है, कुछ सेट के बीच S स्वीकार्य, या उपयोगकर्ता समाधान को ऑब्जेक्टिव फ़ंक्शन कहा जाता है। इस प्रकार सेट S को खोजे गए स्थान या व्यवहार्य क्षेत्र कहा जाता है। इस प्रकार इस खंड के बचे हुए भागों के रूप में माना जाता है कि कम से कम f(x) वांछित है, इस प्रकार यह धारणा व्यापकता के हानि के बिना आती है, क्योंकि कोई अधिकतम मूल्य f(x) का न्यूनतम ज्ञात करके g(x) = −f(x) पा सकता है, इस प्रकार बी एंड बी एल्गोरिदम दो सिद्धांतों के अनुसार कार्य करता है:
- यह पुनरावर्ती रूप से खोज स्थान को छोटे स्थानों में विभाजित करता है, फिर f(x) इन छोटे स्थानों पर छोटा करता है, इस प्रकार इसके विभाजन को ब्रांचिंग कहा जाता है।
- अकेले ब्रांचिंग क्रूर-बल खोज या ब्रूट-फोर्स एन्यूमरेशन ऑफ़ कैंडिडेट सॉल्यूशंस और उन सभी का परीक्षण करने की राशि के रूप में उपयोग होती हैं। इस प्रकार ब्रूट-फोर्स सर्च के प्रदर्शन में सुधार करने के लिए, B&B एल्गोरिद्म कम से कम सीमा का ट्रैक रखता है जिसे वह खोजने का प्रयास करता है, और इस प्रकार इन सीमाओं का उपयोग खोज स्थान का निर्णय ट्री के रूप में प्रदर्शित करने के लिए करता है, इस प्रकार उपयोगकर्ता समाधानों को समाप्त करता है जो यह साबित कर सकता है इष्टतम समाधान सम्मिलित नहीं रहता है।
विशिष्ट अनुकूलन समस्या के लिए इन सिद्धांतों को ठोस एल्गोरिदम में परिवर्तित करने के लिए कुछ प्रकार की डेटा संरचना की आवश्यकता होती है जो उपयोगकर्ता समाधान के सेट का प्रतिनिधित्व करती है। इस प्रकार के प्रतिनिधित्व को समस्या का उदाहरण कहा जाता है। इस प्रकार उदाहरण के लिए उपयोगकर्ता समाधान के सेट को I द्वारा SI निरूपित करते हैं। इसके उदाहरण के लिए प्रतिनिधित्व को तीन परिचालनों के साथ प्रदर्शित कर सकते हैं:
- branch(I) - दो या दो से अधिक उदाहरण उत्पन्न करता है जिनमें से प्रत्येक सबसेट SI का प्रतिनिधित्व करता है। (सामान्यतः उपसमुच्चय असम्बद्ध सेट होते हैं जो एल्गोरिदम को ही उपयोगकर्ता समाधान पर दो बार जाने से रोकते हैं, लेकिन इसकी आवश्यकता नहीं है। चूंकि इस प्रकार बीच में इष्टतम समाधान SI कम से कम सबसेट में सम्मिलित होना चाहिए।[6])
- bound(I) द्वारा दर्शाए गए स्थान में किसी भी उपयोगकर्ता समाधान के मूल्य पर निचली सीमा I की गणना करता है, इस प्रकार इसका मान bound(I) ≤ f(x) सभी के लिए x में SI. के समान हैं।
- solution(I) निर्धारित करता है कि क्या I एकल उपयोगकर्ता समाधान का प्रतिनिधित्व करता है। (इस प्रकार वैकल्पिक रूप से, यदि ऐसा नहीं होता है, तो SI ऑपरेशन बीच में से कुछ व्यवहार्य समाधान वापस करने का विकल्प चुन सकता है.[6]) यदि solution(I) तब फंक्शन f(solution(I)) लौटाता है, इस प्रकार इसके व्यवहार्य समाधानों के पूरे स्थान पर इष्टतम उद्देश्य मान के लिए ऊपरी सीमा प्रदान करता है।
इन परिचालनों का उपयोग करते हुए, बी एंड बी एल्गोरिदम शाखा संचालन द्वारा गठित उदाहरणों के ट्री सर्चिंग के माध्यम से शीर्ष-नीचे पुनरावर्ती खोज करता है। उदाहरण पर जाने पर I, यह जांचता है कि क्या bound(I) वर्तमान ऊपरी सीमा के बराबर या उससे अधिक है; यदि ऐसा है तो, I को खोज से सुरक्षित रूप से हटाया जा सकता है और इस प्रकार पुनरावर्तन बंद हो जाता है। इस प्रकार यह सार्टिंग सामान्यतः वैश्विक वैरियेबल को बनाए रखने के द्वारा कार्यान्वित किया जाता है जो कि अब तक की जांच की गई सभी उदाहरणों में देखी गई न्यूनतम ऊपरी सीमा को रिकॉर्ड करता है।
सामान्य संस्करण
निम्नलिखित सामान्य शाखा का प्रारूप है और इस विधि से इस फंक्शन को कम करने के लिए bound एल्गोरिदम f है।[3] इससे वास्तविक एल्गोरिथम प्राप्त करने के लिए, बाउंडिंग फ़ंक्शन की आवश्यकता होती है bound, जो निम्न सीमा की गणना करता है f सर्च ट्री के नोड्स पर, साथ ही समस्या-विशिष्ट ब्रांचिंग नियम का उपयोग किया जाता हैं जैसे, यहाँ इस प्रकार सामान्य एल्गोरिथ्म उच्च-क्रम का कार्य प्रस्तुत करती हैं।
- इस प्रकार अनुमानी का उपयोग करके समाधान xh की अनुकूलन समस्या को सर्च करने के लिए किया जाता हैं। इसका मूल्य संग्रहीत करें, B = f(xh). (यदि कोई अनुमानी मान उपलब्ध नहीं है, तो इस प्रकार B अनंत की ओर सेट करते हैं।) इस प्रकार B अब तक मिले सर्वोत्तम समाधान को दर्शाएगा, और उपयोगकर्ता समाधानों पर ऊपरी सीमा के रूप में उपयोग किया जाएगा।
- इस प्रकार असाइन की गई समस्या के किसी भी चर के साथ आंशिक समाधान रखने के लिए क्रम आरंभ करते हैं।
- यह क्रम रिक्त होने तक लूप चलता रहता हैं:
- इस प्रकार एक नोड लें N क्रम से बाहर रखते हैं।
- यदि N एकल उपयोगकर्ता समाधान का प्रतिनिधित्व करता है x और f(x) < B, तब x अब तक का सबसे अच्छा समाधान है। इसे रिकॉर्ड करें और सेट करें B ← f(x).
- इसके अतिरिक्त आगे बढ़ने पर N नए नोड बनाने के लिए Ni इनमें से प्रत्येक के लिए:
- यदि bound(Ni) > B, कुछ भी नहीं है, चूंकि इस प्रकार इस नोड पर निचली सीमा समस्या की ऊपरी सीमा से अधिक है, इसलिए यह कभी भी इष्टतम समाधान की ओर नहीं ले जाएगी, और इसे त्याग दिया जा सकता है।
- इसके अतिरिक्त Ni क्रम में स्टोर करें।
कई अलग-अलग क्रम (सार डेटा प्रकार) डेटा संरचनाओं का उपयोग किया जा सकता है। इस प्रकार यह फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स) आधारित कार्यान्वयन चौड़ाई-पहली खोज देता है। ढेर (डेटा संरचना) (एलआईएफओ क्रम) गहराई-पहली खोज|गहराई-पहला एल्गोरिदम उत्पन्न करेगा। इस कारण श्रेष्ठ-प्रथम खोज या सर्वश्रेष्ठ-प्रथम शाखा और इस प्रकार बाउंड एल्गोरिथम प्राथमिकता क्यू का उपयोग करके प्राप्त किया जा सकता है जो उनके निचले बाउंड पर नोड्स को सॉर्ट करता है।[3]इस आधार के साथ सर्वश्रेष्ठ-प्रथम खोज एल्गोरिदम के उदाहरण दिज्क्स्ट्रा के एल्गोरिदम और इसके वंशज A* खोज हैं। इस प्रकार डेप्थ-फर्स्ट वैरिएंट का प्रस्ताव तब उपयोग किया जाता है जब प्रारंभिक समाधान तैयार करने के लिए कोई अच्छा अनुमानी उपलब्ध नहीं होता है, क्योंकि यह शीघ्रता से पूर्ण समाधान तैयार करता है, और इसलिए ऊपरी सीमा में इसका मान उपयोग किया जाता हैं।[7]
{{Anchor|Code}स्यूडोकोड
एक सी ++ - उपरोक्त के स्यूडोकोड कार्यान्वयन के समान है।
// C++-like implementation of branch and bound, // assuming the objective function f is to be minimized CombinatorialSolution branch_and_bound_solve( CombinatorialProblem problem, ObjectiveFunction objective_function /*f*/, BoundingFunction lower_bound_function /*bound*/) { // Step 1 above double problem_upper_bound = std::numeric_limits<double>::infinity; // = B CombinatorialSolution heuristic_solution = heuristic_solve(problem); // x_h problem_upper_bound = objective_function(heuristic_solution); // B = f(x_h) CombinatorialSolution current_optimum = heuristic_solution; // Step 2 above queue<CandidateSolutionTree> candidate_queue; // problem-specific queue initialization candidate_queue = populate_candidates(problem); while (!candidate_queue.empty()) { // Step 3 above // Step 3.1 CandidateSolutionTree node = candidate_queue.pop(); // "node" represents N above if (node.represents_single_candidate()) { // Step 3.2 if (objective_function(node.candidate()) < problem_upper_bound) { current_optimum = node.candidate(); problem_upper_bound = objective_function(current_optimum); } // else, node is a single candidate which is not optimum } else { // Step 3.3: node represents a branch of candidate solutions // "child_branch" represents N_i above for (auto&& child_branch : node.candidate_nodes) { if (lower_bound_function(child_branch) <= problem_upper_bound) { candidate_queue.enqueue(child_branch); // Step 3.3.2 } // otherwise, bound(N_i) > B so we prune the branch; step 3.3.1 } } } return current_optimum;
}
उपरोक्त स्यूडोकोड में, functions heuristic_solve
और populate_candidates
समस्या के लिए उपयुक्त के रूप में सबरूटीन्स के रूप में काॅल किया जाना चाहिए। फंक्शन f (objective_function
) और bound (lower_bound_function
) लिखित रूप में फंक्शन एलिमेंट के रूप में माना जाता है, और इस प्रकार सी ++ प्रोग्रामिंग भाषा में अज्ञात फ़ंक्शंस, फंक्शन प्वाइंट और अन्य प्रकार के कॉल करने योग्य ऑब्जेक्ट्स के अनुरूप हो सकता है।
सुधार
इस प्रकार का सदिश है , इस प्रकार ब्रांचिंग और बाउंड एल्गोरिदम को अंतराल अंकगणित के साथ जोड़ा जा सकता है[8] इस प्रकार वैश्विक न्यूनतम को संलग्नक प्रदान करने के लिए अंतराल काॅंट्रैक्टर विधियों का उपओग करते हैं।[9][10]
अनुप्रयोग
इस दृष्टिकोण का उपयोग कई एनपी-हार्ड समस्याओं के लिए किया जाता है:
- पूर्णांक प्रोग्रामिंग
- नॉनलाइनियर प्रोग्रामिंग
- ट्रैवलिंग सेल्समैन की समस्या (TSP)[4][11]
- द्विघात असाइनमेंट समस्या (QAP)
- अधिकतम संतुष्टि समस्या (मैक्स-सैट)
- निकटतम पड़ोसी खोज[12] (कीनोसुके फुकुनागा द्वारा)
- फ्लो शॉप शेड्यूलिंग
- स्टॉक की समस्या में कटौती
- कम्प्यूटेशनल फाइलोजेनेटिक्स
- उलटा सेट करें
- अनुमान लगाएं
- 0/1 बैग समस्या
- कवर समस्या सेट करें
- यंत्र अधिगम में फ़ीचर चयन[13][14]
- कंप्यूटर दृष्टि में संरचित भविष्यवाणी[15]: 267–276
- चाइनीज पोस्टमैन समस्या सहित आर्क रूटिंग समस्या
- प्रतिभा निर्धारण , सीन शूटिंग अरेंजमेंट प्रॉब्लम
शाखा और बंधन भी विभिन्न अनुमानों का आधार हो सकता है। इस प्रकार उदाहरण के लिए, जब ऊपरी और निचली सीमा के बीच का अंतर निश्चित सीमा से छोटा हो जाता है, तो शाखाकरण को रोकना चाह सकता है। इसका उपयोग तब किया जाता है जब समाधान व्यावहारिक उद्देश्यों के लिए पर्याप्त अच्छा होता है और आवश्यक संगणनाओं को बहुत कम कर सकता है। इस प्रकार का समाधान विशेष रूप से तब लागू होता है जब उपयोग किया जाने वाला लागत फ़ंक्शन ट्यून करता है या आंकड़ों का परिणाम देने में सहायक होता है और इसलिए ठीक से ज्ञात नहीं है, केवल विशिष्ट संभावना वाले मूल्यों की सीमा के भीतर ही जाना जाता है।
अन्य एल्गोरिदम से संबंध
नौ एट अल शाखा और बाउंड का सामान्यीकरण प्रस्तुत करता है जो A* खोज एल्गोरिद्म या A*, B* और ऐल्फा–बीटा प्रूनिंग या ऐल्फा–बीटा सर्च एल्गोरिद्म को समाहित करता है।[16]
अनुकूलन उदाहरण
इस समस्या को हल करने के लिए शाखा और बाउंड का उपयोग किया जा सकता है
अधिकतम इन बाधाओं के साथ
और पूर्णांक हैं।
पहला चरण में पूर्णांक बाधा को उपयोग नहीं किया जाता है। इस प्रकार रेखा बनाने वाले पहले समीकरण के लिए हमारे पास दो चरम बिंदु हैं: और , इस प्रकार हम सदिश बिंदुओं के साथ दूसरी पंक्ति और बना सकते हैं।
तीसरा बिंदु है यह उत्तल है इसलिए समाधान क्षेत्र के किसी कोने पर स्थित है। इस प्रकार हम पंक्ति में कमी का उपयोग करके चौराहे का पता लगा सकते हैं, जो कि है , या 276.667 के मान के साथ उपयोग किया जाता हैं। इस प्रकार हम क्षेत्र के ऊपर रेखा को स्वीप करके अन्य समापन बिंदुओं का परीक्षण करते हैं और पाते हैं कि यह वास्तविक से अधिक अधिकतम है।
इस मामले में, हम अधिकतम भिन्नात्मक भाग वाले चर को चुनते हैं शाखा और बाउंड विधि के लिए पैरामीटर बन जाता है। हम शाखा करते हैं और 276 @ प्राप्त करें . हम पूर्णांक समाधान तक पहुँच चुके हैं इसलिए हम दूसरी शाखा में जाते हैं। इस प्रकार हम 275.75 @ प्राप्त करते हैं. हमारे पास दशमलव है इसलिए हम ब्रांच करते हैं, इस प्रकार को और हम पाते हैं 274.571 @. हम दूसरी शाखा का प्रयास करते हैं और कोई व्यवहार्य समाधान नहीं हैं। इसलिए, अधिकतम 276 है और संभव हैं।
यह भी देखें
- पीछे हटना
- शाखा और कट या ब्रांच-एंड-कट, शाखा और बंधन और कटिंग प्लेन विधियों के बीच संकर जो पूर्णांक रैखिक फंक्शन को हल करने के लिए बड़े पैमाने पर उपयोग किया जाता है।
- विकासवादी एल्गोरिदम
- अल्फा-बीटा प्रूनिंग
संदर्भ
- ↑ A. H. Land and A. G. Doig (1960). "असतत प्रोग्रामिंग समस्याओं के हल के लिए एक स्वचालित विधि". Econometrica. Vol. 28, no. 3. pp. 497–520. doi:10.2307/1910129.
- ↑ "स्टाफ न्यूज". www.lse.ac.uk. Archived from the original on 2021-02-24. Retrieved 2018-10-08.
- ↑ 3.0 3.1 3.2 Clausen, Jens (1999). Branch and Bound Algorithms—Principles and Examples (PDF) (Technical report). University of Copenhagen. Archived from the original (PDF) on 2015-09-23. Retrieved 2014-08-13.
- ↑ 4.0 4.1 Little, John D. C.; Murty, Katta G.; Sweeney, Dura W.; Karel, Caroline (1963). "ट्रैवलिंग सेल्समैन समस्या के लिए एल्गोरिद्म" (PDF). Operations Research. 11 (6): 972–989. doi:10.1287/opre.11.6.972. hdl:1721.1/46828.
- ↑ Balas, Egon; Toth, Paolo (1983). ट्रैवलिंग सेल्समैन समस्या के लिए ब्रांच और बाउंड तरीके (PDF) (Report). Carnegie Mellon University Graduate School of Industrial Administration. Archived (PDF) from the original on October 20, 2012.
- ↑ 6.0 6.1 Bader, David A.; Hart, William E.; Phillips, Cynthia A. (2004). "शाखा और बाउंड के लिए समानांतर एल्गोरिथम डिज़ाइन" (PDF). In Greenberg, H. J. (ed.). Tutorials on Emerging Methodologies and Applications in Operations Research. Kluwer Academic Press. Archived from the original (PDF) on 2017-08-13. Retrieved 2015-09-16.
- ↑ Mehlhorn, Kurt; Sanders, Peter (2008). Algorithms and Data Structures: The Basic Toolbox (PDF). Springer. p. 249.
- ↑ Moore, R. E. (1966). Interval Analysis. Englewood Cliff, New Jersey: Prentice-Hall. ISBN 0-13-476853-1.
- ↑ Jaulin, L.; Kieffer, M.; Didrit, O.; Walter, E. (2001). Applied Interval Analysis. Berlin: Springer. ISBN 1-85233-219-0.
- ↑ Hansen, E.R. (1992). Global Optimization using Interval Analysis. New York: Marcel Dekker.
- ↑ Conway, Richard Walter; Maxwell, William L.; Miller, Louis W. (2003). शेड्यूलिंग का सिद्धांत. Courier Dover Publications. pp. 56–61.
- ↑ Fukunaga, Keinosuke; Narendra, Patrenahalli M. (1975). "A branch and bound algorithm for computing k-nearest neighbors". IEEE Transactions on Computers: 750–753. doi:10.1109/t-c.1975.224297.
- ↑ Narendra, Patrenahalli M.; Fukunaga, K. (1977). "सुविधा सबसेट चयन के लिए एक शाखा और बाध्य एल्गोरिथम" (PDF). IEEE Transactions on Computers. C-26 (9): 917–922. doi:10.1109/TC.1977.1674939.
- ↑ Hazimeh, Hussein; Mazumder, Rahul; Saab, Ali (2020). "Sparse Regression at Scale: Branch-and-Bound rooted in First-Order Optimization". arXiv:2004.06152.
- ↑ Nowozin, Sebastian; Lampert, Christoph H. (2011). "कंप्यूटर विजन में स्ट्रक्चर्ड लर्निंग एंड प्रेडिक्शन". Foundations and Trends in Computer Graphics and Vision. 6 (3–4): 185–365. CiteSeerX 10.1.1.636.2651. doi:10.1561/0600000033. ISBN 978-1-60198-457-9.
- ↑ Nau, Dana S.; Kumar, Vipin; Kanal, Laveen (1984). "General branch and bound, and its relation to A∗ and AO∗" (PDF). Artificial Intelligence. 23 (1): 29–58. doi:10.1016/0004-3702(84)90004-3.
बाहरी संबंध
- LiPS – Free easy-to-use GUI program intended for solving linear, integer and goal programming problems.
- Cbc – (Coin-or branch and cut) is an open-source mixed integer programming solver written in C++.
| group5 = Metaheuristics | abbr5 = heuristic | list5 =
| below =
}} | group5 =Metaheuuristic |abbr5 = heuristic | list5 =*विकासवादी एल्गोरिथ्म
| below =* सॉफ्टवेयर
}}