কোনও গ্রাফকে সংযুক্ত রেখে প্রান্তের সংখ্যা হ্রাস করুন


10

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

আমি চূড়ান্ত অন্ধকূপ টোগোগ্রাফি উত্পন্ন 2 উপায় দেখেছি:

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

আমার ধারণাটি এতে অন্তর্ভুক্ত:

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

এইভাবে আমি নিশ্চিত করি যে সমস্ত কক্ষের 2 ডি বিশ্বে একটি সম্ভাব্য অবস্থান রয়েছে এবং সংযুক্ত গ্রাফ দ্বারা সঠিকভাবে ম্যাপ করা হয়েছে।

আমার সমস্যাটি হ'ল রুমগুলি সংযুক্ত করার জন্য অনেকগুলি দরজা এবং করিডোর রয়েছে।

সুতরাং আমি একটি অ্যালগরিদম চাই যা কোনও সংযুক্ত পুনঃনির্দেশিত গ্রাফের প্রান্তকে কমিয়ে দেয় তবে এটিকে সংযুক্ত রেখে (সমস্ত নোডের কাছে পৌঁছনীয় থাকে) শেষ পর্যন্ত।


আপনার ধারণাটি মূলত একটি বাইনারি অনুসন্ধান গাছ, যদি আপনি জানতে চান। আমি এটি ব্যবহার করেছি; এটি বরং সুন্দর অন্ধকূপগুলি তৈরি করে এবং এটি সহজ। :)
কম্যুনিস্ট হাঁস

2
এফওয়াইআই: একটি সম্পূর্ণ গ্রাফের সমস্ত জোড়ের কোণগুলির মধ্যে প্রান্ত রয়েছে , সুতরাং (অনুমান করে ডুপ্লিকেট প্রান্তগুলি অনুমোদিত নয়) আপনি কোনও প্রান্ত সরাতে পারবেন না এবং এখনও সম্পূর্ণ গ্রাফ থাকতে পারে। সঠিক শব্দটি একটি সংযুক্ত গ্রাফ
মাইকেল ম্যাডসেন

বাইনারি অনুসন্ধান ট্রি, সংযুক্ত গ্রাফ, ডানদিকে। আমি প্রচলিত জিনিসের নাম নিয়ে খুব খারাপ।
স্প্লো

উত্তর:


13

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


1
ওহ ঠিক আছে, অবশ্যই সর্বনিম্ন ছড়িয়ে পড়া গাছ! ভাল ধারণা, ধন্যবাদ।
স্প্লো


0

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

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