এভিএল এবং লাল কালো গাছগুলি নোডগুলিতে লাল এবং কালো রঙ বাদে উভয় স্ব-ভারসাম্য। এভিএল গাছের পরিবর্তে লাল কালো গাছ বেছে নেওয়ার মূল কারণ কী? লাল কালো গাছের প্রয়োগ কী?
এভিএল এবং লাল কালো গাছগুলি নোডগুলিতে লাল এবং কালো রঙ বাদে উভয় স্ব-ভারসাম্য। এভিএল গাছের পরিবর্তে লাল কালো গাছ বেছে নেওয়ার মূল কারণ কী? লাল কালো গাছের প্রয়োগ কী?
উত্তর:
এভিএল গাছের পরিবর্তে লাল কালো গাছ বেছে নেওয়ার মূল কারণ কী?
উভয় লাল-কালো গাছ এবং AVL গাছ সবচেয়ে বেশি ব্যবহৃত হয় সুষম বাইনারি অনুসন্ধান গাছ এবং তারা সন্নিবেশ-বড় অক্ষরজনিত সমস্যার এবং চেহারা-আপ সমর্থন নিশ্চিত মধ্যে O(logN) time। তবে, উভয়ের মধ্যে তুলনার নিম্নলিখিত বিষয়গুলি রয়েছে:
O(N)অতিরিক্ত স্থান নেয় । তবে, যদি আমরা জানি যে গাছটিতে কীগুলি keysোকানো হবে তা সর্বদা শূন্যের চেয়ে বড় হবে, আমরা একটি লাল-কালো গাছের রঙের তথ্য সঞ্চয় করতে কীগুলির সাইন বিটটি ব্যবহার করতে পারি। সুতরাং, এই জাতীয় ক্ষেত্রে লাল-কালো গাছ কোনও অতিরিক্ত জায়গা নেয় না।লাল কালো গাছের প্রয়োগ কী?
লাল-কালো গাছগুলি আরও সাধারণ উদ্দেশ্য। এগুলি অ্যাড, রিমুভ এবং চেহারাতে তুলনামূলকভাবে ভাল করে তবে এভিএল গাছগুলিতে ধীর অ্যাড / রিমুভের ব্যয়ে দ্রুত চেহারা থাকে look লাল-কালো গাছ নিম্নলিখিত ব্যবহার করা হয়:
java.util.TreeMap,java.util.TreeSetIn general, the rotations for an AVL tree are harder to implement and debug than that for a Red-Black tree.সত্য না.
std:: mapএবং বন্ধুরা কোনও নির্দিষ্ট কাঠামো ব্যবহার করে। এটি বাস্তবায়নের বাকী, যদিও libstdc ++ এবং ডিনকামওয়্যার কমপক্ষে লাল-কালো গাছ ব্যবহার করে এবং মনে হয় আপনি বাস্তবে ঠিকই আছেন।
এই নিবন্ধটি পড়ার চেষ্টা করুন
এটি পার্থক্য, সাদৃশ্য, কর্মক্ষমতা ইত্যাদি সম্পর্কে কিছু ভাল অন্তর্দৃষ্টি সরবরাহ করে
নিবন্ধের একটি উদ্ধৃতি এখানে:
আরবি-ট্রি হ'ল এভিএল গাছ, স্ব-ভারসাম্যহীন। উভয়ই ও (লগ এন) চেহারা এবং সন্নিবেশ সম্পাদন সরবরাহ করে।
পার্থক্যটি হ'ল আরবি-ট্রিগুলি inোকানো অপারেশন প্রতি ও (1) আবর্তনের গ্যারান্টি দেয়। এটিই বাস্তব বাস্তবায়নে কার্য সম্পাদন ব্যয় করে costs
সরলীকৃত, আরবি-ট্রিগুলি গতিশীল নোড স্ট্রাকচারের ওভারহেড বহন না করে ধারণামূলকভাবে 2-3 গাছ হওয়া থেকে এই সুবিধা অর্জন করে। শারীরিকভাবে আরবি-ট্রিগুলি বাইনারি গাছ হিসাবে প্রয়োগ করা হয়, লাল / কালো-পতাকাগুলি 2-3 টি আচরণ অনুকরণ করে
আমার নিজের বোঝা যতদূর যায়, পারফরম্যান্সের দিক থেকে AVL গাছ এবং আরবি গাছ খুব বেশি দূরে নয়। একটি আরবি ট্রি কেবল একটি বি-গাছের বৈকল্পিক এবং ভারসাম্য একটি এভিএল গাছের চেয়ে আলাদাভাবে প্রয়োগ করা হয়।
পারফরম্যান্সের পার্থক্যের বিষয়ে আমাদের বোঝার বছরগুলিতে উন্নতি হয়েছে এবং এখন এভিএল-এর উপরে লাল-কালো গাছ ব্যবহার করার মূল কারণটি সিএলআরএসের আওতাভুক্ত না হওয়ায় সম্ভবত কিছুটা কম সাধারণ হওয়ার কারণে এটি ভাল এভিএল বাস্তবায়নের অ্যাক্সেস না পাবে।
উভয় গাছই এখন র্যাঙ্ক-ভারসাম্য গাছের ফর্ম হিসাবে বিবেচিত হয় তবে লাল-কালো গাছগুলি বাস্তব বিশ্বের পরীক্ষায় প্রায় 20% দ্বারা ধারাবাহিকভাবে ধীর হয় । বা অনুক্রমিক ডেটা is োকানো হয় এমনকি 30-40% ধীর ।
সুতরাং লোকে লাল-কালো গাছের পড়াশোনা করেছেন কিন্তু এভিএল গাছ নয়, লাল-কালো গাছ বেছে নেওয়ার প্রবণতা রয়েছে। লাল-কালো গাছ প্রাথমিক ব্যবহারসমূহ উপর বিস্তারিত করছে তাদের জন্য উইকিপিডিয়া এন্ট্রি ।
এখানে অন্যান্য উত্তরগুলিতে আরবি এবং এভিএল গাছগুলির উপকারিতা ও সংক্ষিপ্তসারগুলি ভালভাবে সংযুক্ত করা হয়েছে তবে আমি এই পার্থক্যটি বিশেষ আকর্ষণীয় বলে মনে করেছি:
এভিএল গাছগুলি ধ্রুবক ইমোরাইজড আপডেট ব্যয়কে সমর্থন করে না [তবে লাল-কালো গাছগুলি]
সূত্র: মেহলহর্ন অ্যান্ড স্যান্ডারস (২০০৮) (বিভাগ 7.৪)
সুতরাং, আরবি এবং এভিএল উভয় গাছই ও (লগ (এন)) সুনির্দিষ্টভাবে দেখার জন্য, সন্নিবেশ করানোর জন্য এবং মুছে ফেলার জন্য, কোনও নোড সন্নিবেশ করানোর বা মুছার পরে এভিএল / আরবি সম্পত্তি পুনরুদ্ধার করার জন্য ও (1) মোড়িত সময়ে করা যেতে পারে লাল-কালো গাছ
প্রোগ্রামাররা সাধারণত গতিশীলভাবে মেমরি বরাদ্দ করতে পছন্দ করে না। গড় গাছের সমস্যাটি হ'ল "এন" উপাদানগুলির জন্য আপনার গাছের উচ্চতা সংরক্ষণের জন্য কমপক্ষে লগ 2 (লগ 2 (এন)) ... (উচ্চতা-> লগ 2 (এন)) বিট প্রয়োজন! সুতরাং যখন আপনি প্রচুর ডেটা পরিচালনা করছেন আপনি প্রতিটি নোডে উচ্চতা সংরক্ষণের জন্য কত বিট বরাদ্দ করবেন তা নিশ্চিত হতে পারবেন না।
উদাহরণস্বরূপ যদি আপনি উচ্চতা সঞ্চয় করার জন্য 4 বাইট ব্যবহার করেন (32 বিট)। সর্বাধিক উচ্চতা হতে পারে: 2 hence 32 এবং সেই কারণে আপনি গাছের মধ্যে থাকা উপাদানগুলির সর্বাধিক সংখ্যা 2 ^ (2 ^ 32) - (খুব বড় বলে মনে হয় তবে ডেটার যুগে কোনও কিছুই খুব বেশি বড় বলে আমার ধারণা নেই)। আর তাই আপনি যদি এই সীমাটি ছুঁড়ে ফেলে থাকেন তবে আপনাকে উচ্চতা সংরক্ষণের জন্য গতিশীলভাবে আরও স্থান বরাদ্দ করতে হবে।
এটি আমার বিশ্ববিদ্যালয়ের একজন অধ্যাপকের প্রস্তাবিত উত্তর যা আমার কাছে যুক্তিসঙ্গত বলে মনে হয়েছিল! আশা করি আমি বুদ্ধি করব।
সম্পাদনাগুলি: রেড ব্ল্যাক ট্রিগুলির তুলনায় এভিএল গাছগুলি বেশি ভারসাম্যযুক্ত তবে এগুলি সন্নিবেশ এবং মোছার সময় আরও ঘূর্ণন ঘটাতে পারে। সুতরাং যদি আপনার অ্যাপ্লিকেশনটিতে অনেক ঘন ঘন সন্নিবেশ এবং মুছে ফেলা জড়িত থাকে, তবে লাল কালো গাছগুলি পছন্দ করা উচিত। এবং যদি সন্নিবেশ এবং মুছে ফেলা কম ঘন ঘন হয় এবং অনুসন্ধান আরও ঘন ঘন অপারেশন হয় তবে রেড ব্ল্যাক ট্রিের তুলনায় এভিএল গাছটি পছন্দ করা উচিত। - উত্স GEEKSFORGEEKS.ORG
you need need atleast log2(log2(n))...(height->log2(n)) bits to store the height of [an AVL] treeএটি প্রয়োগের জন্য আমার কোনও এভিএল-ট্রিতে কোনও নোডের উচ্চতা প্রয়োজন নেই। আপনি প্রতিটি নোডের জন্য এক বিট অতিরিক্ত তথ্য ( আমি দ্য গ্রেটেষ্ট (সর্বোচ্চ উপ-গাছের সহোদর))); এভি এবং এল দ্বারা উপস্থাপিত হিসাবে দুটি অতিরিক্ত বিট (শিশু বাম এবং ডানদিকের চেয়েও বেশি) থাকা আরও বেশি সুবিধাজনক পাশাপাশি
এভিএল গাছের পুনরায় ভারসাম্য নিচের সম্পত্তিটি পূরণ করতে হবে। (উইকি রেফারেন্স - এভিএল ট্রি )
একটি এভিএল গাছে, যে কোনও নোডের দুটি সন্তানের সাবট্রির উচ্চতা সবচেয়ে বেশি এক দ্বারা পৃথক হয়; যদি কোনও সময়ে তারা একের বেশি হয়ে থাকে তবে এই সম্পত্তি পুনরুদ্ধার করতে পুনরায় ভারসাম্য সম্পন্ন করা হবে।
সুতরাং এটি বোঝায় যে এভিএল গাছের সামগ্রিক উচ্চতা পাগল হতে পারে না অর্থাৎ ভিভিএলগুলি এভিএল গাছগুলির সাথে আরও ভাল হতে চলেছে। এবং যেহেতু উচ্চতা পাগল না হওয়ার জন্য অতিরিক্ত ক্রিয়াকলাপগুলি (আবর্তন) করা উচিত, তাই বৃক্ষ পরিবর্তনের কাজটি কিছুটা ব্যয়বহুল হতে পারে।