ত্রিভঙ্গীকরণ এ * (টিএ *) পাথফাইন্ডিং অ্যালগরিদম


11

আমার en 76-৮১ পৃষ্ঠায় ডায়ামিন তার কাগজে দক্ষ ট্রায়ানগুলেশন-ভিত্তিক পাথফাইন্ডিংয়ে বর্ণনা করেছেন ত্রিভুজ এ * (টিএ *) অ্যালগরিদম বুঝতে সাহায্য দরকার ।

চূড়ান্ত নোড পৌঁছানো / সম্প্রসারিত হওয়ার পরেও, কীভাবে ত্রিভুজাকরণের জন্য নিয়মিত এ * অ্যালগোরিদমকে মানিয়ে নিতে, অন্যান্য সম্ভবত আরও সর্বোত্তম পথগুলি অনুসন্ধান করার জন্য তিনি বর্ণনা করেন। চূড়ান্ত নোডটি প্রসারিত করা হলে নিয়মিত এ * বন্ধ হয়ে যায় তবে ত্রিভুজযুক্ত গ্রাফ ব্যবহার করার সময় এটি সর্বদা সেরা পথ নয়। আমার ঠিক এই সমস্যাটিই হচ্ছে।

সমস্যাটি পৃষ্ঠা 78 78, চিত্র 5.4 তে চিত্রিত হয়েছে: এখানে চিত্র বর্ণনা লিখুন

আমি বুঝতে পারি কীভাবে কাগজে উপস্থাপিত জি এবং এইচ মান গণনা করতে হবে (পৃষ্ঠা 80)।

এবং আমি মনে করি অনুসন্ধানের স্টপ শর্তটি হ'ল:

if (currentNode.fCost > shortestDistanceFound)
{
    // stop
    break;
}

যেখানে কারেন্টনোড হ'ল খোলা তালিকা (অগ্রাধিকার সারি) থেকে পপ করা অনুসন্ধান নোড, যা সর্বনিম্ন এফ-স্কোর রয়েছে। সংক্ষিপ্ততম দূরত্বফাউন্ডটি এখন পর্যন্ত পাওয়া সংক্ষিপ্ততম পথের আসল দূরত্ব।

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

উত্তর:


3

আমি এটি বাস্তবায়ন করি নি, তবে আমি এটি পড়ার পরে, আমি মনে করি আপনি এই জাতীয় কিছু করতে চান:

shortestDistance = infinity
do A* with modified g cost
    if node.fCost > shortestDistance (section 5.5)
        don't open node
    if node.isGoal()
        run funnel algorithm (string pulling)
        update shortestDistance

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

তিনি যে সংশোধিত জি ব্যয়ের বর্ণনা করেছেন তা একটি বড় অবমূল্যায়নের মতো বলে মনে হচ্ছে, সুতরাং এটি অনুশীলনে কতটা ভাল কাজ করে তা নিয়ে আমি সংশয়বাদী।


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