একে অপরের সাথে সংযোগের সাথে কক্ষগুলির একটি তালিকা থাকা অবস্থায় আমি কীভাবে বিচ্ছিন্ন ঘরের গোষ্ঠীগুলি খুঁজে পাবো?


9

আমি একটি ছোট রগুইলাইক তৈরি করার চেষ্টা করছি এবং এলোমেলোভাবে উত্পাদনকারী ঘর এবং করিডোর পর্যন্ত চলেছি। প্রতিটি কক্ষ একটি উদাহরণস্বরূপ বস্তু এবং একটি করিডোর দ্বারা সংযুক্ত অন্য কক্ষগুলির একটি অ্যারেলিস্ট ধারণ করে।

আমি একটি সংযোগযুক্ত কক্ষগুলি একা আউট করতে পারি তবে আমি কীভাবে যে ঘরগুলি একে অপরের সাথে সংযুক্ত কিন্তু অন্যদের বেশিরভাগের সাথে নয়, একটি দ্বীপ তৈরি করে তা কীভাবে জানতে পারি?

সমস্যাটি আরও ভালভাবে চিত্রিত করার জন্য এটি হ'ল স্তরের কনসোলের একটি চিত্র। 5 এবং 6 টি রুম কেবল একে অপরের সাথে যুক্ত। এটি সনাক্ত করতে আমি কোন অ্যালগরিদম ব্যবহার করতে পারি?

এখানে চিত্র বর্ণনা লিখুন


ইমেজ ব্যবহারে সমস্যা? এই পেস্টবিন লিঙ্কটি কেবল এক মাস চলবে।
মাইকেলহাউস

হ্যাঁ, আপনি এখানে কী করেছেন আমি প্রথমে বেশ বুঝতে পারি নি। দুঃখিত, আমি আপনার পরিবর্তনটি ফিরিয়ে দিয়েছি।
পিটারওয়াজ

1
কেন তুমি এটা এত গঠন করা না যে সেখানে না পারেন, প্রথম স্থানে কোন পৃথক কক্ষ হবে? অথবা আপনি কি সেখানে বিচ্ছিন্ন সেট থাকতে চান?
AlbeyAmakiir

@ আলবে আমাকির যেমন নীচে অন্য মন্তব্যে বলেছিলেন, আমি মানচিত্রটি পূরণ না করা পর্যন্ত আমি পরীক্ষার মাধ্যমে এবং ত্রুটি করে আলাদাভাবে ঘরগুলি তৈরি করি, তবেই আমি সংযোগের জন্য একটি রুটিন চালাই এবং তারপরে এই দ্বীপগুলিকে সংযুক্ত করার জন্য অন্যটি চালাব। আমি জানি এটি সম্ভবত খুব দুর্গন্ধযুক্ত তবে অন্য কোনও উপায়ে চিত্রিত করতে পারেনি।
পিটারওয়াজ

উত্তর:


14

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

এরপরে পুরো তালিকাটির অবশিষ্টাংশ থেকে একটি রুম নির্বাচন করে এবং আবার নেভিগেট করে আপনি চালিয়ে যেতে পারেন। এবার বি তালিকায় যুক্ত হচ্ছে । আপনার আসল তালিকায় আর কোনও ঘর না পাওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান। আপনার কাছে এখন সংযুক্ত সমস্ত কক্ষের সেট রয়েছে।

এর মতো সমস্যাগুলি গ্রাফ তত্ত্বের সমস্যার সাথে সহজেই খাপ খায়। উদাহরণস্বরূপ, আপনি উপরে বর্ণিত সমস্যাটি সরাসরি সংযোগের সাথে সম্পর্কিত ।


1
যে কোনও অনুসন্ধান ট্রি অ্যালগরিদমের কাজ করা উচিত। এই সমস্যাটি এড়াতে আপনি বা আপনার প্রজন্মের অ্যালগরিদম পরিবর্তন করতে পারেন। আপনি যদি নিজের প্রজন্মের অ্যালগরিদম পরিবর্তন করেন তবে কেবল আপনার শুরু কক্ষের সাথে সংযুক্ত এলোমেলো সংখ্যা, তবে নিচের প্রতিটিটির সাথে সংযুক্ত এলোমেলো কক্ষ রয়েছে, তারপরে আপনি শর্টকাটগুলি দিয়ে কিছুটা মশালার জন্য বিদ্যমান কক্ষগুলির মধ্যে কিছু এলোমেলো সংযোগ যুক্ত করতে পারেন ice এবং যেমন. ব্যক্তিগতভাবে আমি যদিও একটি অনুসন্ধান গাছের অ্যালগরিদম করব।
বেনিয়ামিন ডেঞ্জার জনসন

এটা খুব যৌক্তিক। আমি অবশ্যই ক্লান্ত হয়েছি। আপনার সাহায্যের জন্য ধন্যবাদ. এটি যত তাড়াতাড়ি অনুমতি দেবে।
পিটারওয়াজ

@ বেঞ্জামিনড্যাঞ্জার জনসন আপনার মন্তব্য প্রশ্নের উত্তর চেয়ে বেশি উপযুক্ত বলে মনে হচ্ছে, এই উত্তর নয়।
মাইকেলহাউস

@ পেটারভাজ কোন সমস্যা নেই আমার ধারণা আমার সিএস ডিগ্রি এর সর্বোপরি ব্যবহার রয়েছে।
মাইকেলহাউস

@ বেনজামিনডাঙ্গার জনসন আমার জেনারেটিং অ্যালগরিদম কেবল স্থানটি পূরণ না করা এবং পরে সংযোগগুলি অনুসন্ধান করা অবধি র্যান্ডম রুম স্থাপন করছে pla = পি সৃষ্টি পরিবর্তন করতে অবলম্বন করার আগে সংযোগগুলি ঠিক করার চেষ্টা করবে।
পিটারওয়াজ

9

আপনার কক্ষের সংগ্রহ মূলত একটি গ্রাফ এবং আপনার গ্রাফটি সেই গ্রাফের সাথে সংযুক্ত উপাদান ("দ্বীপপুঞ্জ") সন্ধান করতে উত্পন্ন হয়।

সংযুক্ত উপাদানগুলি সন্ধান করার একটি সহজ উপায় হ'ল প্রতিটি শীর্ষবিন্দু থেকে বিএফএস (প্রস্থের প্রথম সন্ধান) করা। একটি ভার্টেক্স A থেকে বিএফএস করার ফলে আপনি সংযুক্ত উপাদানটির সমস্ত শীর্ষবিন্দু পাবেন যা প্রান্তিক A এর সাথে সম্পর্কিত।

সুতরাং, মূলত, আপনি একটি স্বেচ্ছাসেবী প্রান্ত দিয়ে শুরু করুন, একটি বিএফএস করুন এবং প্রতিটি মুখোমুখি প্রান্তটি 1 ম "দ্বীপ" এর সদস্য হিসাবে চিহ্নিত করুন। তারপরে আপনি পরবর্তী চিহ্নবিহীন শীর্ষ প্রান্তে চলে যান এবং আবার একটি বিএফএস করেন, এবার দ্বিতীয় "দ্বীপ" এর সদস্য হিসাবে লেবেলিংয়ের মুখোমুখি হয়েছে, এবং আরও অনেক কিছু।


4

আপনি নির্দেশিত গ্রাফের উপর উল্লম্ব হিসাবে কক্ষগুলি চিত্র করতে পারেন । এটি করে, আপনি আপনার সমস্যা সমাধানের জন্য সুপরিচিত অ্যালগরিদম প্রয়োগ করতে সক্ষম হবেন।

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


1
এমনকি কোনও অ-নির্দেশিত গ্রাফও এটি করতে পারে ... কেবলমাত্র আপনার কাছে কেবল একটি পথ রয়েছে।
অ্যারন_ডিসি

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