আসুন শাখা এবং ন্যাপস্যাক থেকে বাউন্ড প্রয়োগ করি , আশা করি এটি আপনার কাছে ধারণাটি পরিষ্কার করে দেবে।
আমাদের আছে এন আইটেম, লেবেলযুক্ত 1 যথোপযুক্ত সৃষ্টিকর্তা এন। বনামআমি মান হয় আমিতম আইটেম, এবং Wআমিএর ওজন আমরা এগুলিকে একটি ন্যাপস্যাকের সাথে ফিট করার চেষ্টা করি যা এতে অন্তর্ভুক্ত থাকতে পারেটি মোট ওজন এবং আমরা ন্যাপস্যাকটিতে যে আইটেমটি রেখেছি তার মানগুলির যোগফলকে সর্বাধিক করার চেষ্টা করি।
সাধারণ ব্যাকট্র্যাক পন্থা আমাদের ভিত্তি। আমরা প্রথমে রেখেছিবনাম1 প্যাকটিতে এবং তারপরে বাকীগুলির জন্য সমস্যাটি সমাধান করুন এন- 1পুনরাবৃত্তি সঙ্গে আইটেম। আমরা তারপর অপসারণবনাম1 প্যাকটি থেকে এবং বাকীগুলির জন্য সমস্যাটি সমাধান করুন n - 1 আইটেম আবার, এবং আমরা খুঁজে পাওয়া সেরা কনফিগারেশন ফিরে।
এই ব্যাকট্র্যাকিংটি শাখা এবং বাউন্ডের 'শাখা' অংশ। আপনি (ন্যাপস্যাকের ক্ষেত্রে) দুটি ক্ষেত্রে শাখা করেছেন: 'আইটেমআমি সমাধান 'এবং' আইটেমের অংশ আমিসমাধানের অংশ নয় '। আপনি এটি বাইনারি ট্রি হিসাবে কল্পনা করতে পারেন, যেখানে বাম শিশুটি একটি ক্ষেত্রে এবং ডান শিশুটি অন্য ক্ষেত্রে। এই গাছটি অনুসন্ধান গাছ (বা অনুসন্ধানের স্থান ): এর গভীরতাএন, এবং এটি তাই আছে হে(2এন)নোড। অ্যালগরিদম সুতরাং আইটেম সংখ্যায় একটি চলমান সময় সূচকযুক্ত।
এখন আমরা 'বাউন্ড' অংশে পৌঁছেছি: আমরা এমন মানদণ্ডগুলি সন্ধান করার চেষ্টা করি যে আমরা বলতে পারি যে 'এই কনফিগারেশনটি কখনই কার্যকর হয় না, তাই আমরা সম্ভবত এটির কম্পিউটিংকে বিরক্তও করব না'। এই জাতীয় মানদণ্ডের উদাহরণ হ'ল আমরা ইতিমধ্যে ন্যাপস্যাকটিতে রেখেছি এমন আইটেমগুলির ওজন অতিক্রম করেটি': যদি আমরা যুক্ত করে থাকি তবে প্রথমটি বলুন এন / 2 ন্যাপস্যাকের আইটেমগুলি এবং এটি ইতিমধ্যে পূর্ণ, আইটেমগুলি রাখার চেষ্টা করার কোনও মানে নেই এন / 2 + 1 যথোপযুক্ত সৃষ্টিকর্তা এন ন্যাপস্যাকের পাশাপাশি, তবে এর কোনও উপসেট ফিট করার চেষ্টা করার কোনও মানে নেই এন / 2 + 1 যথোপযুক্ত সৃষ্টিকর্তা এন ইতিমধ্যে পূর্ণ হিসাবে ন্যাপস্যাক, তাই আমরা প্রায় সংরক্ষণ 2এন / 2মামলা। অন্য উদাহরণটি হ'ল ' আমি যদি বাকী সমস্ত আইটেমগুলি রাখি তবে আমি যে আইটেমগুলি রেখেছি সেগুলির মান আমি এখনও অবধি খুঁজে পাওয়া সেরা কনফিগারেশনের চেয়ে বেশি হবে না '।
এই মানদণ্ডগুলি মূলত অনুসন্ধান গাছের অংশগুলি কেটে দেয়: কোনও নোডে আপনি বলে থাকেন যে 'বাম সাবট্রি আমাকে আরও ভাল কনফিগারেশন দেবে না, কারণ এক্স', সুতরাং আপনি সেই সাবট্রিটি ভুলে গেছেন এবং আপনি এটি অনুসন্ধান করেন না। গভীরতার একটি সাবট্রিঘ আপনি এই উপায় কাটা যে আপনি বাঁচায় ও (2ঘ) নোডগুলি, যদি আপনি ভাগ্যবান হন তবে গতি বাড়ানোর পরিমাণটি বেশ কিছুটা হতে পারে।
নোট করুন যে এটিকে ' বাউন্ডিং ' বলা হয় কারণ এটিতে সাধারণত একরকম নিম্ন বা উপরের আবদ্ধ জড়িত থাকে: মানদণ্ডের জন্য ' আমি যদি বাকী সমস্ত আইটেম রাখি তবে আমি যে আইটেমগুলি রেখেছি সেগুলির মান সর্বোত্তম কনফিগারেশন ছাড়িয়ে যাবে না আমি এখনও অবধি খুঁজে পেয়েছি ', এখন অবধি আপনার সেরা কনফিগারেশনের মান হ'ল সেরা কনফিগারেশনের উপর একটি নিম্ন সীমাবদ্ধ, সুতরাং যে কোনও কিছু যা এটিকে এই নিম্ন সীমানের অতীতে পরিণত করবে না তা ব্যর্থ হতে পারে।
আপনি 'বাউন্ডিং' অংশটি আপনার পছন্দ মতো জটিল করে তুলতে পারেন। উদাহরণস্বরূপ, পূর্ণসংখ্যা প্রোগ্রামিংয়ের সমস্যাগুলি প্রায়শই শিথিলকরণগুলি সমাধান করে সমাধান করা হয়: আপনি আপনার প্রোগ্রামটিকে একটি রৈখিক প্রোগ্রামে শিথিল করেন, যা আপনি বহুপক্ষীয় সময়ে সমাধান করতে পারেন এবং তারপরে আপনি আপনার বাইনারি ভেরিয়েবলগুলির জন্য অনেকগুলি কেস ফেলে দিতে পারেন যা কোনওভাবেই কার্যকর হবে না। তারপরে আপনি বাকী বিকল্পগুলিতে শাখা করুন।
নোট করুন যে শাখা এবং গণ্ডি সাধারণত আপনাকে অনুশীলনে একটি গতি বৃদ্ধি দেয়, তবে তাত্ত্বিকভাবে নয়: আপনার হিউরিস্টিক্স ব্যবহার করে অনুসন্ধানের গাছটি কতটা কাটা হয়েছে তা ঠিক বলা শক্ত। এ জাতীয় সমস্যায় অনুশীলনে ব্যবহৃত বিভিন্ন হিউরিস্টিক সংখ্যার দ্বারা এটি প্রমাণিত হয়। আপনি যদি দুর্ভাগ্য হন তবে অবশিষ্ট অনুসন্ধান গাছটি অনেকগুলি আবদ্ধ থাকা সত্ত্বেও বিশাল remains