এ* (A*) সার্চ
কল্পনা করুন আপনি জিপিএস (GPS) দিয়ে পথ চলছেন। ডাইকস্ট্রার অ্যালগরিদম এমন একটি জিপিএসের মতো যার গন্তব্য কোথায় সে সম্পর্কে কোনো ধারণা নেই — এটি পুকুরে ঢিল ছোড়ার মতো সমানভাবে সব দিকে ছড়িয়ে পড়ে, যতক্ষণ না এটি আপনার গন্তব্যে পৌঁছায়।
এ* (A-star) হলো এমন একটি জিপিএস যা মোটামুটিভাবে জানে গন্তব্য কোন দিকে। সব দিকে ছড়িয়ে পড়ার পরিবর্তে, এটি হিউরিস্টিক (heuristic) নামক একটি অনুমানের সাহায্যে গন্তব্যের দিকে অনুসন্ধানকে পক্ষপাতদুষ্ট (bias) করে। ফলাফল: এটি অনেক কম নোড অন্বেষণ করে গন্তব্যে পৌঁছায়।
মূল্যায়ন ফাংশন (The Evaluation Function): f(n) = g(n) + h(n)
প্রতিটি নোড n একটি অগ্রাধিকার স্কোর পায়:
- g(n) — শুরু থেকে n পর্যন্ত এখন পর্যন্ত জানা সেরা পথের প্রকৃত খরচ
- h(n) — n থেকে লক্ষ্য পর্যন্ত খরচের হিউরিস্টিক অনুমান
- f(n) = g(n) + h(n) — n এর মধ্য দিয়ে যাওয়া সবচেয়ে সস্তা পথের আনুমানিক মোট খরচ
অগ্রাধিকার কিউ (priority queue) f(n) দ্বারা সাজানো হয়। কম আনুমানিক মোট খরচ সহ নোডগুলো আগে প্রসারিত হয়। এটি স্বাভাবিকভাবেই অনুসন্ধানকে গন্তব্যের দিকে নিয়ে যায়।
যখন সমস্ত n এর জন্য h(n) = 0 হয়, তখন f(n) = g(n) হয় এবং এ* হুবহু ডাইকস্ট্রার অ্যালগরিদমে পরিণত হয়। এ* হলো একটি কঠোর সাধারণীকরণ (strict generalization)।
গ্রহণযোগ্যতা (Admissibility) — নির্ভুলতার চাবিকাঠি
একটি হিউরিস্টিক h গ্রহণযোগ্য হবে যদি এটি কখনও প্রকৃত খরচকে বেশি অনুমান না করে: সমস্ত n এর জন্য h(n) ≤ actual_cost(n, goal)।
যদি h বেশি অনুমান করে, তবে এ* সর্বোত্তম পথটিকে কম অগ্রাধিকার দিতে পারে (ভেবে যে এটি বাস্তবের চেয়ে বেশি ব্যয়বহুল) এবং একটি উপ-সর্বোত্তম (suboptimal) পথে থিতু হতে পারে। গ্রহণযোগ্যতা গ্যারান্টি দেয় যে এ* প্রথমবার গন্তব্যে পৌঁছালে, তা সর্বোত্তম পথ দিয়েই হবে।
গ্রহণযোগ্য হিউরিস্টিকের উদাহরণ:
- ম্যানহাটন দূরত্ব (Manhattan distance) |Δx| + |Δy| — ৪-দিকের গ্রিড চলাচলের জন্য
- ইউক্লিডীয় দূরত্ব (Euclidean distance) √(Δx² + Δy²) — মুক্ত-দিকের চলাচলের জন্য
ধারাবাহিকতা (Consistency) — দক্ষতার গ্যারান্টি
একটি শক্তিশালী বৈশিষ্ট্য: h ধারাবাহিক হবে যদি c খরচের প্রতিটি প্রান্ত (n, n') এর জন্য আমাদের কাছে h(n) ≤ c + h(n') থাকে। এটি হিউরিস্টিকের ক্ষেত্রে প্রযোজ্য ত্রিভুজ অসমতা (triangle inequality)। ধারাবাহিকতা গ্রহণযোগ্যতা বোঝায় এবং অতিরিক্তভাবে নিশ্চিত করে যে প্রতিটি নোড কেবল একবার প্রক্রিয়া করা হয় — ডাইকস্ট্রার মতো কোনো পুনরায় সম্প্রসারণের (re-expansions) প্রয়োজন নেই।
ব্যবহারিক প্রভাব
১০০০×১০০০ গ্রিডে, কোনো পথ খুঁজে পেতে ডাইকস্ট্রা প্রায় ৫০০,০০০ নোড অন্বেষণ করতে পারে। ম্যানহাটন দূরত্বের সাথে এ* হয়তো মাত্র ৫,০০০ অন্বেষণ করতে পারে — ১০০ গুণ গতি বৃদ্ধি। হিউরিস্টিক যত ভালো হবে (অতিক্রম না করে প্রকৃত খরচের কাছাকাছি), এ* তত কম নোড অন্বেষণ করবে।
কখন এ* বনাম ডাইকস্ট্রা ব্যবহার করবেন
এ* ব্যবহার করুন যখন: আপনার একটি একক লক্ষ্য আছে এবং একটি অর্থপূর্ণ হিউরিস্টিক উপলব্ধ। ডাইকস্ট্রা ব্যবহার করুন যখন: আপনার সব গন্তব্যের জন্য ক্ষুদ্রতম পথের প্রয়োজন, অথবা কোনো ভালো হিউরিস্টিক নেই (h = 0 এমনিতেই ডাইকস্ট্রাতে পরিণত হয়)। গেম পাথফাইন্ডিং, জিপিএস নেভিগেশন এবং রোবোটিক্সে এ* একটি স্ট্যান্ডার্ড অ্যালগরিদম।