আয়তক্ষেত্র দ্বারা গ্রিড আচ্ছাদন


15

আমাদের কাছে একটি গ্রিড রয়েছে। আমরা এই গ্রিড উপর আয়তক্ষেত্র একটি সংগ্রহ আছে, প্রতিটি আয়তক্ষেত্র হিসাবে প্রতিনিধিত্ব করা যেতে পারে একটি বাই বাইনারি ম্যাট্রিক্স । আমরা সেই আয়তক্ষেত্রগুলি দিয়ে গ্রিডটি কভার করতে চাই।এন 1 এন 2 আরএন1×এন2এন1এন2আর

এই সেট কভার সমস্যার সিদ্ধান্ত সংস্করণ NP- সম্পূর্ণ?

  • ইনপুট: সংগ্রহ গ্রিডের আয়তক্ষেত্রগুলির আর এল } (ইনপুট আকার: এন 1 এন 2 এল ), এবং কে এন +সি={আর1,আর2,...,আরএল}এন1এন2এলকেএন+ +
  • আউটপুট: উপসেট সঙ্গে | এস | And কে এবং এস প্রতিটি কক্ষের জন্য অন্তত একটি আয়তক্ষেত্র coveringেকে রাখে।এসসি|এস|কেএস

সমস্যার দৃশ্যমান উদাহরণ example

আমি দেখতে পেলাম যে 1D কেস ( ) বহুগুণে ডায়নামিক প্রোগ্রামিংয়ের মাধ্যমে সমাধান করা যেতে পারে: যে কোনও অনুকূল কভারটি ইউনিয়ন হতে চলেছেএন2=1

  • প্রথম কোষকে আচ্ছাদন করার জন্য কয়েকটি সাবপ্রব্লেমের জন্য একটি অনুকূল কভার ।এন1-এন1
  • একটি 1 ডি আয়তক্ষেত্র, অর্থাৎ একটি বিরতি, বাকি কোষকে আবৃত করে।এন1

আমি মনে করি না তবে ডিপি 2D সমস্যাটির জন্য কাজ করতে পারে: 1D সমস্যার জন্য, আপনার সমাধান করার জন্য একটি সাবপ্রব্লেম রয়েছে, তবে আপনার 2 ডি এর জন্য রয়েছে ( এন 1 + এন 2)এন1সাব-প্রবলেমগুলি (গ্রিডে উত্তর-পূর্ব জাল পথগুলির সংখ্যা)।(N1+N2N2)

আমি মনে করি সমস্যাটি এনপি হতে পারে তবে আমি নিশ্চিত নই (যদিও এটি পি এর চেয়ে কঠিন বলে মনে হচ্ছে), এবং আমি এনপি-সম্পূর্ণ সমস্যার (3-স্যাট, ভার্টেক্স কভার, ...) থেকে বহুবর্ষীয় হ্রাস সন্ধান করতে সফল হইনি)

যে কোনও সহায়তা বা ইঙ্গিতটি স্বাগত।


3
ইঙ্গিত: প্রান্তবিন্দু কভার থেকে কমানো, যা আমরা একটি তৈরি জন্য চেহারা দ্বারা | ভি | ব্লকের গ্রিড, যার প্রতিটি ম্যাট্রিক্স উপাদানগুলির একটি 3 বাই 3 ব্লক। প্রতিটি ব্লকের ব্লক একটি প্রান্তের সাথে মিলে যায় এবং এতে 2 টি বিশেষভাবে নকশাগুলি অন্তর্ভুক্ত থাকে যা এর শেষ বিন্দু অনুসারে থাকে। প্রতিটি ভার্টেক্সের জন্য উচ্চতা- 3 | E | , প্রস্থ -১ আয়তক্ষেত্র যা সেই শীর্ষবর্ণের সাথে সংশ্লিষ্ট 3-বাই -3 ব্লকের কলামের মধ্য কলামের মধ্য দিয়ে যায়। আপনি কিভাবে কোনো বৈধ মোট জোর করতে পারেন ঠিক খরচ -vertex কভার | E | ( | ভি | + 3 )|E||V|3|E|k ? (আপনার অন্যান্য আয়তক্ষেত্রগুলির প্রয়োজন হবে))|E|(|V|+3)+k
j_random_hacker

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

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

1
হ্যাঁ, আমার মনে যে হ্রাস ছিল তা প্রায়! :) আমি আপনার "টাইপ 4" আয়তক্ষেত্রগুলি এক প্রান্তে সামান্য দীর্ঘ করে দিয়েছি: যেখানে আপনার ব্লকের মধ্যে 2 টি ঘর রয়েছে, সেখানে আমার সবকটি দখল আছে the প্রান্তের জন্য বিশেষ "টাইপ 3" আয়তক্ষেত্রের পরিবর্তে, আমি পুরো শীর্ষ সারিটি ব্যবহার করি, কেবল জন্য "টাইপ 2" আয়তক্ষেত্রের মতো । অবশেষে আমার প্রতিটি বাম এন্ডব্লকের মধ্যে কেন্দ্র-বাম এবং নীচে-বাম কক্ষগুলি দখল করে একটি আয়তক্ষেত্র রয়েছে (প্রতিটি ডান এন্ডব্লকের জন্য অনুভূমিকভাবে উল্টানো হয়েছে)। সুতরাং আপনি একটি বা প্যাটার্ন ব্যবহার করে এন্ডব্লক সহ এবং সমস্ত ব্লকের নীচের 2 সারিটি কভার করতে পারেন । একটি<<|==|
j_random_hacker

1
আমি তোমার -বি- 3 | ভি | হ্রাস ধারণা। এটির সাথে, 3 এর সাথে ভিন্ন নয় E | -বি- 3 | ভি | হ্রাস, ন্যূনতম-ব্যয় সমাধান হতে পারে যা ভার্টেক্স কভারের সাথে সামঞ্জস্য নয় - তবে এই জাতীয় সমস্ত সমাধানগুলি আপনার শেষ বুলেট পয়েন্টের মতো একই যুক্তি ব্যবহার করে সমান (ল্য ন্যূনতম) -রকম সমাধানে রূপান্তরিত হতে পারে, সুতরাং এটি নয় হ্রাসের জন্য সমস্যা :)||3|ভী|3||3|ভী|
j_random_hacker

উত্তর:


4

J_random_hacker এর ইঙ্গিতকে ধন্যবাদ, আমি গ্রিড সমস্যায় ভার্টেক্স কভার হ্রাস করার একটি সমাধান পেয়েছি:

আমরা একটি -বি- | ভি | 3-বাই -3 ব্লকের গ্রিড, অর্থাৎ একটি 3 | E | -বি- 3 | ভি | গ্রিড সঙ্গে ছেদচিহ্ন কলাম হিসাবে আদেশ { বনাম 1 , ... , বনাম এন 1 } এবং প্রান্ত সারি যেমন আদেশ { 1 , ... , এন 2 } । আমরা এই গ্রিডে আয়তক্ষেত্রগুলি তৈরি করব (নীচের অঙ্কনটি ব্যবহৃত বিভিন্ন আয়তক্ষেত্রগুলি বোঝার ক্ষেত্রে অনেক সহায়তা করবে)|||ভী|3||3|ভী|{বনাম1,...,বনামএন1}{1,...,এন2}

এখানে চিত্র বর্ণনা লিখুন

|ভী|

(আমি,বনাম)আমি=(বনামএকটি,বনাম)

  • <একটি<
  • =একটি=
  • একটি<<

|||ভী|

(আমি,বনামএকটি)(আমি,বনাম)

  • (আমি,বনামএকটি)(আমি,বনাম)

2||

এখন, প্রতিটি প্রান্তের জন্য আমরা প্রান্তেরগুলির মধ্যে 4 ধরণের আয়তক্ষেত্রগুলি তৈরি করি, আমাদের দ্বিতীয় সারির জন্য দুটি আয়তক্ষেত্র রয়েছে:

  • প্রথম ব্লকের কেন্দ্রীয় বর্গক্ষেত্র থেকে দ্বিতীয় ব্লকের মধ্য-বাম স্কোয়ারে যাওয়ার একটি।
  • প্রথম ব্লকের মধ্য-ডান চৌকো থেকে একটি দ্বিতীয় ব্লকের কেন্দ্রীয় স্কোয়ারে যাচ্ছে।
  • এবং তৃতীয় সারির জন্য একই দুটি আয়তক্ষেত্র।

4||

এখন, গ্রিডটি coverাকতে:

  • ||(|ভী|+ +2)|ভী|+ +4||

কভার করার জন্য, প্রদত্ত প্রান্তের জন্য, প্রান্তটির মধ্যবর্তী অংশটি এখনও অবধি আবৃত হয়নি (ব্লকের সারিটির দ্বিতীয় এবং তৃতীয় সারি), আমরা হয় ব্যবহার করতে পারি:

  • প্রকার 4 এর চারটি আয়তক্ষেত্র।
  • প্রকার 1 এর একটি আয়তক্ষেত্র এবং প্রকার 4 এর দুটি আয়তক্ষেত্র।

নোট করুন যে কোনও ক্ষেত্রে আমাদের কমপক্ষে 4 প্রকারের দুটি আয়তক্ষেত্র প্রয়োজন।

||(|ভী|+ +4)+ +

  • সেগুলি যদি কে এর চেয়ে কম ভার্টেক্স সহ একটি বৈধ মেরুদণ্ড কভার থাকে: আমরা এটি ব্যবহার করি ||(|ভী|+ +2)

  • ||(|ভী|+ +4)+ +||(|ভী|+ +4)+ +

||(|ভী|+ +6)+ +|ভী|9|ভী|||

||3|ভী||ভী|+ +4||3||+ +

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