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