ক্যাপ্টেন কাজুনের ফেরি বোটে জুম্বিনিসকে বসার জন্য অ্যালগরিদম?


12

আমি সম্প্রতি জুম্বিনিসের লজিকাল জার্নির রিলিজ খেলছি এবং বিভিন্ন ধাঁধা সমাধান করতে পারে এমন কিছু কম্পিউটার অ্যালগরিদম বাস্তবায়নের চেষ্টা করছি। আমি ক্যাপ্টেন কাজুনের ফেরি বোট ধাঁধাটির কাছে কীভাবে যেতে পারি তাতে আটকে আছি।

অপরিচিতদের জন্য, একটি জুম্বিনী একটি প্রাণী যা 4 টি বৈশিষ্ট্যযুক্ত: চুল, চোখ, নাক এবং পা। এই বৈশিষ্ট্যের প্রত্যেকটির 5 টি সম্ভাব্য মান রয়েছে; উদাহরণস্বরূপ, একটি জুম্বিনীর পায়ে চাকা, রোলার স্কেট, স্নিকার্স, একটি বসন্ত বা একটি চালক হতে পারে। নোংরা চুল, চশমা, সবুজ নাক এবং স্নিকার সহ জুম্বিনীর উদাহরণ এখানে:

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

আসনগুলির বিন্যাস স্তর অনুসারে পরিবর্তিত হয়; সংক্ষিপ্ততার জন্য, আসুন "খুব হার্ড" স্তরের উপর ফোকাস করুন, যেখানে 16 টি আসন 4-বাই -4 গ্রিডে সাজানো হয়েছে। এখানে একটি উদাহরণ রয়েছে যেখানে ১৫ টি জুম্বিনিস বৈধভাবে বসেছে, তবে ডাকের উপর দাঁড়িয়ে চূড়ান্ত জুম্বিনীকে শেষ ফাঁকা আসনে বসানো যাবে না, কারণ তিনি তার ডানদিকে জুম্বিনীর সাথে কোনও বৈশিষ্ট্য ভাগ করে নেবেন না:

প্রায় সমাপ্ত ধাঁধা উদাহরণ

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


2
এটি আমাকে সুডোকু সম্পর্কে মনে করিয়ে দেয় এবং সুডোকু সমাধানকারীরা সাধারণত কিছু প্রকার ব্যাকট্রাকিং প্রয়োগ করে।
ম্যাটেকাপু

2
আপনি যদি আরও জটিল জটিল সাহিত্য আবিষ্কার করতে প্রস্তুত এবং প্রস্তুত হন তবে আপনি অনুসন্ধান করে দরকারী তথ্য সন্ধান করতে পারেন Subgraph Isomorphism Problem। সমস্যাটি হ'ল অন্য গ্রাফে একটি গ্রাফ খুঁজে পাওয়া। আপনার ক্ষেত্রে সাবগ্রাফটি আসন বসানো হবে (প্রান্তগুলি সংলগ্ন), যখন প্যারেন্ট গ্রাফটি হবে জুমবিনিস, যেখানে সংযোগগুলি একটি ভাগ করা বৈশিষ্ট্যের উপস্থিতি হবে। নোট করুন যে সাধারণভাবে সমস্যাটি এনপি-সম্পূর্ণ এবং সাধারণত ব্যাকট্র্যাকিংয়ের মাধ্যমেও করা হয়, তবে কিছু বিশেষ ক্ষেত্রে (যার মধ্যে আপনার গ্রাফটি খুব ভাল হতে পারে), বহুভুজ বা এমনকি লিনিয়ার সমাধানগুলি সম্ভব।
Ordous

এটি দুর্দান্ত ধারণা, আমি ছোটবেলায় জুম্বিনিসকে পছন্দ করতাম - আমি সম্ভবত একই জিনিসটি করতে পারি!
অ্যালেক্সফক্সগিল

উত্তর:


8

"ব্যাকট্র্যাকিং অ্যালগরিদম" এর দরকারী গুগল অনুসন্ধান শব্দটির জন্য @ ম্যাটটেকাপুকে ধন্যবাদ। এটি আমার প্রয়োজনীয় চিন্তাভাবনার জন্য খাবার দিয়েছে।

আমার বর্তমান স্বজ্ঞাততাটি হ'ল প্রথমে 4 টি প্রতিবেশী - কেন্দ্রের আসনগুলি পূরণ করা এবং কর্নার আসনগুলিতে সংরক্ষণ করা ভাল - যা কেবলমাত্র 2 জন প্রতিবেশী - শেষ পর্যন্ত। সুতরাং আমি এই ক্রমে 16 টি খালি আসনকে একটি লিঙ্ক-তালিকায় সাজিয়েছি:

13   5   6  14

 7   1   2   9

 8   3   4  10

15  11  12  16

এখানে কিছু সিউডোকোড রয়েছে যা আমি ফাংশনটির বর্ণনা দিয়েছি যা আমি লেখার ক্ষতি করেছিলাম। আপনি এটিকে 16 জুম্বিনিসযুক্ত একটি তালিকা এবং লিঙ্কযুক্ত তালিকার প্রথম আসনে একটি পয়েন্টার খাওয়ান।

function recursively_assign_seat(zoombini_list, seat):

    if zoombini_list is empty:
        return True

    else:
        for each z in zoombini_list:

            for each n in seat.neighbors:
                if not allowed_as_neighbors(z, n):
                    next z

            seat.occupant ← z
            if recursively_assign_seat(zoombini_list.remove(z), seat.next):
                return True
            else:
                seat.occupant ← None

        return False

এটি আসলে আশ্চর্যজনকভাবে দ্রুত চালায়! আমি এতে খুব খুশি হয়েছিলাম।

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


1
আপনি যখন পূরণ করেন 8আপনি কেবল সংলগ্ন 2তবে আপনি এমন ফিলিং করতে পারবেন 9যা উভয় সংলগ্ন 7এবং 3। যদিও এটি সমাধান সুন্দর কাজ!
অ্যালেক্সফক্সগিল

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