কোনও বাধা পেরিয়ে কীভাবে পাথফাইন্ড করবেন?


10

নিম্নলিখিত পরিস্থিতিতে কীভাবে সেরা উপস্থাপন করবেন - এজেন্ট ( @) এর লক্ষ্য ( $) এ পৌঁছানো দরকার । পথটি শূকক ( ~~~) দ্বারা অবরুদ্ধ করা হয়েছে । একটি রেক (বা কিছু অন্যান্য ডিভাইস, যেমন ওয়াটারওয়াকিং বুটস) পাওয়া যায় যা বাধা অতিক্রম করা সম্ভব করবে।

.....~~~...   . ground
...=.~~~...   = rake
.....~~~.$.   ~ water
.@...~~~...   @ agent
.....~~~...   $ goal

কোনও তাত্ক্ষণিকভাবে উপলব্ধ কোনও পথ না থাকলে কীভাবে সঠিকভাবে প্যাথফাইন্ড @করতে $হবে? আমার পথে কেবল ব্যয় করা উচিত না বরং পূর্বশর্তও থাকা উচিত?

ইউপিডি : সমস্যাটি হ'ল লক্ষ্যটি অ্যাক্সেসযোগ্য নয় এবং মানচিত্রের সম্ভাব্য অবজেক্টগুলির মধ্যে রাক কেবল একটি। তাহলে প্রশ্নটি কী "এজেন্টকে বোঝাতে হবে যে এটি রেকের প্রয়োজন?"


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

উত্তর:


6

আমি লক্ষ্য একটি স্ট্যাক সম্পর্কে চিন্তা করছি, pathfinding করতে হবে সটীক :

  • একটি লক্ষ্য দিয়ে শুরু করুন get $
  • $ওয়াটারওয়াকিং সক্ষমতা প্রয়োজন সহ পথটি অনুসন্ধান করার চেষ্টা করুন ।
  • ধাক্কা লক্ষ্য get waterwalking
  • গোল স্ট্যাক এখন get waterwalking, get $
  • কোনওভাবে আবিষ্কার করুন যে রেক জলচলা দেয়, আসুন নৌকার নামকরণ করে।
  • রেকের পথ শীর্ষ লক্ষ্য পৌঁছেছে, এটি স্ট্যাক থেকে পপ করুন, লক্ষ্য get $
  • পথে $- এখন আমাদের সক্ষমতা রয়েছে এবং লক্ষ্যে পৌঁছতে পারে।

1
+1 আমি আমার গেমের সাথে একই রকম কিছু করেছি এবং ইউনিট টাস্ক এবং পাথফাইন্ডিংয়ের আওতায় কিছুক্ষণ আগে এ সম্পর্কে একটি সামান্য পোস্ট লিখেছিলাম ।
MichaelHouse

@ বাইট 6666 রেক ব্যবহার না করে কোনও পথ থাকলে বিশেষ ক্ষেত্রে পরিচালনা করে না, তবে
র‌্যাকটি

@ গেজেট আপনি ঠিক বলেছেন অনুমান করার জন্য এটির জন্য আলাদা পদ্ধতির প্রয়োজন হবে।
zzandy

1
এটি অতিরিক্ত ব্যয় যুক্ত করার বিষয় মাত্র। আপনি যখন জলের মুখোমুখি হন, তখন পানিতে হাঁটার আইটেমটি পাওয়ার ব্যয় যুক্ত করুন। এ * জলপথটি এড়াতে হবে যতক্ষণ না এটি সবচেয়ে সস্তার পথে পরিণত হয়।
মাইকেলহাউস

3

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


+1 আপনার রাকে পানির সাথে এক-দিকের লিঙ্ক তৈরি করুন, জল-স্থল থেকে মৌমাছি বি-ওয়েও লিঙ্কগুলির পাশাপাশি।
লরেন্ট কুইভিদু

জ্যামিতিক অনুসন্ধান এবং বৈশিষ্ট্য অনুসন্ধানকে কীভাবে একত্রে আবদ্ধ করা যায় তা সম্পর্কে আমার স্পষ্ট বোঝা নেই। কিভাবে থেকে যেতে no path from @ to $হবে goto rake, bring it to water, place it, goto $
zzandy

পাথ সন্ধানের সময় @Zandy, প্রতিটি টাইলের জন্য আপনি যদি সম্ভব হয় নিকটতম টাইলগুলিতে যান। আপনার কেবল একটি শর্ত যুক্ত করতে হবে যে যদি বর্তমান নোডটি একটি রেক হয় তবে আপনি খোলার তালিকার জন্য সরাসরি নদীর অন্য পাশ থেকে একটি নোড যুক্ত করতে পারেন।
Ali1S232

তবে আপনি যদি ডিভাইসটি বহন করতে পারেন? আমি ভেবেছিলাম সেটাই তার অর্থ (এবং তাই আমার উত্তর))
কওডি

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

2

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

আমি তবে একটি বাস্তব সমাধানের কল্পনা করতে পারি। আপনার গ্রিড সন্ধানের পথে আরও একটি মাত্রা যুক্ত করুন। সুতরাং 2 ডি ম্যাপের ক্ষেত্রে আপনি পাথফাইন্ডিং গ্রিড 3 ডি তৈরি করেন। এই সাধারণ উদাহরণে এই নতুন মাত্রার কেবল দুটি গভীরতা থাকবে তবে বাস্তব খেলায় এটি দ্রুত বড় হয়ে উঠবে।

জেড = 0 এ আপনি সাধারণ পরিস্থিতিতে ভূখণ্ডের মানচিত্র তৈরি করেন যার অর্থ পানির টাইলগুলি দুর্গম বিবেচনা করা হয়।

জেড = 1 এ আপনি এই ভূখণ্ডটি রেক করার সময় যেমনটি তৈরি করেছেন ঠিক তেমনই বোঝাচ্ছেন যে পানির টাইলগুলি হাঁটতে পারা যায় বলে মনে করা হয় (তবে আপনার যদি উদাহরণস্বরূপ প্রাচীর টাইল থাকে তবে সেগুলি দৃ remain় থাকতে পারে)।

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

রেক যেখানে আছে তা বাদে। রেক অবজেক্টটি পাথ গ্রিডে z = 0 এবং z = 1 এর মধ্যে খোলার কাজ করে।

এর অর্থ হ'ল এ * বন্যা z = 0 এ বাইরের দিকে ভরে যাবে, জলে আঘাত করবে এবং বিকল্পগুলির বাইরে চলে যাবে - তারপরে এটি রেক টাইলের মাধ্যমে z = 1 এ ছড়িয়ে পড়বে, এবং z = 1 এ (যেখানে জল চলতে পারে) লক্ষ্য তার উপায় খুঁজে। এর প্রভাবটি হ'ল এনপিসি দ্বিধায় দ্বিধাটি রকে সরিয়ে নিয়ে যায় এবং তারপরে লক্ষ্যের সবচেয়ে সংক্ষিপ্ত পথটি সরিয়ে দেয়।


আমি আমার উদাহরণে রাকটিকে "ওয়াটার ওয়াকিং বুট" এর মতো আরও চিকিত্সা করছি, যার অর্থ এমন একটি বস্তু যা যদি আপনার কাছে থাকে তবে আপনি পানির টাইলগুলির উপর দিয়ে ভ্রমণ করতে সক্ষম হন। যদি রাকে আসলে ভূখণ্ডের অংশ হিসাবে "বিল্ট" করা দরকার হয় এবং সীমিত পরিমাণে টাইলস coversেকে রাখে যা জলের উপর দিয়ে পৌঁছানোর পক্ষে যথেষ্ট বা নাও পারে, সমস্যাটি আরও কঠিন। আমার সমাধানটি এক-ব্যবহারের আইটেমগুলিতে অনুমতি দেয় যদিও আপনি z = 1 এ চলাচল করলে স্বয়ংক্রিয়ভাবে আবার z = 0 এ নেমে যান।
জোয়ার জাকোবসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.