অল্প সংখ্যক আয়তক্ষেত্রে একাধিক আয়তক্ষেত্রকে "নিরাময়" করার জন্য অ্যালগরিদম?


14

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

বলুন যে আমার কাছে বিভিন্ন আকার এবং রঙের আয়তক্ষেত্রগুলির গ্রিড রয়েছে এবং আমি একই রঙের লেআউটের প্রতিনিধিত্ব করতে আয়তক্ষেত্রের সংখ্যা হ্রাস করতে চাই (যুক্তিসঙ্গতভাবে সর্বোত্তমের নিকটে, অনুকূল প্রয়োজন হয় না) reduce

উপরের চিত্রটি একটি খুব সরল সরল কেস এবং আয়তক্ষেত্রগুলির মধ্যে শ্বেত স্পেস কেবল ভিজুয়ালাইজেশনের জন্য - এগুলি আসলে দৃ tight়ভাবে প্যাক করা হবে।

কোন পদ্ধতির বা অ্যালগরিদমের নাম কী (গুগল খুশি) যা আমাকে এটি করতে সহায়তা করতে পারে?


3
এই আয়তক্ষেত্রগুলি কোথা থেকে এসেছে সে সম্পর্কে কিছুটা বলতে পারেন? তারা কি কোনও অন্তর্নিহিত গ্রিডের সাথে (মোটামুটি) প্রান্তিককরণের ঝোঁক রাখে, বা কিছু সাধারণ বিল্ডিং ব্লক, বা কিছু ক্ষুদ্রতম "পরমাণু" আয়তক্ষেত্র ভাগ করে? এগুলি ঘোরানো যায়? এটি দেখতে এমন এক ধরণের সমস্যার মতো যা খুব সাধারণ ক্ষেত্রে খুব কাঁটাঝোপযুক্ত হতে পারে তবে আমরা যদি আপনার নির্দিষ্ট দৃশ্যে কিছু প্রতিবন্ধকতা বা সাধারণতাকে কাজে লাগাতে পারি তবে অনেক সহজ হতে পারে।
ডিএমগ্রিগরি

স্কোয়ারগুলির অন্তর্নিহিত গ্রিড রয়েছে (একটি চেকবোর্ডের মতো) এবং প্রতিটি আয়তক্ষেত্রগুলি অন্তর্নিহিত স্কোয়ারগুলির সাথে সীমানা ভাগ করে নিচ্ছে। অর্থাৎ আপনি প্রতিটি আয়তক্ষেত্রের উপরে / নীচে / বাম / ডান বর্ণিত করতে পূর্ণসংখ্যা ব্যবহার করতে পারেন। এর জন্য এগুলি 90 ডিগ্রি দ্বারা বিভাজ্য নয় এমন কোণগুলিতে ঘোরানো যায় না। এছাড়াও এনএক্সএম গ্রিড পুরোপুরি আয়তক্ষেত্র দিয়ে জনবহুল - গ্রিডের কোনও উন্মুক্ত অবস্থান নেই।
xaxxon

আমি কেবল উপরের উদাহরণটি (রঙিন দৃষ্টিকোণ থেকে) এর মতো দেখতে পাওয়া মামলাটি এড়াতে চাইছি, তবে এটি 1x1 আয়তক্ষেত্রের এক টন দিয়ে তৈরি এবং যখন আমি অনেকগুলিতে স্থান পরিচালনা করতে পারি তখন আমি সেগুলির প্রত্যেকটির প্রক্রিয়াজাত করছি I'm কম কল।
xaxxon

আমি কিছু প্রকারের অনুমান করছি "কেবল কোথাও শুরু করুন এবং একটি মাত্রায় বড় এবং বড় আয়তক্ষেত্রের চেষ্টা চালিয়ে যাবেন (উল্লম্বভাবে বলুন) যতক্ষণ না আপনি একটি বর্ণ সীমানা আঘাত করেন, তারপরে আপনি একটি সীমানা আঘাত না করা পর্যন্ত অন্য মাত্রাটি (অনুভূমিকভাবে) বাড়ান। তারপরে প্রথমে অনুভূমিকভাবে চেষ্টা করুন
.তখন

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

উত্তর:


15

প্রথমত, ইনপুটটিকে আরও ইউনিফর্ম করতে আমরা আপনার উত্সের আয়তক্ষেত্রগুলিকে আপনার অন্তর্নিহিত গ্রিডের কক্ষে রূপান্তর করতে পারি। (কার্যকরীভাবে সমস্যার উদ্রেক করা)

এটি আমাদের উত্সগুলি সন্ধান করবে যা উত্স আয়তক্ষেত্রের সাথে সরাসরি কাজ করার সময় সুস্পষ্ট নাও হতে পারে - বিশেষত যখন এতে একাধিক উত্সের আয়তক্ষেত্রগুলিকে আলাদা করে পুনরায় সংশ্লেষ করার জন্য জড়িত থাকে।

আয়তক্ষেত্রগুলি গ্রিড কোষ এবং পিছনে রূপান্তর করার উদাহরণ

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

কার্যকরভাবে আমরা এই পলিওমিনোকে আয়তক্ষেত্রগুলিতে ছড়িয়ে দেওয়ার একটি উপায় খুঁজতে চাই (দুর্ভাগ্যক্রমে আমি যে সাহিত্যের সন্ধান করতে পারি তার বেশিরভাগ বিপরীত সমস্যা সম্পর্কে: পলিওমিনোসগুলিতে আয়তক্ষেত্রকে বিচ্ছিন্ন করা এটিকে নেতৃত্বের সন্ধানে জটিল করে তোলে ...)

একটি সহজ পদ্ধতি হ'ল সংলগ্ন স্কোয়ারগুলির অনুভূমিক রানগুলি দীর্ঘ চর্মসার আয়তক্ষেত্রগুলিতে একত্রিত করা। তারপরে আমরা উপরের সারির সাথে তুলনা করতে পারি এবং আমাদের রান শুরু হয়ে শেষ হয়ে গেলে মিলিত হয় - হয় প্রতিটি রান / সারিটি যেমন শেষ হয়, বা আমরা প্রতিটি কক্ষকে বর্তমান রানটিতে যুক্ত করার জন্য বিবেচনা করি।

অনুভূমিক রানগুলিতে একটি পলিওমিনো সংক্ষেপণ করে, তারপর উল্লম্বভাবে মার্জ করা

আমি জানি না যে এই পদ্ধতিটি সর্বোত্তমভাবে কীভাবে যায়। মনে হয় এটি এখনও কিছুটা সমস্যার মধ্যে পড়তে পারে যখন সারিটি এটি বিবেচনা না করে এখনও পর্যন্ত দেখা সারিগুলির চেয়ে আলাদা বিভাজনের পরামর্শ দেয়:

3-আয়তক্ষেত্রযুক্ত সমাধানের সাথে একটি ক্ষেত্রে উদাহরণ, যেখানে উপরের পদ্ধতিটি 4 খুঁজে বের করে

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

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

আরও একটি পদ্ধতি যা আমি দেখছি তা হ'ল শীর্ষ সারিতে পাওয়া প্রথম রানটি নেওয়া এবং যতদূর সম্ভব এটিকে বাড়িয়ে দেওয়া। তারপরে যা আছে তার শীর্ষ সারিতে প্রথম রান করুন ... যদিও এটি উল্টানো টি আকারে ট্রিপ-আপ হয়ে যায়, তাই এটি সর্বোত্তমও নয়।

আমার মনে হচ্ছে অনুকূল বিভাজন সন্ধানের জন্য ডায়নামিক প্রোগ্রামিংয়ের সম্ভবত উপায় আছে তবে আমি এটি এখনও পাইনি।


দুর্দান্ত উত্তরের জন্য ধন্যবাদ! সমাধানটি যথেষ্ট দ্রুত দেখায় যে আমি এটিকে কয়েকটি ভিন্ন দিক দিয়ে চালাতে পারি এবং কোনটিকে সেরা - হরাইজেন্টাল বাম-> ডান, অনুভূমিক ডান-> বাম এবং তারপরেও প্রতিটি দিক দিয়ে উল্লম্বভাবে বেছে নিতে পারে could
xaxxon

2
সমস্যাটি হ'ল আমরা এমন আকার তৈরি করতে পারি যা প্রতিটি ঝাড়ু দিক থেকে অ্যালগরিদমকে বিভ্রান্ত করবে। এগুলি প্রকৃত ব্যবহারে প্রদর্শিত হতে পারে না তবে এটি এখনও আমাকে বাগড করে। আমি মনে করি এখনও একটি সাধারণ ফিক্স আছে ... প্রতিটি রানের মধ্যে লক্ষ্য করার মতো কিছু, এটির মাঝের রানের উপরে অবতল কোণ রয়েছে কিনা whether তারপরে যদি পরবর্তী কোনও রান ঠিক এই মুহুর্তে শেষ হয় তবে আমরা উপরের রানগুলি উল্লম্বভাবে বিভক্ত করে ব্যাকট্র্যাক করি। যদিও আমি পুরো বিশদটি বাছাই করি নি।
ডিএমগ্রিগরি

1
এছাড়াও, আমি নিশ্চিত নই কেন বন্যা ভরাট পদক্ষেপ প্রয়োজনীয়। গ্রিড পজিটিনো থেকে একটি দীর্ঘ চর্মসার আয়তক্ষেত্রের দিকে যাওয়ার সময় আপনি সেই 1xN আয়তক্ষেত্র তৈরি করতে গ্রিডের পুরো সারি বা কলামটি (যেদিকেই আপনি যাচ্ছেন) হাঁটতে পারেন। পলিওমিনো জানার দরকার নেই, তাই না?
xaxxon

আপনি ঠিক বলেছেন, বন্যা ভরাট কোনও প্রয়োজনীয় পদক্ষেপ নয়। আমি পরবর্তী পদক্ষেপগুলিতে একবারে কেবলমাত্র একটি বর্ণের অঞ্চলে দৃষ্টি নিবদ্ধ করার জন্য এটি অন্তর্ভুক্ত করেছি, তবে আপনি সহজেই আন্তঃনির্মিত একাধিক রঙিন অঞ্চলে সারি স্ক্যান পদ্ধতি প্রয়োগ করতে পারেন। ঘের-ভিত্তিক পদ্ধতিটির জন্য একবারে এক আকারের ঘেরের উপর কাজ করা দরকার।
ডিএমগ্রিগরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.