{{{name}}} | ||
---|---|---|
النوع | {{{type}}} | |
تعقيد زمني in رمز O الكبير | ||
المتوسط | أسوء حالة | |
المساحة | ||
بحث | ||
ادراج | ||
مسح |
في علم الحاسوب، شجرة إي في إل (بالإنجليزية: AVL Trees) هي شجرة بحث ثنائية متزنة، وهي أول بنية بيانات تم اختراعها.[1] في شجرة AVL، ارتفاع الأشجار الجزئية لأية عقدة تختلف بواحد على الأكثر. البحث، الإدخال، والحذف يتطلبون زمن (O(log n في كل من الحالات المتوسطة والأسوء، حيث أن n هو عدد العقد في شجرة قبل العملية. الإدخال والحذف قد يستلزم إعادة توازن الشجرة عن طريق دوران شجرة واحد أو أكثر.
شجرة AVL سميت نسبة لمخترعَيها السوفيتيين، غيورغي ماكسيموفيتش أدلسن-فالسكي (Adelson-Velskii) ويفغيني لانديس (Landis). الذين نشراها في مقالهما سنة 1962 «خوارزمية لتنظيم المعلومات».[2]
عامل التوازن لعقدة ما هو ارتفاع الشجرة الجزئية اليسرى ناقص ارتفاع الشجرة الفرعية اليمنى (أحيانا العكس). والعقدة مع عامل توازن 1، 0 أو -1 تعتبر متوازنة. عقدة مع عامل توازن غير ذلك تعتبر غير متوازنة وتتطلب إعادة توازن الشجرة. عامل التوازن إما أن يكون محفوظا في كل عقدة، أو يتم حسابه من ارتفاعات أشجاره الجزئية.
عادة ما يتم مقارنة أشجار AVL مع أشجار أحمر-أسود لأنهما يدعمان نفس العمليات، ولأن أشجار أحمر-أسود يتطلبون زمن (O(log n في العمليات الأساسية. لأن أشجار AVL صارمون بالتوازن، هم أسرع من أشجار أحمر-أسود لتطبيقات المكثفة البحث.[3] من ناحية أخرى، أشجار أحمر-أسود هم أسرع بالإدخال والحذف.
العمليات الأساسية في شجرة AVL تشتمل على تنفيذ نفس الأعمال الممكن تنفيذها على شجرة بحث ثنائية غير متوازنة، ولكن تسبق التعديلات أو تليها عملية واحدة أو أكثر تسمى دوران شجرة، والتي تساعد على استعادة توازن ارتفاع الأشجار الجزئية.
البحث في شجرة AVL يتم بالضبط مثل أية شجرة بحث ثنائية غير متوازنة. بسبب توازن ارتفاع الشجرة، يستغرق البحث زمن (O(log n، ولا يتم تعديل مبنى الشجرة في عملية البحث.
إذا كان لكل عقدة سجلات أحجام شجرتها الجزئية (شاملا العقدة نفسها وأحفادها)، إذن يمكن استعادة العقدة بزمن (O(log n أيضا.
بعد إدخال عقدة، لابد من التحقق من تمسك كل من أسلاف العقدة بقواعد AVL. لكل عقدة فحصت، إذا بقى عامل التوازن 1، 0 أو -1 إذن ليست هناك حاجة للدوران. من ناحية أخرى، إذا صار عامل التوازن ±2 إذن الشجرة الجزئية المبتدئة بهذه العقدة غير متوازنة. إذا تم الإدخال بشكل متسلسل، بعد كل إدخال، على الأكثر حالة واحدة من الحالات التالية يحب حلها لاستعادة قواعد AVL للشجرة كاملة.
هنالك أربع حالات يجب التطرق لها، بحيث أن حالتين متماثلتان للاثنتين الأخرى ين. ليكن P جذر شجرة جزئية غير متوازنة، مع L الابن الأيسر وR الابن الأيمن لـ P.
حالة يمين-يمين وحالة يمين-يسار:
حالة يسار-يسار وحالة يسار-يمين:
إذا كانت العقدة ورقة أو لها ابن واحد فقط، نزيلها. وإلا، نبدلها بإما الأكبر في الشجرة الجزئية اليسرى (السابق inorder predecessor) أو الأصغر في الشجرة الجزئية اليمنى (اللاحق inorder successor)، ونزيل العقدة.
كلا من أشجار AVL وأشجار أحمر-أسود هم أشجار بحث ثنائية متوازنة ذاتيا، ولذلك هم متشابهون رياضيا. عمليتا إعادة التوازن الأشجار مختلفة، ولكن كلاهما يحدث في زمن (O(log n. الفرق الحقيقي بين الاثنتين هو تحديد الارتفاع. لشجرة بحجم :
ارتفاع شجرة AVL أقل بدقة من:[4]
بحيث أن هو الرقم الذهبي. ارتفاع شجرة أحمر-أسود هو على الأغلب
إن أشجار AVL أكثر صرامة بالتوازن من أشجار أحمر-أسود، مما يؤدي إلى إدخال وحذف أبطئ ولكن استرجاع أسرع.
{{استشهاد بدورية محكمة}}
: الوسيط author-name-list parameters تكرر أكثر من مرة (مساعدة) (بالروسية) English translation by Myron J. Ricci in Soviet Math. Doklady, 3:1259–1263, 1962.
{{استشهاد ويب}}
: الوسيط غير المعروف |شهر=
تم تجاهله يقترح استخدام |تاريخ=
(مساعدة)
{{استشهاد بكتاب}}
: تحقق من التاريخ في: |تاريخ الوصول=
(مساعدة) وروابط خارجية في |ناشر=
(مساعدة)