একটি গাছে থেকে শিকড় থেকে পাতায় দীর্ঘতম পথ সন্ধান করুন


15

আমার একটি গাছ রয়েছে (গ্রাফ তত্ত্বের অর্থে) যেমন নীচের উদাহরণটি:

এখানে চিত্র বর্ণনা লিখুন

এটি একটি নির্দেশিত গাছ যা একটি প্রারম্ভিক নোড (মূল) এবং অনেকগুলি শেষ নোড (পাতাগুলি) থাকে। প্রতিটি প্রান্তের জন্য এটি নির্ধারিত একটি দৈর্ঘ্য রয়েছে।

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


উত্তর:


16

রন জি দক্ষ আলগোরিদমের দিকে ইঙ্গিত দিয়েছিলেন, যদিও তিনি কিছু বিবরণ রেখেছিলেন। সমস্ত বার-পাথ পাথের গণনা করা যদি আপনি বার বার কাজ করে থাকেন তবে সামান্য অকার্যকর, উদাহরণস্বরূপ, যদি আপনি প্রতিটি পাথ গণনা করেন এবং তারপরে দৈর্ঘ্যটি গণনা করেন।

নীচের পুনরাবৃত্ত আলগোরিদিমটি দিয়ে শুরু করুন LongestPath(root)যা আপনি চান তা দেবে। মূলত, এটি প্রতিটি সাবট্রির জন্য পুনরাবৃত্তভাবে দীর্ঘতম পাথ গণনা করে। প্রতিটি নোডে এগুলির জন্য নতুন পথগুলি তৈরি করা এবং দীর্ঘতমটি ফিরে আসা দরকার।

 LongestPath(node)
   If node is a leaf, return (node,0) 
   If node is not a leaf:  
    For each edge (node,length,next):
       Let (p,l) = LongestPath(next)
       Let (path,len) = (p++[next], l + length)
    Return element (path,len) from previous step with largest value len

কিছু হাস্কেল স্বরলিপি সহ সিউডো-কোডটি এটি সমন্বয়যুক্ত, তাই আমি আশা করি এটি বোধগম্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.