কেন স্প্লে গাছের ঘূর্ণন অ্যালগরিদম পিতামাতা এবং পিতামহ উভয় নোডকে বিবেচনা করে?


25

আমি স্পষ্টভাবে বুঝতে পারি না যে স্প্লে ট্রি ট্রি স্ট্রাকচারের ঘূর্ণন কেন কেবল রেটিং নোডের পিতামাতাকেই বিবেচনা করে না, তবে পিতামহীও (জিগ-জাগ এবং জিগ-জিগ অপারেশন) গ্রহণ করে। নিম্নলিখিতগুলি কেন কাজ করবে না:

উদাহরণস্বরূপ, গাছটিতে একটি নতুন নোড inোকানোর সাথে সাথে আমরা বাম বা ডান সাবট্রিতে sertোকানো কিনা তা পরীক্ষা করে দেখি। যদি আমরা বাম দিকে সন্নিবেশ করি, আমরা ফলাফলটি ডান সাবট্রির জন্য বিপরীত দিকে ঘোরান। পুনরাবৃত্তভাবে এটি এই মত হবে

Tree insert(Tree root, Key k){
    if(k < root.key){
        root.setLeft(insert(root.getLeft(), key);
        return rotateRight(root);
    }
    //vice versa for right subtree
}

এটি পুরো "স্প্লে" পদ্ধতিটি এড়ানো উচিত, আপনি কি ভাবেন না?

উত্তর:


30

সহজ সমীকরণ অ্যালগরিদম প্রয়োজন হতে পারে সবচেয়ে খারাপ ক্ষেত্রে ঘূর্ণন প্রতি সময় amortized। ধরুন গাছটি সঠিক বাচ্চাদের সম্পূর্ণ ভারসাম্যহীন পথ; কোনও নোডের বাম সন্তান নেই। এই গাছের একমাত্র পাতাই সর্বোচ্চ চাবিযুক্ত গাছ। আপনি যদি এই ধাপটি রুট পর্যন্ত ধাপে ধাপে ঘোরান, আপনি এন - 1 রোটেশন ব্যবহার করেছেন এবং ফলস্বরূপ গাছটি এখনও সম্পূর্ণ ভারসাম্যহীন।Ω(n)n1

শুধু ঘোরার জন্য খারাপ উদাহরণ

n2/2Ω(n)Ω(n)

খারাপ উদাহরণ অবিরত

এই খারাপ উদাহরণটি স্লিটার এবং টার্জনের মূল স্প্লে ট্রি ট্রি পেপারে উপস্থিত হয়।

xxx

খারাপ উদাহরণ splaying

এই আরও জটিল অ্যালগরিদমের সুবিধা হ'ল এটি কেবল অ্যাক্সেসযুক্ত নোডকে মূলের কাছে নিয়ে আসে না, তবে অ্যাক্সেস করা নোডের প্রতিটি পূর্বপুরুষকে মোটামুটি অর্ধেক পথের দিকে নিয়ে যায় , তবে স্থির সংখ্যার স্তর থেকে দূরে কোনও নোডকে আর কখনও সরিয়ে দেয় না the রুট।

O(logn)Ω(n)

আরও সংক্ষেপে: স্প্লাইং নোডগুলি দ্রুত এবং নীচের দিকে ধীরে ধীরে ধীরে ধীরে অগ্রসর হয়।


আমি মনে করি ঘূর্ণন অ্যালগরিদমগুলি হুবহু একই, খনি কেবল ছোট এবং আরও বোধগম্য। দাদা-দাদীর দিকে তাকানোর পরিবর্তে আমি কেবল একটি ঘোরানো পদক্ষেপে পিতামাতাকে বিবেচনা করি। এটি কি ঠিক একই পরিণতি তৈরি করে না?
Bober02

আমার ধারণা আপনি দুটি স্পাইয়িং অ্যালগোসকে উল্লেখ করছেন, একটি উপরের নিচে, অন্যটি নীচে উপরে, এবং আমার নয়, এটি কি সঠিক? আমি আমার আলগো বনাম নীচে আপ স্প্লাইটিংয়ের কথা উল্লেখ করছিলাম
Bober02
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.