আমি একটি চতুর্থাংশ বাস্তবায়ন করছি। যারা এই ডেটা কাঠামো জানেন না তাদের জন্য আমি নিম্নলিখিত ছোট বিবরণটি অন্তর্ভুক্ত করছি:
একজন Quadtree একটি ডাটা স্ট্রাকচার এবং ইউক্লিডিয় সমতল কি একটি Octree একটি 3-মাত্রিক স্থান হয় হয়। চতুর্ভুজগুলির একটি সাধারণ ব্যবহার স্থানিক সূচক।
তারা কীভাবে কাজ করে তা সংক্ষিপ্ত করতে, একটি চতুর্ভুজ একটি সংগ্রহ - আসুন এখানে আয়তক্ষেত্রগুলির কথা বলা যাক - সর্বাধিক ক্ষমতা এবং প্রাথমিক বাউন্ডিং বাক্স সহ। চতুর্দিকে যে উপাদানটি সর্বাধিক সক্ষমতাতে পৌঁছেছে এমন কোনও উপাদান সন্নিবেশ করার চেষ্টা করার সময়, চতুর্ভুজটি 4 কোয়াড্ট্রিগুলিতে বিভক্ত হয় (একটি জ্যামিতিক উপস্থাপনা গাছ সন্নিবেশের আগে গাছের চেয়ে চারগুণ ছোট অঞ্চল হবে); প্রতিটি উপাদান তার অবস্থান অনুসারে সাবট্রিতে পুনরায় বিতরণ করা হয়, অর্থাৎ। আয়তক্ষেত্রের সাথে কাজ করার সময় উপরের বাম দিকে আবদ্ধ।
সুতরাং একটি চতুষ্কোণ হয় হয় একটি পাতা এবং তার ক্ষমতার চেয়ে কম উপাদান থাকে বা একটি বাচ্চা হিসাবে 4 টি চতুর্ভুজ গাছ রয়েছে (সাধারণত উত্তর-পশ্চিম, উত্তর-পূর্ব, দক্ষিণ-পশ্চিম, দক্ষিণ-পূর্ব)।
আমার উদ্বেগটি হ'ল আপনি যদি নকলগুলি যুক্ত করার চেষ্টা করেন তবে এটি একই উপাদানটি কয়েকবার হতে পারে বা একই অবস্থানের সাথে বিভিন্ন উপাদান হতে পারে, চতুর্দিকে প্রান্তগুলি পরিচালনা করার ক্ষেত্রে একটি মৌলিক সমস্যা হতে পারে।
উদাহরণস্বরূপ, আপনি যদি 1 এর সক্ষমতা এবং চতুর্ভুজ বাক্স হিসাবে ইউনিট আয়তক্ষেত্রযুক্ত চতুষ্কোণ দিয়ে কাজ করেন:
[(0,0),(0,1),(1,1),(1,0)]
এবং আপনি দ্বিগুণ একটি আয়তক্ষেত্র twiceোকানোর চেষ্টা করছেন যার উপরের বাম দিকের সীমাটি মূল: (বা একইভাবে আপনি যদি এন> 1 এর ক্ষমতা সহ চতুর্ভুজগুলিতে N + 1 বার সন্নিবেশ করানোর চেষ্টা করেন)
quadtree->insert(0.0, 0.0, 0.1, 0.1)
quadtree->insert(0.0, 0.0, 0.1, 0.1)
প্রথম সন্নিবেশ কোনও সমস্যা হবে না:
তবে তারপরে প্রথম সন্নিবেশ একটি মহকুমা ট্রিগার করবে (কারণ ক্ষমতাটি 1):
উভয় আয়তক্ষেত্রকে একই উপশ্রেণীতে রাখা হয়।
তারপরে আবারও দুটি উপাদান একই চতুষ্কোণে এসে একটি মহকুমা ট্রিগার করবে ...
এবং এইভাবে এবং আরও, এই মহকুমা পদ্ধতি অনির্দিষ্টকালের জন্য চলবে কারণ (0, 0) তৈরি হওয়া চারটির মধ্যে সর্বদা একই সাবট্রিতে থাকবে, যার অর্থ অসীম পুনরাবৃত্তি সমস্যা দেখা দেয়।
ডুপ্লিকেট সহ চতুর্ভুজ রাখা কি সম্ভব? (যদি তা না হয় তবে এটি এটিকে বাস্তবায়ন করতে পারে Set
)
চতুর্দিকে আর্কিটেকচার পুরোপুরি না ভেঙে আমরা কীভাবে এই সমস্যাটি সমাধান করতে পারি?