দেখে মনে হচ্ছে যে যেখানেই আমি দেখি, ডেটা স্ট্রাকচারগুলি লাল-কালো গাছ ব্যবহার করে প্রয়োগ করা হচ্ছে ( std::set
সি ++ তে, SortedDictionary
সি # তে, ইত্যাদি))
আমার অ্যালগোরিদম শ্রেণিতে সবেমাত্র (ক, খ), লাল-কালো ও এভিএল গাছগুলি আবৃত করে, আমি কী পেয়েছি তা এখানে (অধ্যাপকদের কাছ থেকে জিজ্ঞাসা করা, কয়েকটি বই দেখে এবং কিছুটা গুগল করা থেকে):
- এভিএল গাছগুলির লাল-কালো গাছের চেয়ে গড় গড় গভীরতা থাকে এবং সুতরাং এভিএল গাছের কোনও মান সন্ধান করা ধারাবাহিকভাবে দ্রুত হয়।
- লাল-কালো গাছগুলি এভিএল গাছের তুলনায় নিজের ভারসাম্য বজায় রাখতে কম কাঠামোগত পরিবর্তন করে, যা এগুলি সন্নিবেশ / মোছার পক্ষে সম্ভাব্য দ্রুততর করতে পারে। আমি সম্ভাব্যভাবে বলছি, কারণ এটি গাছের কাঠামোগত পরিবর্তনের ব্যয়ের উপর নির্ভর করবে, কারণ এটি রানটাইম এবং প্রয়োগের উপর অনেক বেশি নির্ভর করবে (যখন গাছ অপরিবর্তনীয় তখন কার্যকরী ভাষায়ও সম্পূর্ণ আলাদা হতে পারে?)
অনলাইনে অনেক মানদণ্ড রয়েছে যা এভিএল এবং লাল-কালো গাছের তুলনা করে তবে আমার প্রফেসরটি মূলত বলেছিলেন যে, আপনি সাধারণত দুটি জিনিসের মধ্যে একটি করেন:
- হয় আপনি কর্মক্ষমতা সম্পর্কে সত্যই তেমন যত্ন নেন না, সেক্ষেত্রে বেশিরভাগ ক্ষেত্রে এভিএল বনাম রেড-ব্ল্যাকের 10-20% পার্থক্য মোটেই গুরুত্বপূর্ণ নয়।
- বা আপনি প্রকৃতপক্ষে পারফরম্যান্সের বিষয়ে যত্নশীল হন, আপনি যদি এভিএল এবং লাল-কালো উভয় গাছই খনন করেন এবং বি-গাছের সাথে যান, যা আরও ভাল (বা (ক, খ) -তারা, আমি ' আমি সবাইকে একটি ঝুড়িতে রাখব।)
এর কারণ হ'ল কারণ একটি বি-ট্রি মেমরিতে আরও সংক্ষিপ্তভাবে ডেটা সঞ্চয় করে (একটি নোডে অনেকগুলি মান রয়েছে) খুব কম ক্যাশে মিস হবে। আপনি ব্যবহারের কেসের উপর ভিত্তি করে বাস্তবায়নটিকেও ঝাপিয়ে রাখতে পারেন এবং সি-পি-কে ক্যাশের আকারের উপর নির্ভর করে বি-গাছের ক্রমকে তৈরি করতে পারেন etc.
সমস্যাটি হ'ল আমি প্রায় কোনও উত্স খুঁজে পাই না যা বাস্তব আধুনিক হার্ডওয়্যারে অনুসন্ধানের গাছের বিভিন্ন প্রয়োগের বাস্তব জীবনের ব্যবহার বিশ্লেষণ করবে। আমি অ্যালগরিদমের উপর অনেকগুলি বই দেখেছি এবং বিভিন্ন গাছের বিভিন্ন রূপের সাথে একসাথে তুলনা করার মতো কিছুই পাইনি, অন্যটি তুলনায় অন্যটির তুলনায় একটির গড় গড় গভীরতা রয়েছে যা (গাছটি কীভাবে আচরণ করবে সে সম্পর্কে সত্যই বেশি কিছু বলে না বাস্তব প্রোগ্রামে।)
এটিই বলা হচ্ছে, লাল-কালো গাছগুলি সর্বত্র ব্যবহৃত হওয়ার কোনও বিশেষ কারণ আছে, যখন উপরের কথার ভিত্তিতে বলা হয়েছে, বি-গাছগুলি সেগুলি ছাড়িয়ে যায়? (একমাত্র বেঞ্চমার্ক হিসাবে আমি খুঁজে পেতে পারি http://lh3lh3.users.sourceforge.net/udb.shtml , তবে এটি কেবল নির্দিষ্ট প্রয়োগের বিষয় হতে পারে) of বা লাল-কালো গাছ ব্যবহার করার কারণেই কি এগুলি কার্যকর করা সহজ নয়, বা বিভিন্ন কথায় এটি ব্যবহার করা শক্ত, খারাপভাবে প্রয়োগ করা কঠিন?
এছাড়াও, যখন কেউ কার্যকরী ভাষার রাজ্যে চলে যায় তখন কীভাবে এই পরিবর্তন হয়? দেখে মনে হচ্ছে ক্লোজুর এবং স্কেলা উভয়ই হ্যাশ অ্যারের ম্যাপযুক্ত চেষ্টাগুলি ব্যবহার করে , যেখানে ক্লোজুর 32 এর একটি শাখা ফ্যাক্টর ব্যবহার করে।