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