আপনাকে একটি তালিকা বা ভেক্টর হিসাবে বা যাই হোক না কেন, 3 টি-টিপলস বা যা কিছু হোক না কেন, যেখানে প্রথম দুটি জিনিস স্ট্রিং, এবং তৃতীয় জিনিসটি একটি সংখ্যা। স্ট্রিংগুলি শহরগুলি এবং সংখ্যাটি তাদের মধ্যে দূরত্ব। টিপলগুলিতে নগরগুলির ক্রমটি স্বেচ্ছাসেবক (অর্থাত্ প্রথমে যেটি আসে এবং দ্বিতীয়টি আসে তা বিবেচনা করে না) যেহেতু এটি প্রতিটি পথের সমান দূরত্ব। এছাড়াও, সংযুক্ত উদ্ধৃতিগুলির প্রতিটি জুটির জন্য ঠিক একটি টিপল রয়েছে। সমস্ত শহর সংযুক্ত নাও হতে পারে। এছাড়াও, দূরত্ব সর্বদা ইতিবাচক থাকে (না0
)। আপনার এই শর্তগুলি পরীক্ষা করার দরকার নেই, আপনি ধরে নিতে পারেন ইনপুটটি ভালভাবে গঠন করা হবে। আপনার কাজ হ'ল শহরগুলিকে একটি চক্রাকার ক্রমে ফিরিয়ে দেওয়া, যেমন আপনি যদি কোনও একটি শহরে শুরু করেন এবং সিকোয়েন্সটি একই শহরে ফিরে যান তবে শহরগুলির মধ্যে মোট দূরত্ব সর্বনিম্ন হবে (ঠিক এবং সমস্ত ক্ষেত্রে) কেস।) আপনি ধরে নিতে পারেন কোনও সমাধান রয়েছে। উদাহরণস্বরূপ, আমাদের বলুন আপনাকে দেওয়া হয়েছে
[("New York", "Detroit", 2.2), ("New York", "Dillsburg", 3.7), ("Hong Kong", "Dillsburg", 4), ("Hong Kong", "Detroit", 4), ("Dillsburg", "Detroit", 9000.1), ("New York", "Hong Kong", 9000.01)]
আপনি নিম্নলিখিতগুলির যে কোনও আউটপুট করতে পারেন (তবে আপনার কেবলমাত্র একটি আউটপুট প্রয়োজন):
["Detroit","Hong Kong","Dillsburg","New York"]
["Hong Kong","Dillsburg","New York","Detroit"]
["Dillsburg","New York","Detroit","Hong Kong"]
["New York","Detroit","Hong Kong","Dillsburg"]
["Dillsburg","Hong Kong","Detroit","New York"]
["New York","Dillsburg","Hong Kong","Detroit"]
["Detroit","New York","Dillsburg","Hong Kong"]
["Hong Kong","Detroit","New York","Dillsburg"]
কারণ এটি সবচেয়ে সংক্ষিপ্ত ট্রিপ: ১৩.৯
কিন্তু না
["Dillburg","Detroit","New York","Hong Kong"]
কারণ এটি সবচেয়ে ছোট নয়।
En.wikedia.org/wiki/Travelling_salesman_problem দেখুন
স্কোরিং
যেখানে সেটা আকর্ষণীয় হয়। আপনার কাছে থাকা অক্ষরের সংখ্যা আপনি নিয়ে যান এবং তারপরে এগুলি সবচেয়ে খারাপ ক্ষেত্রে ও-স্বাক্ষর সূত্রে প্লাগ করুন into উদাহরণস্বরূপ, আসুন আমরা আপনাকে বলি যে আপনি একটি ব্রুট ফোর্স প্রোগ্রাম লিখুন যা 42 টি অক্ষর। যেমনটি আমরা সবাই জানি, সবচেয়ে খারাপ পরিস্থিতি হ'ল শহরগুলির সংখ্যা n!
কোথায় n
। 42! = 1405006117752879898543142606244511569936384000000000, যাতে এটি আপনার স্কোর। সর্বনিম্ন স্কোর জয়ী ।
দ্রষ্টব্য: আমি এটি পরেও স্বস্তি পেয়েছি, তবে কীভাবে এটি সমাধান করবেন তা সম্পর্কে নিশ্চিত ছিলাম না এবং আশা ছিল যে কারও নজরে আসবে না। লোকেরা করেছে, তাই আমি ইস্যাকের পরামর্শ নিয়ে যাব:
কেবলমাত্র বিকল্পগুলি হ'ল হে (এন!) এবং ও (বি ^ এন এন ^ লএন (এন) ^ কে), এবং সমস্ত সীমা অবশ্যই যথাসম্ভব কঠোর হওয়া উচিত
O(n!)
এবং O(b^n*n^a*ln(n)^k)
, এবং সমস্ত সীমা যে স্বরলিপি দেওয়া সম্ভব আঁট যেমন হতে হবে। যদিও ওপি স্পষ্ট করা উচিত।
O(n^2*2^n)
, যা O(n!)
বড় এন এর চেয়ে অনেক কম ।
O(n!)
কিন্তু নাO(sqrt(n)*n^n/e^n)
কিংবাO(n!/100000000000000000000)
?