গ্রাফ নোডগুলির মধ্যে এলোমেলোভাবে প্রান্তগুলি উত্পন্ন করার জন্য একটি ভাল পদ্ধতি কী?


10

আমি একটি 4 এক্স স্পেস গেমের জন্য এলোমেলো মানচিত্র জেনারেটর করছি।

গেমের প্রতিটি নোড একটি 2 ডি গ্রিডের এলোমেলো (x, y) স্থানাঙ্কে স্থান। একটি নোডের অন্য নোডের এক বা একাধিক দ্বি-দিকীয় প্রান্ত থাকতে পারে (ওয়ার্মহোলগুলি উপস্থাপন করে)। সমস্ত নোডের কমপক্ষে একটি ওয়ার্মহোল থাকতে হবে এবং সমস্ত নোড অবশ্যই একই গ্রাফের অন্তর্ভুক্ত।

আদর্শভাবে, একটি ওয়ার্মহোল সর্বাধিক দৈর্ঘ্যের অতিক্রম করা উচিত নয় এবং যদি সম্ভব হয় তবে কৃমিরগুলি একে অপরকে অতিক্রম করবে না।

আমার নিষ্পাপ বাস্তবায়নটি সমস্ত নোডের মাধ্যমে পুনরাবৃত্তি হয় এবং নিকটতম 3 টি নোডের নোড লিঙ্ক থাকে। তবে আমি অসংখ্য সাব গ্রাফ দিয়ে শেষ করছি। নোডগুলির জন্য প্রান্তগুলি তৈরি করার একটি ভাল পদ্ধতি কী?


ছায়াপথ জুড়ে ছড়িয়ে ছিটিয়ে থাকা নোডগুলি কীভাবে রয়েছে? মানে আমি কি ধরে নিতে পারি যে গ্যালাক্সির প্রতিটি পয়েন্টের জন্য (এক্স, ওয়াই) একটি নোড আছে? বা কমপক্ষে তাদের বেশিরভাগের জন্য বা না?
Ali1S232

সমস্ত স্থানাঙ্কের নোড থাকবে না। আমি প্রায় 40% বলব।
এক্সট্রাকুন

উত্তর:


9

একটি অনুরূপ প্রশ্নের ভাল উত্তর এখানে।

প্রথমে একটি সংযুক্ত গ্রাফ তৈরি করুন, সম্ভবত উপরের লিঙ্কটির মতো ন্যূনতম বিস্তৃত গাছ ব্যবহার করুন। "ন্যূনতম" গাছটিকে এলোমেলো করে তুলতে তিনি এলোমেলো প্রান্তের ওজন ব্যবহার করার পরামর্শ দেন। তারপরে আপনি এলোমেলোভাবে আরও প্রান্ত যুক্ত করতে পারেন এটি কেবল সর্বনিম্ন গাছ নয়। আপনি এলোমেলো প্রান্তগুলি কীভাবে যুক্ত করবেন তা নির্ভর করে আপনি কোন ধরণের গ্রাফ চান তা নির্ভর করে।


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


+1 যেহেতু এটি একটি খুব ভাল উত্তর তবে আমি কেবল এই জাতীয় প্রজন্মকে পছন্দ করি না তাই আগামী কয়েক দিনের মধ্যে আমি আরও ভাল অ্যালগরিদমের কথা ভাবব!
Ali1S232

হ্যাঁ এর কোনও 'সঠিক' উত্তর নেই, অন্যরা কীভাবে আসে সে সম্পর্কে আমি আগ্রহী।
ফিলিপ

অফটোপিক, তবে আমি আমার উত্তরটির সাথে লিঙ্ক করতে যাচ্ছি! : পি
r2d2rigo

এইভাবে আমি এর জন্য পয়েন্ট পেয়েছি, হা!
ফিলিপ

7

আপনার সমস্যার প্রধান প্রতিবন্ধকতাগুলি দ্বিগুণ: 1-সংযুক্ত গ্রাফ তৈরি করা; এবং এটি প্রক্সিমাল সংযোগ সহ তৈরি করা creating ফিলিপের উত্তর, কিছুটা মূল্যবান হলেও এটি আপনার সমস্যার সমস্ত সীমাবদ্ধতাগুলির সমাধান করে না

আদর্শভাবে, একটি ওয়ার্মহোল সর্বাধিক দৈর্ঘ্যের অতিক্রম করা উচিত নয় এবং যদি সম্ভব হয় তবে কৃমিরগুলি একে অপরকে অতিক্রম করবে না।

আপনি যখন মেঘের সাথে নির্বিকারভাবে সংযোগ স্থাপন করেন, তখন আপনি এই শর্তগুলি পূরণ না হওয়ার ঝুঁকিটি (এবং একটি উচ্চতর) চালান run

সুতরাং আপনি দেখুন, সমস্যা এত সংযোগগুলির মধ্যে একটি হিসাবে নৈকট্য হিসাবে সংযোগের এত বেশি নয়। গ্রাফের প্রতিটি নোডকে অন্য নোডের সাথে সংযুক্ত করা তুচ্ছ, তবে সামগ্রিক গ্রাফের 1-সংযুক্তি বজায় রাখার সময় কেবল নিকটতমদের সাথে সংযোগ স্থাপন করা কিছুটা জটিল।

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

  1. এলোমেলোভাবে আপনার ফুল পয়েন্ট ক্লাউড তৈরি করুন।
  2. ডেলাউনয়ে-এটি ত্রিভুজুলেট করুন।
  3. গ্রাফটি তৈরি করুন (পয়েন্টের সংযোগ)। এর মধ্যে আপনি প্রথমে পুরো গ্রাফ (প্রতিটি তারা) তৈরি করতে পারেন এবং তারপরে নাবালিকা হিসাবে গ্রাফ অর্জন করতে পারেন পদক্ষেপ 4 করার সময় আপনার ওয়ার্মহোল-সংযুক্ত অঞ্চলের প্রতিনিধিত্বকারী করতে পারেন ternative বিকল্পভাবে আপনি কেবলমাত্র কৃমি-সংযুক্ত অঞ্চলগুলি তৈরি করে, অন্যদিকে কাজ করতে পারেন around প্রথমে সুপারগ্রাফ নোড হিসাবে এবং তারপরে দ্বিতীয় পর্যায়ে এই অঞ্চলের বাউন্ডিং ভলিউমের মধ্যে স্বতন্ত্র তারা উত্পন্ন করুন (এগুলির জন্য আমি ডেলাউন ট্রায়াঙ্গুলেশনের গ্রাফ দ্বৈত - 3 মাত্রায় ভোরোনাই চিত্রটি উপসর্গ হিসাবে প্রকাশ করব) উপগ্রাফ হিসাবে। এখন আপনার কাছে সর্বাধিক সংযুক্ত স্টার ক্লাস্টার রয়েছে এবং সমস্ত গুচ্ছগুলি বিরল ওয়ার্মহোল দ্বারা সংযুক্ত রয়েছে: আপনার টপোলজি এবং টপোগ্রাফি প্লেয়ারটিকে বোঝায়।
  4. সুপার-এবং সাবগ্রাফগুলিকে আকার দেওয়ার জন্য বুদ্ধিমান পদ্ধতিগুলি প্রয়োগ করুন, আপনি কীভাবে এটি ৩ য় ধাপে আচরণ করতে বেছে নিয়েছেন তার উপর নির্ভর করে।

এটি গুরুত্বপূর্ণ যে এটি একটি শ্রেণিবিন্যাসিক প্রক্রিয়া। প্রথম স্তরের ওয়ার্মহোল সংযোগের সাথে সম্পর্কিত; দ্বিতীয় একটি আদর্শ জাহাজ ড্রাইভ ব্যবহার করে সম্ভবত দূরবর্তী হতে পারে tra আপনার সীমাবদ্ধতাগুলি পূরণ করতে আপনি ডেলাউনকে এক বা উভয় স্তরে আবেদন করতে পারেন।

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


ডেলাউন ট্রাইঙ্গুলেশন একটি ভাল ধারণা, তবে এটি এলোমেলো প্রান্ত তৈরি করে না। আপনি
ডেলাউন

@ বুমজ্যাক "এটি এলোমেলো প্রান্ত তৈরি করে না"। কখনও গ্রাফ নাবালকের কথা শুনেছেন? ডেলাউনে ব্যবহার করে আপনার আরও জটিল বাধাগুলি সমাধান হয়ে গেলে, আপনার পছন্দমতো সেই গ্রাফটিতে সংযোজন বা অপসারণ করা তুচ্ছ।
প্রকৌশলী

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