এও * অ্যালগোরিদম কীভাবে বাস্তবায়ন করবেন?


16

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

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


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

1
এটি কি কেবল গ্রাফ নয় (এমন একটি ফাংশন সহ যা "" পরবর্তী "নোডে যাওয়ার অনুমতি দেয়)?
soandos

কেউ যদি এও * এ * অ্যালগোরিদম থেকে কীভাবে পৃথক হয় কেবল এটি স্কেচ করে তা সাহায্য করবে। লিঙ্কটি থেকে যথেষ্ট চিত্র খুঁজে পাওয়া যায়নি। বাস্তবায়ন হিসাবে, গাছগুলির জন্য কোনও কাঠামো যুক্তিসঙ্গত বলে মনে হচ্ছে .... এটি একটি গাছকে সঠিকভাবে অনুসরণ করছে?
vzn

উত্তর:


1

এই নিবন্ধটি সম্পর্কে প্রতিবার আপনি এও * অ্যালগরিদমে কোনও নোড প্রসারিত করুন এর পূর্বসূরিদের আনুমানিক ব্যয়ের সমস্তটি আপডেট করতে আপনাকে অবশ্যই পিছনের দিকে যেতে হবে।

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

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


0

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

http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree


2
এবং আপনি এই কাজ করতে পারেন ?
রাফেল

এটি আমার পক্ষে এতটা পরিষ্কার নয় যে বিএসটি কীভাবে ব্যবহৃত হবে কারণ প্রতিটি নোডের জন্য বিএসটিগুলির একটি সংখ্যাসূচক সূচি থাকে এবং সেগুলি রাখত। সংখ্যার সূচকটি কী ব্যবহৃত হয়?
vzn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.