شجرة البحث الثنائية ذاتية التوازن

مثال على شجرة غير متوازنة ؛ حيث يستغرق اتباع المسار من الجذر إلى العقدة ما متوسطه 3.27 عملية وصول إلى العقدة
نفس الشجرة بعد تحقيق التوازن في الارتفاع؛ انخفض متوسط ​​جهد المسار إلى 3.00 عملية وصول للعقدة

في علوم الكمبيوتر ، شجرة البحث الثنائية ذاتية التوازن (BST) هي أي شجرة بحث ثنائية تعتمد على العقد وتحافظ تلقائيًا على ارتفاعها (الحد الأقصى لعدد المستويات أسفل الجذر) صغيرًا في مواجهة عمليات إدراج العناصر وحذفها التعسفية. [1] تحتوي هذه العمليات، عندما تم تصميمها لشجرة بحث ثنائية ذاتية التوازن، على تدابير احترازية ضد زيادة ارتفاع الشجرة بلا حدود، بحيث تتلقى هياكل البيانات المجردة هذه السمة "ذاتية التوازن".

بالنسبة للأشجار الثنائية المتوازنة الارتفاع ، يتم تعريف الارتفاع ليكون لوغاريتميًا في عدد العناصر. هذه هي الحال بالنسبة للعديد من أشجار البحث الثنائية، مثل أشجار AVL وأشجار الأحمر والأسود . تتمتع أشجار Splay والأشجار المتداخلة بالتوازن الذاتي ولكنها ليست متوازنة الارتفاع، حيث لا يُضمن أن يكون ارتفاعها لوغاريتميًا في عدد العناصر.

توفر أشجار البحث الثنائية ذاتية التوازن تنفيذات فعالة لقوائم مرتبة قابلة للتغيير ، ويمكن استخدامها لهياكل البيانات المجردة الأخرى مثل المصفوفات الترابطية ، وطوابير الأولوية والمجموعات .

ملخص

تعتبر عمليات تدوير الأشجار عمليات داخلية شائعة جدًا في الأشجار الثنائية المتوازنة ذاتيًا للحفاظ على التوازن المثالي أو شبه المثالي.

تستغرق معظم العمليات على شجرة البحث الثنائية (BST) وقتًا يتناسب طرديًا مع ارتفاع الشجرة، لذا فمن المستحسن الحفاظ على الارتفاع صغيرًا. يمكن للشجرة الثنائية ذات الارتفاع h أن تحتوي على 2 0 +2 1 +···+2 h  = 2 h +1 −1 عقدة على الأكثر . ويترتب على ذلك أنه بالنسبة لأي شجرة بها n عقدة وارتفاع h :

وهذا يعني:

.

بعبارة أخرى، الحد الأدنى لارتفاع شجرة ثنائية تحتوي على n عقدة هو log 2 ( n مقربًا للأسفل ؛ أي . [1]

ومع ذلك، قد تسفر أبسط الخوارزميات لإدراج عناصر BST عن شجرة بارتفاع n في مواقف شائعة إلى حد ما. على سبيل المثال، عندما يتم إدراج العناصر بترتيب مفتاح مرتب ، تتدهور الشجرة إلى قائمة مرتبطة بها n عقدة. قد يكون الاختلاف في الأداء بين الموقفين هائلاً: على سبيل المثال، عندما يكون n  = 1,000,000، يكون الحد الأدنى للارتفاع هو .

إذا كانت عناصر البيانات معروفة مسبقًا، فيمكن الحفاظ على الارتفاع صغيرًا، بالمعنى المتوسط، عن طريق إضافة القيم بترتيب عشوائي، مما يؤدي إلى شجرة بحث ثنائية عشوائية . ومع ذلك، هناك العديد من المواقف (مثل الخوارزميات عبر الإنترنت ) حيث لا تكون هذه العشوائية قابلة للتطبيق.

تحل الأشجار الثنائية ذاتية التوازن هذه المشكلة عن طريق إجراء تحويلات على الشجرة (مثل دوران الشجرة ) في أوقات الإدراج الرئيسية، من أجل الحفاظ على الارتفاع متناسبًا مع log 2 ( n ). وعلى الرغم من وجود تكلفة إضافية معينة ، إلا أنها ليست أكبر من تكلفة البحث الضرورية دائمًا ويمكن تبريرها من خلال ضمان التنفيذ السريع لجميع العمليات.

في حين أنه من الممكن الحفاظ على BST بأدنى ارتفاع مع عمليات الوقت المتوقعة (البحث / الإدراج / الإزالة)، فإن متطلبات المساحة الإضافية المطلوبة للحفاظ على مثل هذا الهيكل تميل إلى أن تفوق الانخفاض في وقت البحث. للمقارنة، من المؤكد أن شجرة AVL تكون ضمن عامل 1.44 من الارتفاع الأمثل بينما تتطلب فقط بتين إضافيتين من التخزين في تنفيذ ساذج. [1] لذلك، تحافظ معظم خوارزميات BST ذاتية التوازن على الارتفاع ضمن عامل ثابت من هذا الحد الأدنى.

بالمعنى المقارب (" Big-O ")، تسمح بنية BST ذاتية التوازن التي تحتوي على n عنصرًا بالبحث عن عنصر وإدراجه وإزالته في أسوأ وقت ممكن، والعد المنظم لجميع العناصر في الوقت المناسب. بالنسبة لبعض التطبيقات، تكون هذه حدودًا زمنية لكل عملية، بينما بالنسبة لتطبيقات أخرى تكون حدودًا مستهلكة على تسلسل من العمليات. هذه الأوقات مثالية بشكل مقارب بين جميع هياكل البيانات التي تتلاعب بالمفتاح فقط من خلال المقارنات.

التنفيذات

تتضمن هياكل البيانات التي تنفذ هذا النوع من الأشجار ما يلي:

التطبيقات

يمكن استخدام أشجار البحث الثنائية ذاتية التوازن بطريقة طبيعية لإنشاء قوائم مرتبة والحفاظ عليها، مثل قوائم الانتظار ذات الأولوية . ويمكن استخدامها أيضًا للمصفوفات الترابطية ؛ حيث يتم ببساطة إدراج أزواج القيمة والمفتاح بترتيب يعتمد على المفتاح وحده. وبهذه الصفة، تتمتع أشجار البحث الثنائية ذاتية التوازن بعدد من المزايا والعيوب مقارنة بمنافستها الرئيسية، جداول التجزئة . تتمثل إحدى مزايا أشجار البحث الثنائية ذاتية التوازن في أنها تسمح بالترقيم السريع (بل والأمثل تقريبًا) للعناصر حسب ترتيب المفتاح ، وهو ما لا توفره جداول التجزئة. ومن العيوب أن خوارزميات البحث الخاصة بها تصبح أكثر تعقيدًا عندما يكون هناك عناصر متعددة بنفس المفتاح. تتمتع أشجار البحث الثنائية ذاتية التوازن بأداء بحث أفضل في أسوأ الحالات من معظم جداول التجزئة [2] ( مقارنة بـ )، ولكن أداء متوسط ​​الحالات أسوأ ( مقارنة بـ ).

يمكن استخدام BSTs ذاتية التوازن لتنفيذ أي خوارزمية تتطلب قوائم مرتبة قابلة للتغيير، لتحقيق أداء مقارب مثالي في أسوأ الحالات. على سبيل المثال، إذا تم تنفيذ فرز الشجرة الثنائية باستخدام BST ذاتية التوازن، فلدينا خوارزمية فرز سهلة الوصف للغاية ولكنها مثالية مقاربة . وبالمثل، تستغل العديد من الخوارزميات في الهندسة الحسابية الاختلافات في BSTs ذاتية التوازن لحل مشكلات مثل مشكلة تقاطع الخط المستقيم ومشكلة موقع النقطة بكفاءة. (ولكن بالنسبة للأداء في الحالة المتوسطة، قد تكون BSTs ذاتية التوازن أقل كفاءة من الحلول الأخرى. من المرجح أن يكون فرز الشجرة الثنائية، على وجه الخصوص، أبطأ من فرز الدمج أو الفرز السريع أو الفرز المتراكم ، بسبب النفقات العامة لموازنة الشجرة بالإضافة إلى أنماط الوصول إلى ذاكرة التخزين المؤقت .)

إن BSTs ذاتية التوازن عبارة عن هياكل بيانات مرنة، حيث يسهل توسيعها لتسجيل معلومات إضافية بكفاءة أو إجراء عمليات جديدة. على سبيل المثال، يمكن للمرء تسجيل عدد العقد في كل شجرة فرعية لها خاصية معينة، مما يسمح للمرء بحساب عدد العقد في نطاق مفتاح معين بهذه الخاصية في الوقت المناسب. يمكن استخدام هذه الامتدادات، على سبيل المثال، لتحسين استعلامات قاعدة البيانات أو خوارزميات معالجة القوائم الأخرى.

انظر أيضا

مراجع

  1. ^ abc Donald Knuth . فن برمجة الكمبيوتر ، المجلد 3: الفرز والبحث ، الطبعة الثانية. Addison-Wesley، 1998. ISBN  0-201-89685-0 . القسم 6.2.3: الأشجار المتوازنة، ص 458-481.
  2. ^ يوفر تجزئة الوقواق أسوأ أداء بحث لـ .
  • قاموس الخوارزميات وهياكل البيانات: شجرة البحث الثنائية المتوازنة الارتفاع
  • GNU libavl، مكتبة مرخصة بموجب ترخيص LGPL لتنفيذات الشجرة الثنائية في C، مع الوثائق
Retrieved from "https://en.wikipedia.org/w/index.php?title=Self-balancing_binary_search_tree&oldid=1199655764"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate