কীভাবে * প্যাথফাইন্ডিং কাজ করে?


67

আমি যে * প্যাথফাইন্ডিংয়ের কাজ করে সেটিকে একটি মৌলিক স্তরে বুঝতে চাই। যে কোনও কোড বা psuedo- কোড বাস্তবায়ন পাশাপাশি ভিজ্যুয়ালাইজেশন সহায়ক হবে।


এখানে একটি অ্যানিমেটেড জিআইএফ সহ একটি ছোট্ট নিবন্ধ দেওয়া হয়েছে যা চলমান ডিজিজস্ট্রার অ্যালগরিদমকে গতিতে দেখায়।
ইলফুর ওয়েজ

অমিতের এ * পৃষ্ঠাগুলি আমার জন্য একটি ভাল ভূমিকা ছিল। ইউটিউবে আস্টার অ্যালগরিদমের সন্ধানে আপনি প্রচুর ভাল ভিজ্যুয়ালাইজেশন খুঁজে পেতে পারেন ।
jdeseno

আমি এই দুর্দান্ত টিউটোরিয়ালটি খুঁজে পাওয়ার আগে আমি এ * এর বেশ কয়েকটি ব্যাখ্যা দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম: পলিসিটিম্যানাক.আর / গেমস / এস্টার টিউটোরিয়াল। Htm আমি বেশিরভাগ ক্ষেত্রে উল্লেখ করেছি যখন আমি অ্যাকশনস্ক্রিপ্টে এ * এর প্রয়োগ লিখেছিলাম: newarteest.com/flash /astar.html
ঠাট্টা করছেন

4
-1 উইকিপিডিয়া ব্যাখ্যা, উতস কোড, কল্পনা এবং সঙ্গে একটি * নিবন্ধ ... আছে । এখানে কয়েকটি উত্তরের উইকি পৃষ্ঠা থেকে বহিরাগত লিঙ্ক রয়েছে।
ব্যবহারকারী 712092

4
এছাড়াও, কারণ এটি গেম বিকাশকারীদের কাছে অত্যন্ত আগ্রহের একটি জটিল জটিল বিষয়, আমি মনে করি আমরা এখানে তথ্য চাই। আমি জোয়েলকে একবার স্মরণ করেছিলাম যে যখন লোকেরা প্রোগ্রামিংয়ের প্রশ্নগুলি গুগল করে তখন তিনি স্ট্যাকওভারফ্লোকে শীর্ষে পরিণত করতে চান।
ঝকঝকে

উত্তর:


63

দাবি পরিত্যাগী

অনলাইনে পাওয়া যাবে এ * এর প্রচুর কোড-উদাহরণ এবং ব্যাখ্যা। এই প্রশ্নটি প্রচুর দরকারী লিঙ্ক সহ প্রচুর দুর্দান্ত উত্তর পেয়েছে। আমার উত্তরে আমি অ্যালগরিদমের একটি সচিত্র উদাহরণ দেওয়ার চেষ্টা করব, যা কোড বা বর্ণনার চেয়ে বোঝা সহজ হতে পারে।


ডিজকস্ট্রার অ্যালগরিদম

এ * বোঝার জন্য, আমি আপনাকে প্রথমে ডিজকস্ট্রার অ্যালগরিদমটি একবার দেখে নেওয়ার পরামর্শ দিই । ডিজকস্ট্রার অ্যালগরিদম অনুসন্ধানের জন্য যে পদক্ষেপগুলি করবে সে সম্পর্কে আপনাকে গাইড করতে দাও।

আমাদের স্টার্ট নোড Aএবং আমরা সবচেয়ে সংক্ষিপ্ততম পথটি খুঁজতে চাই F। গ্রাফের প্রতিটি প্রান্তের সাথে চলাচলের ব্যয় যুক্ত রয়েছে (প্রান্তগুলির পাশে কালো অঙ্ক হিসাবে চিহ্নিত)। আমাদের লক্ষ্যটি হ'ল গ্রাফের প্রতিটি ভার্টেক্স (বা নোড) এর সর্বনিম্ন ভ্রমণ ব্যয়ের মূল্যায়ন করা যতক্ষণ না আমরা আমাদের লক্ষ্য নোডকে আঘাত করি।

ডিজকস্ট্রার সচিত্র, অংশ 1

এটি আমাদের সূচনার পয়েন্ট। আমাদের পরীক্ষা করার জন্য একটি তালিকা নোড রয়েছে, এই তালিকাটি বর্তমানে:

{ A(0) }

Aএর ব্যয় হয়েছে 0, অন্যান্য সমস্ত নোডগুলি অনন্ততে সেট করা আছে (একটি সাধারণ বাস্তবায়নে এটি এমন int.MAX_VALUEবা অনুরূপ কিছু হবে )।

ডিজকস্ট্রার সচিত্র, অংশ ২

আমরা আমাদের নোডের তালিকা থেকে সর্বনিম্ন ব্যয়ের সাথে নোডটি নিই (যেহেতু আমাদের তালিকায় কেবল এটি রয়েছে A, এটি আমাদের প্রার্থী) এবং এর সমস্ত প্রতিবেশী ঘুরে দেখি। আমরা প্রতি প্রতিবেশীর ব্যয় নির্ধারণ করেছি :

Cost_of_Edge + Cost_of_previous_Node

এবং পূর্ববর্তী নোডের ট্র্যাক রাখুন (নোডের নীচে ছোট গোলাপী বর্ণ হিসাবে দেখানো হয়েছে)। Aএখনই সমাধান (লাল) হিসাবে চিহ্নিত করা যেতে পারে, যাতে আমরা এটি আবার দেখতে না। আমাদের প্রার্থীদের তালিকাটি এখন এমন দেখাচ্ছে:

{ B(2), D(3), C(4) }

ডিজকস্ট্রার চিত্রিত, অংশ 3

আবার, আমরা আমাদের তালিকা ( B) থেকে সর্বনিম্ন ব্যয়ের সাথে নোড নিয়েছি এবং এর প্রতিবেশীদের মূল্যায়ন করি। পাথটি Dবর্তমান ব্যয়ের চেয়ে ব্যয়বহুল D, সুতরাং এই পথটি ফেলে দেওয়া যেতে পারে। Eআমাদের প্রার্থীদের তালিকায় যোগ করা হবে, যা এখন দেখায়:

{ D(3), C(4), E(4) }

ডিজকস্ট্রার সচিত্র, অংশ 4

পরের নোড এখন পরীক্ষা করা হয় D। সংযোগটি Cবাতিল করা যেতে পারে, কারণ পথটি বর্তমানে ব্যয় ব্যতির চেয়ে কম নয় । Eযদিও আমরা একটি আরও ছোট পথ খুঁজে পেয়েছি, সুতরাং এর জন্য ব্যয় Eএবং এর আগের নোড আপডেট করা হবে। আমাদের তালিকাটি এখন এটির মতো দেখাচ্ছে:

{ E(3), C(4) }

ডিজকস্ট্রার সচিত্র, অংশ 5

আমরা যেমনটি আগে করেছি, আমরা আমাদের তালিকা থেকে সর্বনিম্ন ব্যয়ের সাথে নোড পরীক্ষা করি, যা এখন EEকেবলমাত্র একটি অমীমাংসিত প্রতিবেশী রয়েছে, এটি লক্ষ্য নোডও। লক্ষ্য নোডে পৌঁছানোর ব্যয়টি সেট করা হয় 10এবং এর আগের নোডটি সেট করা হয় E। আমাদের প্রার্থীদের তালিকাটি এখন এমন দেখাচ্ছে:

{ C(4), F(10) }

ডিজকস্ট্রার সচিত্র, অংশ।

পরবর্তী আমরা পরীক্ষা করি C। আমরা এর জন্য ব্যয় এবং পূর্ববর্তী নোড আপডেট করতে পারি F। যেহেতু আমাদের তালিকার এখন Fসর্বনিম্ন ব্যয়ের সাথে নোড রয়েছে, তাই আমরা সম্পন্ন করেছি। আমাদের সংক্ষিপ্ততম নোডগুলি ব্যাকট্র্যাক করে আমাদের পথটি তৈরি করা যেতে পারে।


একটি * অ্যালগরিদম

সুতরাং আপনি ভাবতে পারেন যে আমি কেন * অ্যালগোরিদমের পরিবর্তে আপনাকে ডিজজস্ট্রাকে ব্যাখ্যা করেছি ? ঠিক আছে, কেবলমাত্র পার্থক্য হ'ল আপনি কীভাবে আপনার প্রার্থীদের ওজন করবেন (বা বাছাই করুন)। ডিজকস্ট্রার সাথে এটি:

Cost_of_Edge + Cost_of_previous_Node

এ * এর সাথে এটি:

Cost_of_Edge + Cost_of_previous_Node + Estimated_Cost_to_reach_Target_from(Node)

যেখানে Estimated_Cost_to_reach_Target_fromসাধারণত হিউরিস্টিক ফাংশন বলা হয়। এটি এমন একটি ফাংশন যা লক্ষ্য নোডে পৌঁছানোর জন্য ব্যয়টি অনুমান করার চেষ্টা করবে। একটি ভাল হিউরিস্টিক ফাংশন অর্জন করবে যে লক্ষ্যটি খুঁজে পেতে কম নোডের পরিদর্শন করতে হবে। যদিও ডিজকস্ট্রার অ্যালগরিদম সর্বত্র প্রসারিত হবে, তবে এ * (হিউরিস্টিককে ধন্যবাদ) লক্ষ্যটির দিকে অনুসন্ধান করবে।

হিউরিস্টিক্স সম্পর্কে অমিতের পৃষ্ঠাতে সাধারণ হিউরিস্টিক্স সম্পর্কে ভাল ধারণা রয়েছে।


2
এটি লক্ষণীয় যে হিউরিস্টিক সর্বদা সেরা রুট সন্ধানের জন্য অনুসন্ধানকে চাপ দেয় না। উদাহরণস্বরূপ, যদি আপনার ধর্মতাত্ত্বিক লক্ষ্যটির দূরত্ব হয় তবে ব্যবহার্য রুটটি মানচিত্রের প্রান্তের চারপাশে থাকে - অনুসন্ধানটি এই ক্ষেত্রে সঠিক রুট হওয়ার আগে পুরো মানচিত্রটি অনুসন্ধান করবে। অবশ্যই, আপনি অবশ্যই ভাবছেন, এমন কিছু আছে যা আমি পাই না? এটি কাজ করে না! - বোঝার বিষয়টি হ'ল একজন হিউরিস্টিকের উদ্দেশ্য হ'ল বেশিরভাগ ক্ষেত্রে অনুসন্ধান সরিয়ে দেওয়া এবং আপনার কাজটি আপনার সুনির্দিষ্ট প্রয়োজনের জন্য সমস্ত উপলব্ধ সমাধানগুলির মধ্যে 'সেরা' এটি খুঁজে পাওয়া উচিত।
স্যার ইয়াকালোট

2
@ আশেরইনহর্ন এটি এখনও জিক্রাস্ট্রের মতো একটি অজ্ঞাত অনুসন্ধানের চেয়ে ভাল (বা সবচেয়ে খারাপ ক্ষেত্রে সমান) হতে চলেছে।
বামমজ্যাক

হ্যাঁ হ্যাঁ, আপনি একেবারে ঠিক বলেছেন। সম্ভবত আমি অস্পষ্ট ছিলাম, যে উদাহরণটি আমি উপরের মন্তব্যে বলেছিলাম এটি একটি তাত্ত্বিক 'সবচেয়ে খারাপ পরিস্থিতি' এ * এর সাথে হিউরিস্টিক তবে এটি ডিজকস্ট্রার প্রতিটি সময়ই করবে with বেশিরভাগ সময় এ * খুব সাধারণ হিউরিস্টিক সহ আরও ভাল হবে। আমার বক্তব্যটি ছিল হিউরিস্টিক প্রথমে বিভ্রান্ত হতে পারে কারণ 'টার্গেট টু দুরত্ব' সর্বদা প্রতিটি দৃশ্যের জন্য অর্থবোধ করে না - মূল বিষয়টি এটি বেশিরভাগ ক্ষেত্রেই ঘটে।
স্যার ইয়াকালোট

এছাড়াও, এটি দেখুন: qiao.github.io/PathFinding.js/ ভিজুয়াল
ডেভিড

এই উত্তরটি কী ** * সবচেয়ে সংক্ষিপ্ততম পথ পাবে তার গ্যারান্টি অর্থে গৌরবিকভাবে গ্রহণযোগ্য করে তোলে তার একটি উল্লেখ ব্যবহার করতে পারে। (সংক্ষেপে: গ্রাহ্য হওয়ার উদ্দেশ্যে অনুসন্ধানমূলক লক্ষ্য প্রকৃত দূরত্ব অতিরিক্ত অনুমান আবশ্যক কখনো অ গ্রাহ্য হিউরিস্টিক কখনও কখনও দরকারী হতে পারে, কিন্তু তারা একটি * দরুণ পর্যাপ্ত পাথ ফিরে যাওয়ার কারণ হতে পারে।।)
Ilmari Karonen

26

একটি * পাথ সন্ধান একটি সেরা-প্রথম ধরণের অনুসন্ধান যা অতিরিক্ত হিউরিস্টিক ব্যবহার করে।

আপনাকে প্রথমে যা করতে হবে তা হ'ল আপনার অনুসন্ধানের অঞ্চলটি ভাগ করে নেওয়া। এই ব্যাখ্যার জন্য মানচিত্রটি টাইলগুলির একটি বর্গাকার গ্রিড, কারণ বেশিরভাগ 2 ডি গেমগুলি টাইলগুলির একটি গ্রিড ব্যবহার করে এবং কারণ এটি কল্পনা করা সহজ। তবে খেয়াল করুন যে অনুসন্ধানের অঞ্চলটি আপনি যেভাবে চান তা ভাঙ্গতে পারে: একটি হেক্স গ্রিড সম্ভবত, বা ঝুঁকির মতো স্বেচ্ছাসেবী আকারগুলিও। বিভিন্ন মানচিত্রের অবস্থানগুলিকে "নোডস" হিসাবে উল্লেখ করা হয় এবং এই অ্যালগরিদম যে কোনও সময় আপনার কাছে ট্র্যাভার্স করার জন্য একগুচ্ছ নোডের সাথে কাজ করবে এবং নোডগুলির মধ্যে সংযোগ সংজ্ঞায়িত হবে।

যাইহোক, একটি প্রদত্ত টাইল শুরু করে:

  • প্রারম্ভিক টাইলের চারদিকে 8 টি টাইলগুলি "স্কোর" করা হয় ক এর উপর ভিত্তি করে) বর্তমান টাইল থেকে পরবর্তী টাইলের দিকে যাওয়ার ব্যয় (সাধারণত অনুভূমিক বা উল্লম্ব আন্দোলনের জন্য 1, বর্গাকার (2) তির্যক আন্দোলনের জন্য)।

  • তারপরে প্রতিটি টাইলকে অতিরিক্ত "হিউরিস্টিক" স্কোর দেওয়া হয় - প্রতিটি টালিগুলিতে যাওয়ার জন্য আপেক্ষিক মূল্যের একটি অনুমান। বিভিন্ন হিউরিস্টিকস ব্যবহার করা হয়, প্রদত্ত টাইল এবং শেষ টাইলের কেন্দ্রগুলির মধ্যে সরল-লাইন দূরত্ব সবচেয়ে সহজ।

  • তারপরে বর্তমান টাইলটি "বন্ধ" হয়ে গেছে এবং এজেন্টটি প্রতিবেশী টাইলের দিকে চলে যা খোলা, সর্বনিম্ন চলাচল স্কোর এবং সর্বনিম্ন হিউরিস্টিক স্কোর রয়েছে।

  • লক্ষ্য নোড না পৌঁছানো পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করা হয়, বা আর কোনও খোলা নোড নেই (যার অর্থ এজেন্ট অবরুদ্ধ রয়েছে)।

এই পদক্ষেপগুলি চিত্রিত চিত্রগুলির জন্য, এই ভাল শিক্ষানবিশ টিউটোরিয়ালটি পড়ুন

মূলত হিউরিস্টিক উন্নতিতে কিছু উন্নতি করা যেতে পারে:

  • ভূখণ্ডের পার্থক্য, রুক্ষতা, খাড়া হওয়া ইত্যাদি বিবেচনায় নেওয়া

  • কোনও কোনও কার্যকর পথ নয় এমন মানচিত্রের অংশগুলি ব্লক করতে গ্রিড জুড়ে "ঝাড়ু" ব্যবহার করা কখনও কখনও কার্যকর: উদাহরণস্বরূপ এজেন্টের মুখোমুখি একটি ইউ আকার। কোনও সুইপ পরীক্ষা ছাড়াই এজেন্ট প্রথমে ইউ তে প্রবেশ করত, ঘুরে দাঁড়াত, তারপরে ছেড়ে ইউ এর প্রান্তে ঘুরে যেত। "সত্যিকারের" বুদ্ধিমান এজেন্ট ইউ আকৃতির ফাঁদটি নোট করে কেবল এড়াতে পারে। স্যুইপিং এটিকে অনুকরণে সহায়তা করতে পারে।


1
গ্রাফ, নোড, প্রান্তের সাথে একটি ব্যাখ্যা কেবল টাইলগুলির চেয়ে আরও স্পষ্ট হবে। এটি বুঝতে সাহায্য করে না যে আপনার গেমের স্পেস স্ট্রাকচার যাই হোক না কেন আপনি এই স্পেসে পজিশনের তথ্যের সাথে আন্তঃসংযোগযুক্ত হিসাবে একই অ্যালগরিদম প্রয়োগ করতে পারেন।
ক্লাইম

আমি তর্ক করব যে আসলে কম পরিষ্কার হবে, কারণ এটি কল্পনা করা শক্ত। তবে হ্যাঁ এই ব্যাখ্যাটিতে উল্লেখ করা উচিত যে একটি টাইল গ্রিডের প্রয়োজন নেই; প্রকৃতপক্ষে, আমি সেই বিন্দুটি সম্পাদনা করব
মিনিট

14

এটি সেরা থেকে অনেক দূরে, তবে এটি কয়েক বছর আগে সি ++ এ আমি * এর কাজটি করেছি ।

পুরো অ্যালগরিদমকে ব্যাখ্যা করার চেষ্টা করার চেয়ে আমি আপনাকে উত্সগুলিতে দেখিয়েছি এটি আরও ভাল। এছাড়াও, আপনি যেমন উইকি নিবন্ধটি পড়েছেন, ডেমো দিয়ে খেলুন এবং দেখুন কীভাবে এটি কাজ করছে তা ভিজ্যুয়ালাইজ করতে পারেন কিনা। আপনার একটি নির্দিষ্ট প্রশ্ন থাকলে একটি মন্তব্য দিন।

  1. উইকিপিডিয়ায় একটি *
  2. একটি * জাভা প্রদর্শন

4
আপনার পাইথনের উদাহরণ সি ++ এ রয়েছে।
অ্যালুমিনিয়ামের

@ ফিনিশ - কেউ এটি ধরতে দেখে ভাল লাগছে! প্রতিদিনের ক্রিয়াকলাপগুলি আজকাল পাইথনকে ঘিরে। ধন্যবাদ!
ডেভিড ম্যাকগ্রা

3
আপনার সি ++ উদাহরণটি সি হিসাবেও হতে পারে
মিথ্যাচারিত ক্যাভিয়ার

4
উদাহরণটি পাশাপাশি এটির সমস্ত কাঠামোর জন্য এসেম্বলারের মধ্যে থাকতে পারে। এটি এমনকি এ * নয়, এটি কীভাবে গৃহীত উত্তর?

4
দুঃখিত, এটি সমপরিমাণ পর্যন্ত নয়, শুরু করার পরে এটি আমার প্রথম কোডিং প্রচেষ্টা ছিল। মন্তব্যগুলিতে কিছু অবদান রাখতে / নিজের সমাধানটি ভাগ করার জন্য পোস্টটি সম্পাদনা করতে নির্দ্বিধায় অনুভব করুন।
ডেভিড ম্যাকগ্রা

6

আপনি পাথ ফাইন্ডিং এ অ্যাক্টিভুট সম্পর্কিত নিবন্ধটি পেতে পারেন । এটি এ * এবং ডিজকস্ট্রার অ্যালগোরিদম এবং তাদের মধ্যে পার্থক্য উভয়ের উপরে চলে যায়। এটি ফ্ল্যাশ বিকাশকারীদের দিকে আগ্রহী, তবে আপনি ফ্ল্যাশ ব্যবহার না করলেও এটি তত্ত্ব সম্পর্কে কিছুটা ভাল অন্তর্দৃষ্টি প্রদান করা উচিত should


4

এ * এবং ডিজকস্ট্রার অ্যালগোরিদমের সাথে ডিল করার সময় একটি বিষয় যা কল্পনা করা গুরুত্বপূর্ণ তা হ'ল এ * নির্দেশিত; এটি কোন দিকটি দেখার জন্য "অনুমান" করে কোনও নির্দিষ্ট পয়েন্টের সবচেয়ে সংক্ষিপ্ত পথটি সন্ধান করার চেষ্টা করে। ডিজকস্ট্রার অ্যালগরিদম / প্রতি / পয়েন্টের সবচেয়ে সংক্ষিপ্ত পথ খুঁজে পায়।


1
এটি * এবং ডিজকস্ট্রার মধ্যে পার্থক্যের সত্যিকারের বর্ণনা নয়। এটি সত্য যে ডিজকস্ট্রা সমস্ত পয়েন্টগুলিতে একক উত্স সলভ করে, তবে গেমগুলিতে ব্যবহার করার সময় আপনি লক্ষ্যটির কোনও পথ খুঁজে পাওয়ার সাথে সাথে এটি সাধারণত কেটে যায়। উভয়ের মধ্যে আসল পার্থক্য হ'ল এ * হিউরিস্টিক দ্বারা জানানো হয় এবং কম শাখা নিয়ে সেই লক্ষ্যটি খুঁজে পেতে পারে।

জো এর ব্যাখ্যায় যুক্ত করার জন্য: আপনি যদি এটি ছেড়ে দেন তবে এ * সমস্ত পয়েন্টের পথ খুঁজে পাবে, তবে গেমগুলিতে আমরা সাধারণত তাড়াতাড়ি থামতে চাই। একটি * ডিজজট্রার অ্যালগরিদমের মতো কাজ করে, হিউরিস্টিক ব্যতীত নোডগুলিকে সর্বাধিক প্রতিশ্রুতিবদ্ধ পথগুলি অন্বেষণ করতে সহায়তা করে except আপনি সাধারণত ডিজকস্ট্রার অ্যালগরিদমের চেয়েও আগে থামতে পারেন। উদাহরণস্বরূপ, আপনি যদি মানচিত্রের কেন্দ্র থেকে পূর্ব পাশের দিকে কোনও পথ খুঁজে পেতে চান তবে ডিজকস্ট্রার অ্যালগরিদম সমস্ত দিক থেকে সমানভাবে অন্বেষণ করবে এবং যখন এটি পূর্ব দিকটি খুঁজে পাবে তখন থামবে। এ * পশ্চিমের চেয়ে পূর্ব দিকে বেশি সময় ব্যয় করবে এবং খুব শীঘ্রই সেখানে পৌঁছে যাবে।
amitp

3

সুতরাং ঠিক প্রথম বিবৃতি হিসাবে, এ * একটি গ্রাফ অন্বেষণের অ্যালগরিদমকে কেন্দ্র করে। সাধারণত গেমগুলিতে আমরা হয় টাইলস বা অন্যান্য বিশ্বের জ্যামিতি গ্রাফ হিসাবে ব্যবহার করি তবে আপনি অন্যান্য জিনিসগুলির জন্য এ * ব্যবহার করতে পারেন। গ্রাফ ট্র্যাভারসালের জন্য দুটি উর-অ্যালগরিদম গভীরতা-প্রথম-অনুসন্ধান এবং প্রস্থ-প্রথম-অনুসন্ধান। ডিএফএসে আপনি সর্বদা বর্তমান নোডের ভাইবোনদের দিকে তাকানোর আগে আপনার বর্তমান শাখাটি সম্পূর্ণরূপে অন্বেষণ করুন এবং বিএফএসে আপনি সর্বদা প্রথমে এবং তারপরে বাচ্চাদের দিকে নজর দিন। আপনি যখন কাঙ্ক্ষিত লক্ষ্যের কাছাকাছি পৌঁছে যাচ্ছেন তখন একটি * এইগুলির মধ্যে একটি মাঝারি স্থলটি খুঁজে পাওয়ার চেষ্টা করে যেখানে আপনি কোনও শাখাটি নিখরচায় করেন (সুতরাং আরও ডিএফএসের মতো) তবে কখনও কখনও থামুন এবং কোনও ভাইবোন চেষ্টা করুন যদি এর শাখায় আরও ভাল ফলাফল হতে পারে। আসল গণিত হ'ল আপনি সম্ভাব্য নোডের একটি তালিকা রেখেছিলেন যেখানে অন্বেষণ করতে প্রতিটি যেখানে "সদর্থকতা" রয়েছে স্কোরটি ইঙ্গিত করে যে এটি কোনও ধরণের (বিমূর্ত অর্থে) এটি লক্ষ্যটির নিকট, কম স্কোরগুলি আরও ভাল হচ্ছে (0 এর অর্থ আপনি লক্ষ্যটি পেয়েছেন)। আপনি স্কোরের সর্বনিম্ন প্লাসটি মূল থেকে দূরে নোডের সংখ্যা (যা সাধারণত বর্তমান কনফিগারেশন, বা পাথফাইন্ডিংয়ের বর্তমান অবস্থান) দ্বারা পরবর্তী কোনটি ব্যবহার করবেন তা নির্বাচন করুন। প্রতিবার আপনি কোনও নোড অন্বেষণ করলে আপনি তার সমস্ত শিশুকে এই তালিকায় যুক্ত করুন এবং তারপরে নতুন সেরাটিকে বেছে নিন।


3

বিমূর্ত স্তরে, এ * এটির মতো কাজ করে:

  • আপনি বিশ্বেরকে সংযুক্ত নোডগুলির একটি পৃথক সংখ্যক হিসাবে বিবেচনা করুন, যেমন। একটি গ্রিড, বা একটি গ্রাফ।
  • সেই বিশ্বজুড়ে কোনও পথ খুঁজে পেতে, আপনাকে সেই স্থানের মধ্যে সংলগ্ন 'নোড' এর একটি তালিকা খুঁজে বের করতে হবে, যা শুরু থেকে লক্ষ্য পর্যন্ত নিয়ে যাবে।
  • নির্বোধ পন্থাটি হ'ল: নোডগুলির প্রতিটি সম্ভাব্য ক্রমশক্তি গণনা করুন যা প্রারম্ভ নোড দিয়ে শুরু হয় এবং শেষ নোডে শেষ হয় এবং সস্তারতমটি বেছে নিন। এটি স্পষ্টতই সবচেয়ে ক্ষুদ্রতম জায়গা ছাড়া চিরকালের জন্য গ্রহণ করবে।
  • সুতরাং বিকল্প পদ্ধতির মাধ্যমে বিশ্বব্যাপী কিছু জ্ঞান ব্যবহার করার চেষ্টা করা হয় যা অনুমান করার জন্য প্রথমে কোন অনুমানের বিষয়টি বিবেচনা করা উচিত, এবং প্রদত্ত সমাধানটি মারধর করা যায় কিনা তা জানতে। এই অনুমানকে হিউরিস্টিক বলা হয়।
  • এ * এর একটি হিউরিস্টিক প্রয়োজন যা গ্রহণযোগ্য । এর অর্থ এটি কখনই অত্যুক্তি হয় না।
    • প্যাথফাইন্ডিংয়ের সমস্যার জন্য উত্তম হিউরিস্টিক হ'ল ইউক্লিডিয়ান দূরত্ব কারণ আমরা জানি যে 2 পয়েন্টের মধ্যে সংক্ষিপ্ততম রুটটি একটি সরলরেখা। এটি বাস্তব-জগতের সিমুলেশনে কখনও দূরত্বকে বাড়িয়ে তোলে না।
  • এ * শুরু নোড দিয়ে শুরু হয় এবং সেই নোডের পাশাপাশি প্রতিটি প্রতিবেশী এবং তার প্রতিবেশী প্রতিবেশী ইত্যাদির ক্রমাগত অনুমতিগুলি চেষ্টা করে, পরবর্তী কোন অনুক্রমের চেষ্টা করার সিদ্ধান্ত নেওয়ার জন্য এই তাত্ত্বিক ব্যবহার করে ur
  • প্রতিটি পদক্ষেপে, এ * এখন পর্যন্ত সর্বাধিক প্রতিশ্রুতিবদ্ধ পথটি দেখে এবং পরবর্তী প্রতিবেশী নোডটি বেছে নিয়েছে যা 'বেস্ট' বলে মনে হয়, যা এতদূর ভ্রমণ করা দূরত্বের উপর ভিত্তি করে এবং সেই দিক থেকে আর কতদূর যেতে হবে তার হিউরিস্টিকের অনুমান নোড।
  • যেহেতু এই তাত্ত্বিক কখনও তাত্পর্যপূর্ণ হয় না এবং এ পর্যন্ত ভ্রমণ করা দূরত্বটি সঠিক হিসাবে পরিচিত, এটি সর্বদা সবচেয়ে আশাবাদী পরবর্তী পদক্ষেপটি বেছে নেবে।
    • যদি পরবর্তী পদক্ষেপটি লক্ষ্যে পৌঁছে যায় তবে আপনি জানেন যে এটি শেষ অবস্থান থেকে সবচেয়ে সংক্ষিপ্ত রুটটি খুঁজে পেয়েছে, কারণ এটি বৈধ অবশিষ্টগুলির মধ্যে সবচেয়ে আশাবাদী অনুমান ছিল।
    • যদি এটি লক্ষ্যে না পৌঁছে, তবে পরে থেকে এটি এক্সপ্লোর করার সম্ভাব্য পয়েন্ট হিসাবে বাকি রয়েছে। অ্যালগরিদম এখন পরবর্তী সবচেয়ে সম্ভাব্য সম্ভাবনা চয়ন করে, তাই উপরের যুক্তিটি এখনও প্রয়োগ হয়।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.