ববসের বিক্রয় (পণ্যের সংক্ষিপ্ততা কমাতে বাধাগুলির সাথে জোড়গুলির পুনরায় সাজানো)


15

আমি স্ট্যাক ওভারফ্লোতে কিছুক্ষণ আগে এই প্রশ্নটি জিজ্ঞাসা করেছি: সমস্যা: বব এর বিক্রয় । কেউ কেউ এখানে প্রশ্ন পোস্ট করার পরামর্শ দিয়েছে।

কেউ কেউ ইতিমধ্যে এখানে এই সমস্যা সম্পর্কিত একটি প্রশ্ন জিজ্ঞাসা করেছেন - প্রদত্ত কার্ডিনালটির সর্বনিম্ন ওজন - তবে যতদূর আমি বুঝতে পারি এটি আমার সমস্যাটিতে আমাকে সহায়তা করে না। স্ট্যাকওভারফ্লোতে সর্বাধিক রেট দেওয়া উত্তরটিও দেখার মতো।

আমার স্ট্যাক ওভারফ্লো প্রশ্নের প্রশ্নের ভারব্যাটিম কপিটি এখানে। এটি সম্ভবত এই সাইটের জন্য অপ্রতুলভাবে প্রস্তুত করা হয়েছে (হেক, আমি কেবল এখানে এটি জিজ্ঞাসা করে অপর্যাপ্ত অশিক্ষিত বোধ করি), তাই এটিকে সম্পাদনা করতে দ্বিধা বোধ করুন:


দ্রষ্টব্য: এটি একটি ডাব্লুএফএফ ফাইলে রেকর্ড ক্রম সম্পর্কিত একটি বাস্তব জীবনের সমস্যার একটি বিমূর্ত রেকর্ডিং। একটি সমাধান আমাকে একটি মুক্ত উত্স অ্যাপ্লিকেশন উন্নত করতে সহায়তা করবে।

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

দামের লেবেলগুলি কীভাবে সাজানো যায় তা অবশ্যই আপনার খুঁজে পাওয়া উচিত, যেমন ববসের সমস্ত সামগ্রীর মোট ব্যয় যতটা সম্ভব কম। মোট ব্যয় হ'ল প্রতিটি পণ্যের নির্ধারিত মূল্য লেবেলের সমষ্টি যা সেই স্টকের পণ্যটির পরিমাণ দ্বারা গুণিত হয়।


প্রদত্ত:

  • এন - পণ্য এবং মূল্য লেবেলের সংখ্যা
  • এস আই , 0≤ আই <এন - সূচক i (পূর্ণসংখ্যা) সহ পণ্যের স্টকের পরিমাণ
  • পি জে , 0≤ জে <এন - সূচক জে (পূর্ণসংখ্যা) সহ মূল্য লেবেলের মূল্য
  • কে - অতিরিক্ত বাধা জোড় সংখ্যা
  • একটি কে , বি কে , 0≤ কে <কে - অতিরিক্ত সীমাবদ্ধতার জন্য পণ্য সূচক
    • যে কোনও পণ্য সূচক বি-তে একবারে উপস্থিত হতে পারে Thus সুতরাং, এই সংলগ্ন তালিকার দ্বারা গঠিত গ্রাফটি আসলে নির্দেশিত গাছের একটি সেট।

প্রোগ্রামটি অবশ্যই খুঁজে পাবেন:

  • এম আই , 0≤ আই <এন - প্রোডাক্ট ইনডেক্স থেকে প্রাইস লেবেল ইনডেক্সে ম্যাপিং (পি এম আই আমি পণ্যের দাম )

শর্ত পূরণ করতে:

  1. পি এম কে ≤ পি এম বি কে , 0≤ কে <কে জন্য
  2. ≤ (এস আই × পি এম i ) 0≤ i <এন এর জন্য ন্যূনতম

মনে রাখবেন যে প্রথম শর্তটি না হলে সমাধানটি কেবল পরিমাণ এবং পণ্য অনুসারে লেবেলগুলিকে পরিমাণ অনুসারে বাছাই করা এবং সরাসরি উভয়ই মিলিয়ে ফেলা হবে।

ইনপুটটির জন্য সাধারণ মানগুলি হবে এন, কে <10000। রিয়েল-লাইফ সমস্যায় কেবলমাত্র কয়েকটি স্বতন্ত্র মূল্য ট্যাগ রয়েছে (1,2,3,4)।


কেন সর্বাধিক সহজ সমাধান (টপোলজিকাল সাজান সহ) কাজ করবে না তার একটি উদাহরণ এখানে:

$$

অনুকূল সমাধানটি হ'ল:

Price, $   1  2  3  4  5  6  7  8  9 10
Qty        9  8  7  6  1 10  5  4  3  2

$


এরম, নীচে নীচের উদাহরণটির জন্য পূর্বরূপিত ব্লকটি গাদাগাদি হয়ে গেছে, এবং আমি কীভাবে এটি ঠিক করব তা নিশ্চিত নই (স্ট্যাকওভারফ্লো এর মার্কডাউন সিনট্যাক্স এবং <pre> ট্যাগগুলি এখানে কাজ করছে বলে মনে হচ্ছে না)।
ভ্লাদিমির পানতেলিভ

প্রিফর্মেটেড ব্লকের মার্কআপটি স্বীকৃত হয়নি কারণ ডলারের লক্ষণগুলিকে টেক্স ডিলিমিটার হিসাবে বিবেচনা করা হয়েছিল (যদিও আমি জানি না কেন টেমস মার্কআপ প্রিম্পরটেড ব্লকের জন্য মার্কআপটিকে নষ্ট করে দেয়)। যেহেতু ডলারের চিহ্নগুলি থেকে বাঁচার কোনও "সঠিক" উপায় বলে মনে হচ্ছে না , তাই আমি এটি একটি অ্যাড-হক পদ্ধতিতে স্থির করেছি।
Tsuyoshi Ito

প্রশ্নটা কি? আপনি একটি অনুকূল সমাধান সন্ধানের জন্য একটি (দক্ষ) অ্যালগরিদম চান? কঠোরতা? আনুমানিক সমাধান?
মার্কোস ভিলাগ্রা

1
@ এটি, ধন্যবাদ @ মারকোস - দুঃখিত, আমি এই সমস্যাটি সমাধান করার জন্য একটি অ্যালগরিদম খুঁজছি, আশা করি যথেষ্ট দ্রুত যাতে আমি আমার প্রকল্পে এটি প্রয়োগ করতে পারি। আনুমানিক সমাধানের জন্য অনেকগুলি ধারণাগুলি রয়েছে, সুতরাং সঠিক সমাধানটিকেই অগ্রাধিকার দেওয়া হবে।
ভ্লাদিমির পানতেলিভ

1
এটির মূল্যের জন্য, আমি মনে করি সম্পর্কিত প্রশ্ন ( cstheory.stackexchange.com/q/4904/751 ) সেই ক্ষেত্রে বিবেচনা করে যেখানে দামগুলি কে এবং এন − কে জিরো নিয়ে থাকে।
মুহম্মে

উত্তর:


6

আমি আপনার মূল প্রশ্নটি স্ট্যাক ওভারফ্লোতেও পোস্ট করেছি:


সমস্যাটি সাধারণ ক্ষেত্রে এনপি-সম্পূর্ণ। এটি 3-পার্টিশনের হ্রাস মাধ্যমে দেখানো যেতে পারে (এটি বিন প্যাকিংয়ের এখনও শক্তিশালী এনপি-সম্পূর্ণ সংস্করণ)।

যাক W 1 , ..., W এন 3-পার্টিশন উদাহরণস্বরূপ অবজেক্টের ওজন হতে যাক বিন আকার, এবং হতে ট = ঢ / 3 বিন যে পূরণ করা অনুমতি দেওয়া হয় সংখ্যা। সুতরাং, একটি 3-পার্টিশন রয়েছে যদি অবজেক্টগুলিকে এমনভাবে পার্টিশন করা যায় যে প্রতি বিনটিতে ঠিক 3 টি অবজেক্ট রয়েছে।

হ্রাসের জন্য, আমরা এন = কেবি সেট করেছি এবং প্রতিটি বিন একই দামের বি প্রাইস লেবেল দ্বারা প্রতিনিধিত্ব করা হয় (পি আই ভাবেন প্রতিটি বি লে লেবেল বৃদ্ধি করছে )। যাক টন আমি , 1≤ আমিk , সংশ্লিষ্ট লেবেলের দাম আমি তম বিন। প্রত্যেকের জন্য W আমি আমরা একটি পণ্য এস আছে পরিমাণ W আমি +1 (দেয় এই রুট পণ্যের কল W আমি ) এবং অন্য W আমি - 1 পণ্য পরিমাণ 1 যা S তুলনায় সস্তা হতে করার প্রয়োজন হয় (এগুলিকে ছুটির পণ্যগুলিতে কল করুন)।

জন্য টি আমি = (2b +1) আমি , 1≤ আমিk , একটি 3-পার্টিশন হলে এবং বব জন্য বিক্রি করতে পারেন শুধুমাত্র যদি 2b Σ 1≤ আমি T আমি :

  • যদি 3-পার্টিশন জন্য একটি সমাধান হয়, তাহলে সব বস্তু সংশ্লিষ্ট পণ্য W আমি , W , W যে একই বিন হস্তান্তর করা হয়েছে নিষেধাজ্ঞা লঙ্ঘন করে একই দাম দিয়ে লেবেল করা যেতে পারে। সুতরাং, সমাধান খরচ হয়েছে 2b Σ 1≤ আমি T আমি (মূল্য সঙ্গে পণ্য মোট পরিমাণ যেহেতু টি আমি হয় 2b )।
  • ববসের বিক্রয়ের সর্বোত্তম সমাধান বিবেচনা করুন। প্রথমে লক্ষ্য করুন যে কোনও সমাধানে 3 টিরও বেশি মূল পণ্য একই দামের লেবেল ভাগ করে নিয়েছিল, যেমন প্রতিটি মূল পণ্য যে "অত্যধিক" সেখানে একটি কম দামের ট্যাগ থাকে যা 3 টিরও কম মূলের পণ্যগুলিকে আটকে থাকে। এটি কোনও সমাধানের চেয়ে খারাপ যেখানে দামের লেবেলে হুবহু 3 টি মূল পণ্য থাকে (যদি বিদ্যমান থাকে)।
    এখন দামের প্রতি 3 টি মূল লেবেল সহ ববসের বিক্রয় নিয়ে এখনও কোনও সমাধান হতে পারে, তবে তাদের ছুটির পণ্যগুলি একই দামের লেবেল পরিধান করে না (বিনের ধরণের প্রবাহে)। সর্বাধিক ব্যয়বহুল দামের লেবেল ট্যাগগুলিকে ডব্লু আইয়ের মূল পণ্যটি বলুন যাতে সস্তা ট্যাগযুক্ত ছুটির পণ্য রয়েছে। এটি সূচিত করে যে 3 টি মূল লেবেল ডাব্লু আই , ডাব্লু জে , ডাব্লু এলসর্বাধিক ব্যয়বহুল দাম সহ ট্যাগ করা পর্যন্ত যোগ করবেন না । অত: পর, পণ্য মোট খরচ এই দাম দিয়ে বাঁধা অন্তত হয় 2b +1
    অতএব, এই জাতীয় সমাধানের জন্য টি কে (2 বি + 1) + অন্য কিছু অ্যাসাইনমেন্ট ব্যয়। যেহেতু একটি বিদ্যমান 3-পার্টিশনের জন্য সর্বোত্তম ব্যয় 2 বি Σ 1≤ ik t i , তাই আমাদের দেখাতে হবে যে কেবলমাত্র বিবেচিত কেসটি আরও খারাপ। এই যদি হয় তাহলে টি > 2b Σ 1≤ আমিk-1 টি আমি (মনে রাখবেন এটা K-1 সমষ্টি এখন)। সেট টি আমি= (2 বি + 1) আমি , 1≤ আমিকে , এই ক্ষেত্রে। এটিও ধারণ করে যে সবচেয়ে ব্যয়বহুল দামের ট্যাগটি "খারাপ" নয়, তবে অন্য কোনও।

সুতরাং, এটি ধ্বংসাত্মক অংশ ;-) তবে বিভিন্ন দামের ট্যাগগুলির সংখ্যা যদি ধ্রুবক হয়, তবে আপনি বহুগুণে সমাধানের জন্য ডায়নামিক প্রোগ্রামিং ব্যবহার করতে পারেন।


7

এটি গিরোর উত্তরের একটি ফলোআপ । দৃ় এনপি-কঠোরতা দেখানোর জন্য তাঁর নির্মাণটি পরিবর্তন করার ধারণা।

টিআমি=(2+ +1)আমিটিআমি=আমিপি=2Σ1আমিটিআমি

Wআমি-1পিপি

সুতরাং, কেবলমাত্র দাবি করা পুরষ্কার অর্জন করা সম্ভব, যদি সমস্ত পাতাগুলির পণ্যগুলি তাদের মূল পণ্য হিসাবে একই পুরষ্কার থাকে, যার অর্থ একটি 3-বিভাজন রয়েছে।

()এনহে(1)এনহে()


মূল স্ট্যাক-ওভারফ্লো প্রশ্নটিতে ক্রস পোস্ট।


আমি দুটি উত্তর গ্রহণ করতে পারি না, সুতরাং অন্তর্দৃষ্টিটির জন্য আপনাকে কেবল ধন্যবাদ জানাতে হবে :)
ভ্লাদিমির পানতেলিভ

0

এটি গেমিং তত্ত্বের প্রশ্নের মতো মনে হচ্ছে। সেক্ষেত্রে, একটি খুব সাধারণ উদ্দীপনা সমাধান:

আসুন ধরে নেওয়া যাক সীমাবদ্ধতাগুলি ফর্মের কিছু আক্রমণকারীকে উপস্থাপন করে

S-> AkSBk | AkBkS | SAkBk

সমাধানটি হ'ল প্রথমে এবং তারপরে উপাদানগুলির সীমাবদ্ধতা যুক্ত করা keep উদাহরণস্বরূপ: আসুন আমরা এন = 10 বলি এবং 2 টি সীমাবদ্ধতা রয়েছে, এ 1 বি 1 এবং এ 2 বি 2। তারপরে, রুট নোডে তিনটি বাচ্চা রয়েছে (স্তর 2)। এই 3 টি নোডের প্রত্যেকের 7 টি শিশু স্তর 3 থাকবে, 21 জনের প্রত্যেকের 6 টি স্তর 4 রয়েছে, ইত্যাদি, মূলত আপনি সমস্ত সম্ভাব্য সংমিশ্রণের মধ্য দিয়ে চলেছেন।

                এ 1 বি 1 --- স্তর 1 
               / | \
              / | \
             / | \
            / | \
    এ 1 এ 2 বি 2 এ 1 এ 1 বি 1 এ 2 বি 2 এ 2 বি 2 এ 1 বি 1 --- স্তর 2

এবং গাছ বৃদ্ধি যদিও এটি শুরুতে এটি একটি ভয়াবহ সমাধানের মতো দেখায়, আমি অনুভব করি আপনি কিছু হিউরিস্টিক্স এবং ছাঁটাই ব্যবহার করে খুব ব্যয়বহুল পাতাগুলি তাড়াতে ছাড়তে পারেন ...

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