Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

बैकट्रैकिंग का परिचय

बैकट्रैकिंग क्या है?

बैकट्रैकिंग एक एल्गोरिदमिक तकनीक है जो समस्या को चरण-दर-चरण हल करती है, आंशिक समाधान बनाती है और उन्हें बाधाओं (constraints) के विरुद्ध जांचती है। यदि कोई आंशिक समाधान मान्य समाधान की ओर नहीं ले जाता, तो यह वापस (backtrack) जाता है और अन्य विकल्प आजमाता है।

समस्या प्रकार

  • निर्णय समस्या: एक व्यवहार्य समाधान खोजें
  • अनुकूलन समस्या: सर्वोत्तम समाधान खोजें
  • गणना समस्या: सभी व्यवहार्य समाधान खोजें

सामान्य एल्गोरिदम

Backtrack(state):
    if state is goal:
        return success
    if state is dead end:
        return failure
    
    for each choice from state:
        make choice
        if Backtrack(new_state) == success:
            return success
        undo choice  // बैकट्रैक
    
    return failure

उदाहरण: N-क्वीन समस्या

समस्या: N×N शतरंज बोर्ड पर N रानियां रखें ताकि कोई भी दो रानी एक-दूसरे पर हमला न कर सकें।

4-क्वीन समाधान:

{0, 1, 0, 0}
{0, 0, 0, 1}
{1, 0, 0, 0}
{0, 0, 1, 0}

N-क्वीन के लिए बैकट्रैकिंग एल्गोरिदम

  1. पहली पंक्ति में पहली स्थिति से शुरू करें
  2. पंक्ति में रानी रखें और जांचें
  3. यदि सुरक्षित है: स्थिति को समाधान के भाग के रूप में चिह्नित करें, अगली पंक्ति के लिए रिकर्सिवली जांचें
  4. यदि कोई समाधान नहीं मिलता: बैकट्रैक करें (रानी हटाएं), अगली स्थिति आजमाएं
  5. यदि सभी पंक्तियां आजमा लीं और कोई समाधान नहीं: FALSE लौटाएं

उदाहरण: चूहे की भूलभुलैया (Rat in a Maze)

समस्या: N×N भूलभुलैया में [0][0] से [N-1][N-1] तक पथ खोजें। 1 = खुला पथ, 0 = अवरुद्ध।

भूलभुलैया:
1 0 0 0
1 1 0 1
0 1 0 0
1 1 1 1

हल पथ (1 = पथ):
1 0 0 0
1 1 0 0
0 1 0 0
0 1 1 1

बैकट्रैकिंग के क्लासिक उदाहरण

समस्याविवरण
N-क्वीनगैर-हमलावर रानियां रखें
चूहे की भूलभुलैयाशुरुआत से अंत तक पथ खोजें
सबसेट योगलक्ष्य योग वाले उपसमुच्चय खोजें
सुडोकू सॉल्वरग्रिड को नियमों के अनुसार भरें
हैमिल्टोनियन चक्रसभी शीर्षों को एक बार देखने वाला चक्र
ग्राफ रंगाईआसन्न शीर्षों को अलग रंग
नैपसैक (0/1)वजन सीमा के साथ अधिकतम मूल्य
स्ट्रिंग क्रमपरिवर्तनसभी संभावित व्यवस्थाएं

बैकट्रैकिंग बनाम ब्रूट फोर्स

  • ब्रूट फोर्स: सभी संभावनाएं आजमाता है, कोई छंटाई नहीं
  • बैकट्रैकिंग: बाधाओं का उपयोग करके अवैध पथों को जल्दी छांटता है
  • दक्षता: बैकट्रैकिंग विशाल खोज स्थान को नाटकीय रूप से कम कर सकता है

C में टेम्पलेट

bool solve(int pos) {
    if (pos == N) return true;  // आधार मामला
    
    for (int choice = 0; choice < options; choice++) {
        if (is_valid(pos, choice)) {
            make_choice(pos, choice);
            if (solve(pos + 1)) return true;
            undo_choice(pos, choice);  // बैकट्रैक
        }
    }
    return false;
}
  1. iOS 15 ब्लूटूथ समस्या को अंतिम समाधान से कैसे हल करें iOS 15 ब्लूटूथ समस्या को अंतिम समाधान से कैसे हल करें

    iOS 15 ब्लूटूथ समस्या मैंने अपने iPhone X पर iOS 15 बीटा सफलतापूर्वक इंस्टॉल किया है लेकिन कुछ समस्याएं हैं। जब मैं अपने सोनी हेडसेट से संगीत सुन रहा था तो ब्लूटूथ स्वचालित रूप से डिस्कनेक्ट हो जाता था। मुझे लगता है कि यह मेरे लिए एक गंभीर समस्या हो सकती है। कोई मुझे बता सकता है कि इस समस्या को कैसे

  1. CPADMIN में मास्टर करना: Oracle के समवर्ती प्रसंस्करण यूटिलिटी के लिए आपका गाइड CPADMIN में मास्टर करना: Oracle के समवर्ती प्रसंस्करण यूटिलिटी के लिए आपका गाइड

    CPADMIN द्वारा संभाले जाने वाले कार्य आप CPADMIN का उपयोग निम्नलिखित कार्यों के लिए कर सकते हैं: प्रबंधक स्थिति देखें: सभी प्रबंधकों की स्थिति दिखाता है। आप सभी चल रहे समवर्ती प्रबंधक (CM) स्थितियों को देख सकते हैं (प्रोसेस आईडी के साथ या बिना)। वही स्थिति जानकारी समवर्ती प्रबंधक प्रशासित करें फॉर्

  1. फायरफॉक्स ने सभी ऐड-ऑन अक्षम किए: कारण, प्रभाव, और इसे कैसे ठीक करें फायरफॉक्स ने सभी ऐड-ऑन अक्षम किए: कारण, प्रभाव, और इसे कैसे ठीक करें

    आज पहले, मैं फायरफॉक्स का उपयोग करके खुशी-खुशी नेट ब्राउज़ कर रहा था, जब अचानक, ब्राउज़र पुनः आरंभ हुआ, और जब यह फिर से लॉन्च हुआ, तो मैंने एक पीला चेतावनी संदेश देखा कि मेरे ऐड-ऑन अक्षम कर दिए गए हैं क्योंकि उन्हें सत्यापित नहीं किया जा सकता था। एडब्लॉक प्लस, नोस्क्रिप्ट और ग्रीज़मंकी बस गायब हो गए