খুব সুন্দর প্রশ্ন!
আপনি দু'বার ঠিক বলেছেন:
- ন্যাপস্যাকে আইটেমের সংখ্যা প্রচার করা অনুকূল সমাধানগুলিতে নেতৃত্ব দেয় না।
- একটি সমাধান তৃতীয় মাত্রা যুক্ত করে। এটি বরং সহজ তবে এটি করার সময় কিছু তথ্য বিবেচনায় নেওয়া দরকার। তবে খেয়াল করুন যে এটি একমাত্র বিকল্প নয়
নিম্নলিখিতটিতে, আমি ধরে নিচ্ছি যে আপনি গতিশীল প্রোগ্রামিং ভিত্তিক সমাধানের সাথে পরিচিত। বিশেষত, সমাধানটি নির্ধারণ করার জন্য আমি কীভাবে টেবিলটিকে পিছন দিকে যেতে হবে তা নিয়ে আলোচনা করব না ।
আসুন প্রথমে টিপিকাল কেসটিতে ফোকাস করি: আইটেমের সংখ্যা সীমিত নয় । এই ক্ষেত্রে, আপনি কেবল একটি টেবিল যেখানে the অনুকূল মান থাকে যখন ন্যাপস্যাকের সামগ্রিক ক্ষমতা এবং কেবল প্রথম আইটেম বিবেচনা করা হয়। এখান থেকে:টি আই , জে আই জেটিটিi , jআমিঞ
টিi , j= সর্বোচ্চ { টিi , j - 1, টিi - wঞ, জে - 1+ ভিঞ}
যেখানে এবং যথাক্রমে -th আইটেমের ওজন এবং মানের জন্য দাঁড়ায় । যদি আপনার ঝোলা সামগ্রিক ধারণক্ষমতা এবং সেখানে মোট হয় আইটেম সন্তোষজনক সমাধান দেওয়া হয় । এই অ্যালগরিদম সিউডো-পলিনোমিয়াল সময়ে চালিত হিসাবে পরিচিত এবং এর সুন্দরীদের একটি হ'ল এটি কেবলমাত্র সেই সংমিশ্রণগুলিকেই বিবেচনা করে যা সর্বোচ্চ ক্ষমতা অনুসারে মাপসই হয়।বনাম ঞ ঞ সি এন টি সি , এনWঞবনামঞঞসিএনটিসি, এন
তবে আপনার সীমাবদ্ধতা যোগ করার সময় এটি যথেষ্ট নয়: আইটেমের সর্বাধিক সংখ্যক । কারণটি হ'ল পূর্ববর্তী পুনরুক্তি সূত্রটি আইটেমগুলির বিভিন্ন সংমিশ্রণকে বিবেচনা করে না:পি
- প্রথমত, যদি তবে যাতে -th আইটেমটি বিবেচিত আইটেম, সর্বোচ্চ সংখ্যক সত্ত্বেও ঝোলা যোগ করা হয় --- যাতে আপনি আপনার বাধ্যতা লঙ্ঘন হতে পারে। ঠিক আছে, আপনি প্রতিটি পদক্ষেপে itemsোকানো আইটেমের সংখ্যার উপর নজর রেখে পূর্ববর্তী সূত্রটি প্রয়োগ করার জন্য প্রলুব্ধ হতে পারেন এবং ন্যাপস্যাকের আইটেমের সংখ্যা বর্তমানে ছাড়িয়ে গেলে অন্যকে যোগ করবেন না তবে,টি আই , জে = ( টি আই - ডাব্লু জে , জে - ১ + ভি জে ) জে পি পিটিi , j - 1< ( টিi - wঞ, জে - 1+ ভিঞ)টিi , j= ( টিi - wঞ, জে - 1+ ভিঞ)ঞপিপি
- দ্বিতীয়ত, যদি তবে যাতে এই আইটেমটি যুক্ত না হয় তবে ইতিমধ্যে ন্যাপস্যাকের মধ্যে সর্বাধিক সংখ্যক আইটেম সন্নিবেশিত হওয়ার ক্ষেত্রে এটি একটি ভুল হতে পারে । কারণটি হ'ল আমরা সঠিকভাবে তুলনা করছি না: একদিকে পূর্ববর্তী মধ্যে নির্বাচিত আইটেমগুলি সমন্বিত অনুকূল সমাধানটি সংরক্ষণ করার জন্য ; অন্যদিকে, তম আইটেমটি সন্নিবেশ করানোর জন্য এবং পূর্ববর্তী মধ্যে আইটেমগুলির সাথে সর্বোত্তম উপসেটটি বিবেচনা করুন ।টি আই , জে = টি আই , জে - ১ টি আই , জে - 1 পি ( জে - 1 ) জে ( পি - 1 ) ( জে - 1 )টিi , j - 1> ( টিi - wঞ, জে - 1+ ভিঞ)টিi , j= টিi , j - 1টিi , j - 1পি( জে - 1 )ঞ( পি - 1 )( জে - 1 )
যাতে একটি প্রথম সমাধান তৃতীয় মাত্রা যুক্ত করে। আপনার ক্ষেত্রে জন্য দিন অনুকূল সমাধান হতে যখন ঝোলা ক্ষমতা নেই , কেবলমাত্র প্রথম আইটেম বলে মনে করা হয় এবং এটি চেয়ে বেশি করা অনুমোদিত নয় ঝোলা আইটেম। এখন, আই জে কেটিi , j , kআমিঞট
- আপনি যদি এমন আইটেমের সংখ্যার চেয়ে কম বা সমান পরিমাণ আইটেমের জন্য গণনা করছেন তবে ( ) তারপরে যথারীতি এগিয়ে চলুন তবে : same এর একই মান ব্যবহার করে ঞ ≤ ট ট টি আমি , ঞ , ট =টিi , j , kঞ ≤ টkTi,j,k=max{Ti,j−1,k,Ti−wj,j−1,k+vj}
- এখন, যদি আপনাকে যেতে পারে এমন আইটেমগুলির সংখ্যার ( ) এর চেয়ে কড়াভাবে বড় আইটেমের জন্য গণনা করতে হয় : জ > কে টি আই , জে , কে = সর্বাধিক {Ti,j,kj>kTi,j,k=max{Ti,j−1,k,Ti−wj,j−1,k−1+vj}
প্রথম প্রকাশটি পরিষ্কার হওয়া উচিত। টেবিল এর -পরি স্তরটি দ্বিতীয়টি কাজ করে যেহেতু উপরের প্রয়োজন অনুসারে প্রথম মধ্যে আইটেমগুলির সর্বোত্তম সংমিশ্রণটি ট্র্যাক করে ।টি ( কে - 1 ) ( জে - 1 )(k−1)T(k−1)(j−1)
এই অ্যালগরিদমের একটি কার্যকর প্রয়োগের জন্য সমস্ত জন্য গণনা করার দরকার নেই । নোট পূর্ববর্তী পুনরাবৃত্তি সম্পর্ক স্তর কহা যে সঙ্গে এবং এইভাবে, এটা দুই ধারাবাহিক স্তর (যেমন, যদি আপনার সাথে সন্তোষজনক সমাধান আগ্রহী মধ্যে বিকল্প করা সম্ভব আপনি শুধু পরপর দুই স্তর ব্যবহার: 0 এবং 1, 1 এবং 2, 2 এবং 3, 3 এবং 4 এবং আপনি সম্পন্ন করেছেন)। অন্য কথায়, এই অ্যালগরিদম গতিশীল প্রোগ্রামিংয়ের উপর ভিত্তি করে traditionalতিহ্যবাহী পদ্ধতির দ্বারা প্রয়োজনীয় মেমরির দ্বিগুণ গ্রহণ করে এবং এটি এখনও সিউডো-বহুবর্ষীয় সময়ে চালানো যেতে পারে। কে কে ( কে - 1 ) কে = 4Ti,j,kkk(k−1)k=4
তবে সচেতন থাকুন যে এটিই একমাত্র সমাধান নয়! এবং এমন আরও একটি জিনিস রয়েছে যা আপনি আরও মার্জিত দেখতে পারেন। পূর্ববর্তী সূত্র, আমরা সন্তোষজনক সমাধান যার কোন তুলনায় আরো গঠিত উদ্ধার প্রথম মধ্যে আইটেম যেমন । তবে, এটি পরিষ্কার হওয়া উচিত যে এটি কেবল আসল টেবিলটি ব্যবহার করে ঠিক সমান ! উদাহরণস্বরূপ, 1 আইটেম, 2 আইটেম, 3 আইটেম, ... সাথে সর্বোত্তম সমাধানগুলি বিবেচনা করে আইটেম ছাড়া আর সর্বোত্তম সমাধান পুনরুদ্ধার করা যাবে( জে - 1 ) টি আই , জে - 1 , কে - 1 সর্বাধিক পি = 0 , জে - 1 { টি আই , পি } কে ( জে - 1 ) কে(k−1)(j−1)Ti,j−1,k−1maxp=0,j−1{Ti,p}k(j−1)আইটেম ... এই সূত্রটি তৈরির কাজটি করার জন্য আপনার প্রতিটি আংশিক সমাধানে বিবেচিত আইটেমগুলির সংখ্যাও ট্র্যাক করা উচিত যাতে আপনার প্রতি ঘরে প্রতি দুটি পূর্ণসংখ্যার প্রয়োজন হয়। এই মেমরি দখল অ্যালগরিদম উপরে দেখানো (স্তর আকারে তৃতীয় মাত্রা ব্যবহারের অবিকল একই মেমরির প্রয়োজনীয়তা ফলাফল )k ।
আশাকরি এটা সাহায্য করবে,