শূন্য-এক পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং (আইএলপি) এ বুলিয়ান লজিক অপারেশনগুলি প্রকাশ করুন


58

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

আমি লিনিয়ার সীমাবদ্ধতাগুলি ব্যবহার করে এই 0/1-মানের ভেরিয়েবলগুলিতে বুলিয়ান অপারেশন প্রকাশ করতে চাই। কিভাবে আমি এটি করতে পারব?

আরও সুনির্দিষ্টভাবে, আমি (বুলিয়ান অ্যান্ড), (বুলিয়ান ওআর), এবং (বুলিয়ান নট) সেট করতে চাই। আমি 0/1 এর সুস্পষ্ট ব্যাখ্যাটি বুলিয়ান মান হিসাবে ব্যবহার করছি: 0 = মিথ্যা, 1 = সত্য। গুলি এর সম্পর্কিত কিনা তা নিশ্চিত করতে আমি কীভাবে আইএলপি সীমাবদ্ধতাগুলি লিখতে পারি ?y1=x1∧x2y2=x1∨x2y3=¬x1yixi

(এটি সার্কিটস্যাট থেকে আইএলপিতে হ্রাসের অনুরোধ হিসাবে বা স্যাটকে আইএলপি হিসাবে প্রকাশ করার উপায় জিজ্ঞাসা হিসাবে দেখা যেতে পারে, তবে এখানে আমি উপরে উল্লিখিত যৌক্তিক ক্রিয়াকলাপগুলি এনকোড করার জন্য একটি সুস্পষ্ট উপায় দেখতে চাই))

উত্তর:


66

যৌক্তিক এবং: লিনিয়ার সীমাবদ্ধতাগুলি , , , , যেখানে একটি পূর্ণসংখ্যা হিসাবে সীমাবদ্ধ। এটি কাঙ্ক্ষিত সম্পর্ককে কার্যকর করে। (খুব সুন্দর ঝরঝরে যে আপনি এটি কেবল লিনিয়ার বৈষম্য দিয়ে করতে পারেন , হাহ?)y1≥x1+x2−1y1≤x1y1≤x20≤y1≤1y1

লজিকাল OR: লিনিয়ার সীমাবদ্ধতা , , , , যেখানে একটি পূর্ণসংখ্যা হিসাবে সীমাবদ্ধ।y2≤x1+x2y2≥x1y2≥x20≤y2≤1y2

যৌক্তিক : ব্যবহার করুন ।y3=1−x1

যৌক্তিক : প্রকাশ করার জন্য (যেমন, ), আমরা লজিক্যাল ওআর এর জন্য অভিযোজিত করতে পারি। বিশেষত, , , , , যেখানে একটি পূর্ণসংখ্যা হতে বাধ্য হয়।y4=(x1⇒x2)y4=¬x1∨x2y4≤1−x1+x2y4≥1−x1y4≥x20≤y4≤1y4

জোরপূর্বক যৌক্তিক : এই প্রকাশ করার জন্য অবশ্যই ধারণ করতে হবে, কেবল লিনিয়ার সীমাবদ্ধতা (ধরে যে এবং ইতিমধ্যে বুলিয়ান মানগুলিতে আবদ্ধ)।x1⇒x2x1≤x2x1x2

: প্রকাশ করতে (এক্সক্লুসিভ-বা এবং ), রৈখিক বৈষম্য , , , , , যেখানে একটি পূর্ণসংখ্যা হিসাবে সীমাবদ্ধ।y5=x1⊕x2x1x2y5≤x1+x2y5≥x1−x2y5≥x2−x1y5≤2−x1−x20≤y5≤1y5


এবং, একটি বোনাস হিসাবে, আরও একটি কৌশল যা শূন্য-ওয়ান (বুলিয়ান) ভেরিয়েবল এবং পূর্ণসংখ্যের ভেরিয়েবলের মিশ্রণযুক্ত সমস্যাগুলি তৈরি করতে সাহায্য করে:

বুলিয়ান (সংস্করণ 1) এ কাস্ট: ধরুন আপনি একটি পূর্ণসংখ্যা পরিবর্তনশীল আছে , এবং আপনি সংজ্ঞায়িত করতে চান যাতে যদি এবং হলে । আপনি যদি অতিরিক্ত জানেন তবে আপনি লিনিয়ার অসমতা , , ; যাইহোক, এই শুধুমাত্র আপনি একটি ঊর্ধ্ব জানেন এবং এর আবদ্ধ LOWER কাজ করে । বা, আপনি যদি তা জানেন তবেকিছু ধ্রুবক জন্য (এটি, ) , তবে আপনি এখানে বর্ণিত পদ্ধতিটি ব্যবহার করতে পারেনxyy=1x≠0y=0x=00≤x≤U0≤y≤1y≤xx≤Uyx|x|≤U−U≤x≤UU। উপরের একটি উপরের আবদ্ধটি জানলে এটি কেবলমাত্র প্রযোজ্য ।|x|

বুলেয়ানকে (সংস্করণ 2) কাস্ট করুন: আসুন একই লক্ষ্যটি বিবেচনা করি, তবে এখন আমরা উপরের একটি আবদ্ধ জানি না । তবে, ধরে নেওয়া যাক আমরা জানি । লিনিয়ার সিস্টেমে আপনি কীভাবে সেই সীমাবদ্ধতাটি প্রকাশ করতে সক্ষম হবেন তা এখানে's প্রথমে একটি নতুন পূর্ণসংখ্যার ভেরিয়েবল প্রবর্তন করুন । বৈষম্যগুলি , , । তারপরে, উদ্দেশ্য ফাংশনটি চয়ন করুন যাতে আপনি হ্রাস করেন । এটি কেবল তখনই কাজ করে যদি আপনার ইতিমধ্যে উদ্দেশ্যমূলক কোনও কাজ না থাকে। আপনি যদি অ নেতিবাচক পূর্ণসংখ্যা ভেরিয়েবল এবং আপনি Booleans থেকে তাদের সব নিক্ষেপ করতে চান, যাতে যদিxx≥0t0≤y≤1y≤xt=x−ytnx1,…,xnyi=1xi≥1 এবং যদি , তবে আপনি ভেরিয়েবলগুলি অসমতার সাথে পরিচয় করিয়ে দিতে পারেন , , এবং উদ্দেশ্য ফাংশনটি সংজ্ঞায়িত করুন কমানোর জন্য । আবার এটি কেবল উদ্দেশ্যমূলক ফাংশনটি সংজ্ঞায়িত করার প্রয়োজন ছাড়া আর কিছুই কাজ করে না (যদি, বুলিয়ান থেকে বর্ণ বাদেও আপনি কেবল ফলাফলের আইএলপি এর সম্ভাব্যতা যাচাই করার পরিকল্পনা করছিলেন, ভেরিয়েবলের কিছু ক্রিয়াকে ন্যূনতম / সর্বাধিক করার চেষ্টা করবেন না)।yi=0xi=0nt1,…,tn0≤yi≤1yi≤xiti=xi−yit1+⋯+tn


কিছু অনুশীলন সমস্যা এবং কাজের উদাহরণগুলির জন্য, আমি পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামগুলি সূচনা করার পরামর্শ দিচ্ছি : একটি রোগীদের গ্যালারী ।


কোন লিনিয়ার প্রোগ্রামিং সলভার এটি সমাধান করতে পারে? * .lp বা * .mps- বিন্যাসের একদিকে সীমাবদ্ধতার এক পাশের একটি স্থির পূর্ণসংখ্যার হতে হবে, ভেরিয়েবল নয়।
— বক্সী

4
@ বক্সি, আমি * .lp বা * .mps ফর্ম্যাট সম্পর্কে কিছুই জানি না, তবে প্রতিটি পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং সলভার এটি সমাধান করতে সক্ষম হওয়া উচিত। মনে রাখবেন যে আপনার যদি মতো কিছু থাকে তবে এটি সমতুল্য , এটি আপনি যে ফর্ম্যাটটি চেয়েছিলেন সেটি হতে পারে। x≤yy−x≥0
— ডিডাব্লিউ

আমি আবার এটি পরীক্ষা করে। lp_solve এটি সমাধান করতে পারে তবে উদাহরণস্বরূপ qsopt পারে না। আমি জানি না কেন। তবে ধন্যবাদ <3
— বক্সী

@boxi, আমি শুধু QSopt অনলাইন অ্যাপলেট গুই চেক করা এবং এটি একবার আমি পরিবর্তন সীমাবদ্ধতার এই ধরনের হ্যান্ডেল পারে থেকে , তাই আমি নিশ্চিত কি হচ্ছে নই। (আমি * .lp ফর্ম্যাটটি ব্যবহার করেছি)) যদি কোনও আইএলপি সলভার এই সিস্টেমগুলি পরিচালনা করতে অক্ষম হয় তবে আমি অবাক হব। কিউস্পট সম্পর্কে আপনার আরও প্রশ্ন থাকলে আপনার সম্ভবত তাদের QSopt সমর্থন ফোরামে নেওয়া উচিত। x≤yx−y≤0
— DW

1
@ প্রমোদ, ভাল ধরা! ত্রুটি চিহ্নিত করার জন্য আপনাকে ধন্যবাদ। আপনি একদম ঠিক বলছেন. আমি কীভাবে সেই কেসটি মডেল করব সে সম্পর্কে একটি নতুন প্রশ্ন জিজ্ঞাসা করেছি এবং যখন আমরা তার উত্তর পাই তখন আমি এই উত্তরটি আপডেট করব।
— DW

19

লজিকাল এবং সম্পর্কটি তিনটি সীমাবদ্ধতার পরিবর্তে (অন্য সমাধানের মতো) এক সীমাবদ্ধতায় মডেল করা যায় । সুতরাং তিনটি সীমাবদ্ধতার পরিবর্তে এটি একক পরিসীমা বাধা ব্যবহার করে লেখা যায় একইভাবে, যৌক্তিক OR:

y1≥x1+x2−1,y1≤x1,y1≤x2,
0≤x1+x2−2y1≤1.
0≤2y1−x1−x2≤1.

না হিসাবে, এই ধরনের কোনও উন্নতি উপলব্ধ নেই।

জন্য সাধারণভাবে ( -way এবং) বাধ্যতা হবে: একইভাবে OR: y=x1∧x2∧⋯∧xnn

0≤∑xi−ny≤n−1.
0≤ny−∑xi≤n−1.

একটি খুব সিমিলার পদ্ধতি এই কাগজে রয়েছে: ncbi.nlm.nih.gov/pmc/articles/PMC1865583
— আবদেলমনয়েম মাহমুদ আমের

3

আমি XOR y = x1⊕x2 এর জন্য সংক্ষিপ্ত সমাধান পেয়েছি (x এবং y বাইনারি 0, 1)

কেবল একটি লাইন: x1 + x2 - 2 * z = y (z কোনও পূর্ণসংখ্যা)


আইএলপিতে সাম্যতা প্রকাশ করতে আপনার দুটি অসমতার প্রয়োজন। এর পরে, সমাধান এড়াতে আপনার আরও দুটি দরকার, । সুতরাং এই উত্তরটির চারটি অসমতা এবং ডিডব্লিউর উত্তরের ছয় অসমতার তুলনায় একটি অতিরিক্ত পরিবর্তনশীল রয়েছে। x1=1,x2=0,z=200,y=−1990≤y≤1
— জাইকি

আইএলপিতে সাম্যতা প্রকাশের জন্য কেবল একটি সমীকরণ প্রয়োজন, এটি এলপি তত্ত্ব এবং সফ্টওয়্যার যেমন গুরুবি বা সিপিএলএক্স উভয় ক্ষেত্রেই সত্য। @ জাইক, আমি অনুমান করেছি যে আপনার অর্থ বোঝাতে "এ" নেক "প্রকাশের জন্য দুটি অসমতার প্রয়োজন" "≠b
— হোয়াইটগ্রিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.