আমি এমন কোনও ওয়েবসাইটের জন্য একটি 2 ডি গেম তৈরি করছি যেখানে মহাবিশ্বটি অত্যন্ত বড় হতে পারে (মূলত অসীমভাবে বড়)। প্রাথমিকভাবে, মহাবিশ্বটি 6 টি তারা নিয়ে গঠিত যা উত্স থেকে সমান দূরত্ব (0, 0)। আমার কাজটি হ'ল আরও তারা তৈরি করতে সক্ষম হবেন যাতে "পাথ" (প্রান্ত) থাকবে যা একে অপরের সাথে সংযুক্ত থাকে। এই বিধিনিষেধগুলি মেটাতে আমি কীভাবে একটি অ্যালগরিদম ডিজাইন করতে পারি:
- তারাগুলি এলোমেলোভাবে বাহ্যিকভাবে উত্পন্ন হয়। (যেমন (x, y) নতুন তারার স্থানাঙ্কগুলি ধীরে ধীরে সমস্ত দিক (0, 0) থেকে বাহিরে চলে যাবে, সাধারণত সর্পিল আকারে)
- প্রান্তগুলি অতিক্রম করবে না।
- যদিও কিছু বৈকল্পিকতা থাকা উচিত, নতুন তারার খুব বেশি বা অন্য তারার খুব বেশি কাছাকাছি হওয়া উচিত নয়। (যেমন, সর্বনিম্ন ব্যাসার্ধ থাকতে হবে)
- কোনও তারকা / পয়েন্টের 3 এর বেশিের গুণমান থাকা উচিত নয়।
- এই সমস্তটি একটি ডেটাবেসে সংরক্ষণ করা হবে তা প্রদত্ত যে, অ্যালগরিদম খুব ব্যয়বহুল হতে পারে না। অন্য কথায়, আমি ও (এন) জটিলতার কিছু অর্জন করতে পছন্দ করব (এটি সম্ভব কিনা তা আমি জানি না)।
মূলত, আমি যাচ্ছি এটি একটি সর্পিল সন্ধানকারী গ্যালাক্সি যেখানে নক্ষত্রগুলি গ্রাফের পয়েন্ট এবং তারার মধ্যে ভ্রমণ সেই নক্ষত্রগুলির মধ্যে প্রান্তগুলি দ্বারা চিত্রিত হয়েছে।
আমার যে বিশেষ পদক্ষেপগুলি সমাধান করতে হবে তা হ'ল:
- এলোমেলোভাবে অন্যান্য তারাগুলির প্রতিবেশী আশেপাশে এমন একটি পয়েন্ট উত্পন্ন করুন যার কাছে এখনও 3 এর গুণমান নেই।
- এমন প্রথম তারাটি সন্ধান করুন যেখানে এখনও 3 এর গুণমান নেই যা প্রান্ত দ্বন্দ্ব তৈরি করবে না।
- তারকাটি যদি সর্বনিম্ন x ইউনিটের দূরত্ব হয় তবে দুটি পয়েন্টের মধ্যে একটি প্রান্ত তৈরি করুন।
আমি সমাধানগুলি সন্ধান করার চেষ্টা করেছি, তবে আমার গণিত দক্ষতা (এবং গ্রাফ থিওরি সম্পর্কিত জ্ঞান) এর জন্য প্রচুর কাজ প্রয়োজন। এছাড়াও, এই বিষয়ে যে কোনও সংস্থান / লিঙ্কগুলি প্রশংসিত হবে।
এখানে আমি কিছু সিউডো কোডটি নিয়ে ভাবছিলাম, তবে আমি নিশ্চিত নই যে এটি এমনকি কার্যকর হবে কিনা এবং আমি নিশ্চিত যে এটি 10,000, ইত্যাদি তারার পরে ভয়ঙ্করভাবে পারফরম্যান্স করবে না।
newStar = randomly generated (x, y) within radius of last star from origin
while(newStar has not been connected):
for (star in the known universe):
if(distance between newStar and star > x units):
if(star has < 3 multiplicity):
if(path from newStar to star does not intersect another path):
connect the star to the other star
break;
newStar = new random (x, y) coordinate
এছাড়াও, যদি আমার কোনও মাইএসকিউএল ডাটাবেসে এটি সঞ্চয় করা উচিত সে সম্পর্কে কারও কোনও পরামর্শ থাকে তবে আমি এটিরও প্রশংসা করব।
পরিশেষে, যদি উপরোক্ত কিছু বোঝা না যায় তবে আমি নীচে আমি কী অর্জন করতে চাই তার একটি চিত্র অন্তর্ভুক্ত করেছি: