ন্যাপস্যাক সমস্যা - গতিশীল প্রোগ্রামিং সলিউশন সত্ত্বেও এনপি-সম্পূর্ণ?


50

ন্যাপস্যাক সমস্যাগুলি ডায়নামিক প্রোগ্রামিং দ্বারা সহজেই সমাধান করা হয়। ডায়নামিক প্রোগ্রামিং বহুত্বের সময়ে চলে; এই কারণেই আমরা এটি করি, তাই না?

আমি পড়েছি এটি আসলে একটি এনপি-সম্পূর্ণ সমস্যা, যদিও এর অর্থ হ'ল বহুবর্ষীয় সমস্যার সমাধান করা সম্ভবত অসম্ভব।

আমার ভুল কোথায়?


5
মনে রাখবেন যে ডিপি "টেবিলের আকার" এ বহুপদী। টেবিলটি ন্যাপস্যাকের জন্য তাত্পর্যপূর্ণভাবে বড় ((কাভেহের উত্তর দেখুন)।
রাফেল

উত্তর:


40

ন্যাপস্যাক সমস্যাটি হ'ল যখন সংখ্যাগুলি বাইনারি সংখ্যা হিসাবে দেওয়া হয় । এই ক্ষেত্রে, গতিশীল প্রোগ্রামিং শেষ করতে দ্রুততর বহু পদক্ষেপ গ্রহণ করবে (ইনপুটটির আকারে, অর্থাত্ ইনপুটটিতে বিটের সংখ্যা) ।NP-complete

অন্যদিকে, যদি ইনপুটটিতে নম্বরগুলি অবিচ্ছিন্নভাবে দেওয়া হয়, তবে ডায়নামিক প্রোগ্রামিং বহু-কালীন সময়ে (ইনপুটটির আকারে) কাজ করবে।

সমস্যার এই ধরনের বলা হয় স্বাস্থ্যহীনNP-complete

: আরেকটি ভাল উদাহরণ বুঝতে ইনপুট দিতে ব্যবহার করা এনকোডিং গুরুত্ব যদি একটি সংখ্যা মৌলিক যে থেকে যেতে হয় দেখতে স্বাভাবিক আলগোরিদিম বিবেচনা করা হয় পর্যন্ত এবং চেক তাদের মধ্য থেকে যে ভাগ । এটি এ বহুপদী তবে ইনপুট আকারে অগত্যা নয়। যদি বাইনারি দেওয়া হয় তবে ইনপুটটির আকার এবং সময়কালে অ্যালগোরিদম চলতে থাকে runs যা ইনপুট আকারে সূচকীয়। এবং কোনও সমস্যার স্বাভাবিক গণনাগত জটিলতা হ'ল ইনপুটটির আকার t2nnnnlgnO(n)=O(2lgn/2)

এই ধরণের অ্যালগরিদম, অর্থাত্ বৃহত সংখ্যায় বহুপদী যা ইনপুটটির অংশ, তবে ইনপুট দৈর্ঘ্যের সূচকীয়কে সিউডো-পলিনোমিয়াল বলে


তবে ন্যাপস্যাকটিতে রাখা জিনিসগুলি সম্পর্কে ভাবুন। অবজেক্টগুলির ইনপুট হওয়া দরকার এবং এই জাতীয় ইনপুট অবশ্যই অবজেক্টের সংখ্যার সাথে বহুপদী হতে হবে। যদি বস্তুগুলি পর্যাপ্ত পরিমাণে থাকে তবে ইনপুটটি সমস্যার আকারের সাথে বহুপদী। তাহলে আমি কেন বলতে পারি না যে টেবিলের আকারের ক্ষেত্রে ন্যাপস্যাক সমস্যা পি সমস্যা? আমি কি ভূল?
স্ট্রিন

@Strin, না, বস্তু অল্প সংখ্যক বৃহৎ ঝোলা, যেমন অনুভব করতে যথেষ্ট হতে পারে Knapsack আকার , আকার এক objeact যথেষ্ট। ইনপুটের আকার মোটামুটিভাবে হয় চেয়ে অনেক ছোট । (আমি ধরে নিচ্ছি যে আমরা 0-1 ন্যাপস্যাকের কথা বলছি।)mm2lgmm
কাভেহ

আপনি কি ইনপুটটি ছোট ছোট ইনপুটগুলিতে ভাঙতে পারেন যার বাইনারি এনকোডিংয়ের এমন একটি আকার রয়েছে যা বহুগুণে আলগোরিদম সমাপ্ত করে তারপরে সমাধানগুলি একত্রিত করে?
চর

@ কাভেহ "ইনপুটটির আকার প্রায় 2 এলজি এম" আপনি কোথায় থেকে এই অংশটি পেয়েছেন তা আমি বুঝতে পারি না। m(প্যাক সাইজ) এবং n(আইটেমের সংখ্যা) এর মধ্যে সম্পর্ক সম্পূর্ণ অজানা, তাই না? এবং পুনরায় "যখন সংখ্যাগুলি বাইনারি সংখ্যা হিসাবে দেওয়া হয়" ... তবে আপনি কি এটির জন্য কিছু বলতে পারেন নি? বেশিরভাগ অ্যালগরিদম সহ, আমরা বেস 10 তে ইনপুট আকারের বিষয়ে কথা বলি কেন এখানে বাইনারি সম্পর্কে কথা বলব? এবং আপনি বাইনারি, অষ্টাল, দশমিক ইত্যাদিতে এনকোড করেছেন কিনা ... actualআপনার মূল অ্যালগরিদম লুপের মাধ্যমে আপনি কতবার পুনরাবৃত্তি করবেন তা সরাসরি উভয় nএবং এর উপর নির্ভরশীল W
The111

1
@ দ্য ১১১, আমি মনে করি আপনি যদি এটি একটি নতুন প্রশ্ন হিসাবে পোস্ট করেন তবে আমি আরও ভাল পোস্ট করব এবং আমি একটি উত্তর পোস্ট করব। আমি মনে করি আপনার প্রশ্নটি আরও মৌলিক এবং মন্তব্যগুলি এই প্রশ্নের সাথে খুব একটা সম্পর্কিত নয়।
কাভেহ

33

মূল বিভ্রান্তি " আকার " এবং " মান " এর মধ্যে পার্থক্যের মধ্যে রয়েছে ।

" বহুবর্ষীয় সময় " ইনপুটটির আকার বহুত্বপূর্ণ রিটকে বোঝায় ।

" সিউডোপলিনোমিয়াল টাইম " ইনপুটটির মূল্য বহিরাগত রিটকে বোঝায় । এটি (নীচে) দেখানো যেতে পারে যে এটি ইনপুটটির আকারটি ক্ষতিকারক আর্ট হিসাবে সমান ।


অন্য কথায়: উপস্থাপন করুন এবং মান উপস্থাপন করুন।NsizeNval

বহুপদী সময়: জন্যO(Nsizex)xN

Pseudopoly। সময়: জন্যO(Nvalx)xN

এখন, ঝোলা সমস্যা হয়েছে pseudopolynomial, বহুপদী না কারণ গতিশীল প্রোগ্রামিং সমাধান একটি চলমান সময় উপর নির্ভরশীল দেয়, সমাধান মান অর্থাত - , যেখানে একটি হল মূল্য সর্বোচ্চ ধারণক্ষমতা উপস্থাপন করে।O(nW)W

এখন, একটি মান এটি প্রতিনিধিত্ব করতে লাগে এমন # টি সংখ্যার পরিপ্রেক্ষিতে এটি প্রতিনিধিত্ব করে আকারে রূপান্তরিত হতে পারে । আপনাকে জানায় যে বেস ব্যবহার করে represent উপস্থাপনের জন্য কতগুলি সংখ্যার প্রয়োজন । এটি give দেওয়ার জন্য সমাধান করা যেতে পারে :Nsize=Logb(Nval)NvalbNval

Nval=bNsize

সিউডোপলিয়োনমিয়াল সময় সংজ্ঞাতে এটি দেখায় যে এটি :Nsize

Pseudopoly। সময়: জন্যO(bxNsize)b,xN


7
আপনাকে অনেক ধন্যবাদ বলার জন্য এখানে একটি অ্যাকাউন্ট তৈরি করা হয়েছে! আপনার উদাহরণের পরে কেবল আমি শেষ পর্যন্ত এটি বুঝতে পেরেছি।
ইনোরি

2
তোমার উত্তর সবাইকে মারছে, ব্র্যাভো!
মুহাম্মদ রজিব

1
এই মহান উত্তর আমরা বলতে পারি যে, যদি আমরা 100 থেকে 101 ওয়াট পরিবর্তন করতে যোগ করার জন্য আকার সমস্যা বেড়ে করা হয় না, আকার আমরা ওয়াট যা দুইবার হিসাবে বড় তোলে অন্য বিট যোগ যদি বেড়ে যায়, তাই টেবিল would দ্বিগুণ সারি থাকায় এবং এর ফলে একের পর এক আকার বাড়ার সাথে সাথে সমস্যার সময় দ্বিগুণ হয়ে যায়, এজন্য এটি ক্ষতিকারক।
আমিন

@bcorso ধরুন আপনাকে একটি মান এন দেওয়া হয়েছে এবং আপনাকে 1 থেকে N পর্যন্ত সংখ্যার যোগফল খুঁজে বের করতে হবে এবং আপনি লুপ পদ্ধতির জন্য ব্যবহার করেছেন, এটি সিউডোপলিনোমিয়াল টাইম অ্যালগরিদম হবে?
ডলারআক্ষয়ে

8

ন্যাপস্যাক সমস্যা -য় হিসাবে সংজ্ঞায়িত Karp এর কাগজ যেহেতু অন্যান্য এনপিসি সমস্যা থেকে একটি রিডাকশন (সঠিক কভার এই ক্ষেত্রে) Knapsack হয় দ্বারা NP-সম্পূর্ণ। এর মানে হল এই যে কোন বহুপদী অ্যালগরিদম যে সমাধান করতে পারে সব ন্যাপস্যাক সমস্যা -য় দৃষ্টান্ত, যদি না ।P=NP

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

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