📘 CodingMarble Learn

AI में खोज एल्गोरिदम: कदम-दर-कदम रास्ता ढूँढना

AI की बहुत-सी समस्याएँ शुरू से लक्ष्य तक रास्ता ढूँढने की होती हैं: नक्शे पर रास्ता, पहेली का हल या खेल की अच्छी चाल। हम समस्या को अवस्था-आकाश (state space) की तरह लिखते हैं: अवस्थाएँ (स्थितियाँ) और उन्हें जोड़ने वाली क्रियाएँ (चालें)। खोज एल्गोरिदम इस आकाश को एक तय क्रम में खोलता है। अंधी खोज (BFS, DFS) को लक्ष्य की दिशा का पता नहीं होता। सूचित खोज ह्यूरिस्टिक, यानी लक्ष्य की दूरी का समझदार अनुमान, इस्तेमाल करती है और बहुत कम अवस्थाएँ खोलती है। A* अब तक की लागत g और अनुमान h को जोड़ता है; अगर अनुमान कभी ज़्यादा न हो, तो यह सबसे छोटा रास्ता ही देता है।

🎬 कदम-दर-कदम कहानी

  1. यह एक भूल-भुलैया है। हर खाना एक अवस्था है। रोबोट एक कदम ऊपर, नीचे, दाएँ या बाएँ चल सकता है। लक्ष्य है S से G तक पहुँचना।
  2. हर अवस्था से कुछ चालें निकलती हैं। S से एक कदम दूर वाले खाने चमकते हैं, फिर दो कदम वाले। सारी अवस्थाएँ और चालें मिलकर अवस्था-आकाश बनाती हैं।
  3. चौड़ाई-पहले खोज (BFS) पहले 1 कदम दूर के सारे खाने खोलती है, फिर 2 कदम, फिर 3, पानी की लहर की तरह। इसे G का पता नहीं, फिर भी यह सबसे छोटा रास्ता देती है।
  4. गहराई-पहले खोज (DFS) एक रास्ते पर जितना हो सके अंदर जाती है और अटकने पर पीछे लौटती है। इसे कम याद रखना पड़ता है, पर रास्ता लंबा हो सकता है।
  5. सूचित खोज हर खाने को एक अनुमान h देती है: G तक की दूरी। A* सबसे छोटे g + h वाला खाना पहले खोलता है। गिनिए: बहुत कम खाने खुले।
  6. अब आपकी बारी। एल्गोरिदम चुनिए, खानों पर टैप करके दीवार बनाइए या हटाइए और चलाओ दबाइए। पहले अनुमान लगाइए कि कौन सबसे कम खाने खोलेगा, फिर जाँचिए।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

क्या अवस्था-आकाश और भूल-भुलैया की तस्वीर एक ही चीज़ है?

पूरी तरह नहीं। भूल-भुलैया उसे दिखाने का एक तरीका है। अवस्था-आकाश हर संभव स्थिति और उनके बीच की चालें हैं। चरण 2 में S से एक और दो चाल दूर की अवस्थाएँ चमकती हैं।

BFS अंधी है, फिर भी सबसे छोटा रास्ता कैसे देती है?

वह 2 चाल दूर के किसी खाने से पहले 1 चाल दूर के सारे खाने खोलती है, इसलिए जब पहली बार G मिलता है, उससे छोटा रास्ता हो ही नहीं सकता। चरण 3 की लहर देखिए।

अगर DFS का रास्ता लंबा है तो उसे कोई क्यों इस्तेमाल करे?

DFS केवल मौजूदा रास्ता याद रखती है, इसलिए बहुत कम मेमोरी लेती है, और रिकर्शन से आसानी से लिखी जाती है। चरण 4 में उसे गोता लगाते और लौटते देखिए।

क्या ह्यूरिस्टिक को दीवारों का पता होता है?

नहीं। मैनहट्टन दूरी दीवारों को नहीं देखती। इसी से वह तेज़ है और कभी ज़्यादा अनुमान नहीं लगाती। चरण 5 में रंग केवल G की दूरी दिखाते हैं।

क्या A* हमेशा सबसे अच्छा है?

A* को अच्छी ह्यूरिस्टिक चाहिए और वह बहुत अवस्थाएँ याद रखता है। काम का अनुमान न हो तो वह BFS जैसा ही चलता है। फ़्री प्ले में मुश्किल दीवार बनाकर तुलना कीजिए।

AI में खोज और अवस्था-आकाश

बहुत-सी समस्याएँ खोज से हल होती हैं: संभव कदमों को व्यवस्थित ढंग से आज़माना, जब तक लक्ष्य न मिले।

कंप्यूटर से खोज करवाने के लिए समस्या को अवस्था-आकाश (state space) की तरह लिखते हैं:

अवस्थाएँ और चालें मिलकर एक ग्राफ़ या खोज-वृक्ष (search tree) बनाती हैं। शुरू से लक्ष्य तक का रास्ता हल है; सबसे सस्ता हल इष्टतम (optimal) है।

खुलने का इंतज़ार कर रही अवस्थाओं की सूची को फ़्रंटियर (frontier) कहते हैं। किसी अवस्था को खोलने का मतलब है उसके पड़ोसी देखना और नए पड़ोसियों को फ़्रंटियर में डालना। अलग-अलग एल्गोरिदम बस यह तय करते हैं कि फ़्रंटियर से अगली अवस्था कौन-सी खुलेगी।

अंधी (अनसूचित) खोज: BFS और DFS

अंधी (uninformed) खोज को केवल समस्या के नियम पता होते हैं। लक्ष्य किस दिशा में है, यह उसे नहीं पता।

चौड़ाई-पहले खोज (BFS)

BFS स्तर-दर-स्तर खोलती है: पहले 1 चाल दूर की सारी अवस्थाएँ, फिर 2 चाल दूर की। इसका फ़्रंटियर एक कतार (queue) है: जो पहले आया, वह पहले खुला।

गहराई-पहले खोज (DFS)

DFS एक रास्ते पर गहरे जाती है और अटकने पर ही पीछे लौटती (backtrack) है। इसका फ़्रंटियर एक ढेर (stack) है: जो आख़िर में आया, वह पहले खुला।

दूसरी अंधी विधियाँ: एकसमान-लागत खोज (uniform-cost), जो अब तक के सबसे सस्ते रास्ते को खोलती है, और क्रमिक गहराई (iterative deepening), जो गहराई सीमा 1, 2, 3… के साथ बार-बार DFS चलाती है।

सूचित खोज: ह्यूरिस्टिक, लालची खोज और A*

ह्यूरिस्टिक (heuristic) h(n) एक तेज़, समझदार अनुमान है कि अवस्था n लक्ष्य से कितनी दूर है। ग्रिड में अच्छा अनुमान है मैनहट्टन दूरी: h = |x − xG| + |y − yG|। यह दीवारों को नज़रअंदाज़ करती है, इसलिए जल्दी निकलती है।

अगर ह्यूरिस्टिक स्वीकार्य (admissible) है, यानी असली दूरी से कभी ज़्यादा अनुमान नहीं लगाती, तो A* हमेशा सबसे छोटा रास्ता देता है। अनुमान जितना सच के क़रीब, A* उतनी कम अवस्थाएँ खोलता है।

सड़क नक्शे पर सीधी-रेखा दूरी और ग्रिड पर मैनहट्टन दूरी, दोनों स्वीकार्य हैं। h = 0 रखें तो A* एकसमान-लागत खोज बन जाता है।

जिन समस्याओं में समझदार खोज चाहिए: रास्ते, पहेलियाँ, खेल

रास्ते: नक्शे पर मार्ग, रोबोट की चाल, नेटवर्क रूटिंग। अवस्थाएँ जगहें हैं; लागत दूरी या समय। आम तौर पर A* चुना जाता है।

पहेलियाँ: 8-पज़ल, रूबिक क्यूब, सुडोकू, पानी के जग वाली पहेली। अवस्थाओं की संख्या बहुत तेज़ी से बढ़ती है (संयोजनात्मक विस्फोट), इसलिए अंधी खोज बहुत धीमी पड़ती है और ह्यूरिस्टिक चाहिए।

खेल: शतरंज या टिक-टैक-टो में दो खिलाड़ी बारी-बारी चलते हैं। खेल-वृक्ष (game tree) में मेरी चालें, फिर विरोधी के जवाब होते हैं। मिनीमैक्स (minimax) मानता है कि विरोधी अपनी सबसे अच्छी चाल चलेगा: मैं वह चाल चुनता हूँ जिसका सबसे बुरा नतीजा भी मेरे लिए सबसे अच्छा हो। अल्फ़ा-बीटा छँटाई उन शाखाओं को छोड़ देती है जो फ़ैसला नहीं बदल सकतीं। प्रोग्राम एक तय गहराई पर रुककर मूल्यांकन फलन (स्थिति का अनुमानित अंक) लगाते हैं।

आधा-आधा करके खोज: बाइनरी सर्च और द्विभाजन

कुछ खोजें भूल-भुलैया में नहीं, बल्कि क्रमबद्ध सूची या संख्या रेखा पर होती हैं। यहाँ हर कदम पर काम आधा हो जाता है।

दोनों में समस्या की जानकारी (सूची क्रमबद्ध है, चिह्न बदलता है) से सब कुछ जाँचने से बचते हैं; यही ह्यूरिस्टिक का विचार है।

करके देखें

3D में: फ़्री प्ले में लक्ष्य से दूर एक छेद वाली लंबी दीवार बनाइए। अनुमान लगाइए: क्या A* अब भी BFS से कम खाने खोलेगा? दोनों चलाकर "खुले खाने" और "रास्ते की लंबाई" लिखिए।

घर पर: काग़ज़ पर 5 × 5 ग्रिड बनाइए, कोनों में S और G रखिए और 5 दीवारें रंगिए। किनारे पर एक कतार लिखते हुए BFS जिस क्रम में खाने खोलेगी, वे नंबर लिखिए। फिर हर खाने में G तक मैनहट्टन दूरी लिखकर A* से दोहराइए।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. 3 × 3 ग्रिड में रोबोट ऊपर-बाएँ कोने से नीचे-दाएँ कोने तक जाना है, कोई दीवार नहीं। अवस्था-आकाश लिखिए।

अवस्थाएँ: 9 खाने (पंक्ति, स्तंभ)। प्रारंभिक अवस्था: (1,1)। क्रियाएँ: ग्रिड के अंदर रहते हुए ऊपर, नीचे, दाएँ, बाएँ। लक्ष्य-जाँच: अवस्था = (3,3)। पथ-लागत: चालों की गिनती। सबसे छोटा हल 4 चालें, जैसे दाएँ, दाएँ, नीचे, नीचे।

2. एक वृक्ष में A के बच्चे B और C हैं। B के बच्चे D, E और C के बच्चे F, G हैं। BFS और DFS किस क्रम में खोलेंगी (बच्चे बाएँ से दाएँ)?

BFS स्तर-दर-स्तर: A, B, C, D, E, F, G। DFS पहले गहराई: A, B, D, E, C, F, G।

3. ग्रिड पर लक्ष्य G (6, 2) पर है। खाने (2, 5) का मैनहट्टन अनुमान निकालिए। अगर वहाँ तक की लागत g = 3 है, तो A* का f क्या होगा?

h = |2 − 6| + |5 − 2| = 4 + 3 = 7। f = g + h = 3 + 7 = 10।

4. A* के फ़्रंटियर में दो खाने हैं: P (g = 4, h = 5) और Q (g = 6, h = 2)। पहले कौन खुलेगा? लालची खोज किसे खोलेगी?

A*: f(P) = 9, f(Q) = 8, तो Q पहले। लालची खोज केवल h देखती है: h(Q) = 2 < 5, तो वह भी Q खोलती है। दूसरे मामलों में दोनों अलग हो सकते हैं, जैसे g = 2, h = 5 (f = 7) बनाम g = 8, h = 1 (f = 9): A* पहला चुनेगा, लालची दूसरा।

5. क्रमबद्ध सूची 3, 8, 15, 21, 29, 37, 44, 52, 60 में बाइनरी सर्च से 37 ढूँढिए।

बीच वाला (5वाँ) = 29; 37 > 29, तो 37, 44, 52, 60 रखो। बीच = 44 (4 में से दूसरा); 37 < 44, तो 37 बचा। 3 बार देखने में मिला; एक-एक करके देखने में 6 बार लगता।

6. टिक-टैक-टो में मेरी बारी है। चाल X के बाद (विरोधी के सबसे अच्छे जवाब पर) नतीजे +1 और −1 हैं; चाल Y के बाद 0 और 0। मिनीमैक्स कौन-सी चाल चुनेगा?

मिनीमैक्स मानता है कि विरोधी मेरे लिए सबसे बुरा नतीजा चुनेगा। X का सबसे बुरा = −1, Y का = 0। इनमें बेहतर 0 है, तो मिनीमैक्स Y चलता है (हार का ख़तरा लेने की बजाय पक्का ड्रॉ)।

आम गलतियाँ

अभ्यास क्विज़

1. भूल-भुलैया में "अवस्था" क्या है?
2. कौन-सी खोज 2 चाल दूर की किसी अवस्था से पहले 1 चाल दूर की सारी अवस्थाएँ खोलती है?
3. ह्यूरिस्टिक है:
4. A* फ़्रंटियर से किस सबसे छोटे मान वाली अवस्था चुनता है?
5. कौन-सी खोज ढेर (stack) इस्तेमाल करती है और अटकने पर पीछे लौटती है?

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

अनसूचित और सूचित खोज में क्या अंतर है?

अनसूचित (अंधी) खोज, जैसे BFS और DFS, केवल समस्या के नियम इस्तेमाल करती है। सूचित खोज, जैसे लालची और A*, लक्ष्य की दूरी का अनुमान (ह्यूरिस्टिक) भी इस्तेमाल करके तय करती है कि अगली अवस्था कौन-सी खोलनी है।

AI में ह्यूरिस्टिक क्या है?

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

A* इष्टतम क्यों है?

अगर उसकी ह्यूरिस्टिक बची हुई असली लागत से कभी ज़्यादा अनुमान नहीं लगाती, तो छोटा रास्ता फ़्रंटियर में इंतज़ार कर रहा हो तब A* लंबे रास्ते पर ख़त्म नहीं हो सकता। इसलिए पहला पूरा रास्ता ही सबसे छोटा होता है।

यह कहाँ पढ़ाया जाता है

पोलैंडLiceum ogólnokształcące, klasa IIIDesigning and programming algorithms (I + II)
दक्षिण कोरिया고등학교 2학년AI and intelligent reasoning

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ