<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D8%B4%D8%AC%D8%B1%D8%A9_AVL</id>
	<title>شجرة AVL - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D8%B4%D8%AC%D8%B1%D8%A9_AVL"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D8%B4%D8%AC%D8%B1%D8%A9_AVL&amp;action=history"/>
	<updated>2026-06-05T08:03:47Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D8%B4%D8%AC%D8%B1%D8%A9_AVL&amp;diff=1551189&amp;oldid=prev</id>
		<title>عبد العزيز: بوت:صيانة المراجع</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D8%B4%D8%AC%D8%B1%D8%A9_AVL&amp;diff=1551189&amp;oldid=prev"/>
		<updated>2023-01-30T01:00:31Z</updated>

		<summary type="html">&lt;p&gt;بوت:صيانة المراجع&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox data structure}}&lt;br /&gt;
[[ملف:AVLtreef.svg|تصغير|300بك|مثال لشجرة AVL]]&lt;br /&gt;
في [[علم الحاسوب]]، &amp;#039;&amp;#039;&amp;#039;شجرة إي في إل&amp;#039;&amp;#039;&amp;#039; {{إنج|&amp;#039;&amp;#039;&amp;#039;AVL Trees&amp;#039;&amp;#039;&amp;#039;}} هي [[شجرة بحث ثنائية متزنة]] ، وهي أول [[بنية بيانات]] تم اختراعها.&amp;lt;ref&amp;gt;Robert Sedgewick, &amp;#039;&amp;#039;Algorithms&amp;#039;&amp;#039;, Addison-Wesley, 1983, ISBN 0-201-06672-6, page 199, chapter 15: Balanced Trees.&amp;lt;/ref&amp;gt;&lt;br /&gt;
في شجرة AVL، [[شجرة (بنية بيانات)#مصطلحات|ارتفاع]] الأشجار الجزئية لأية عقدة تختلف بواحد على الأكثر.&lt;br /&gt;
البحث، الإدخال، والحذف يتطلبون زمن (O(log &amp;#039;&amp;#039;n&amp;#039;&amp;#039; في كل من الحالات المتوسطة والأسوء، حيث أن &amp;#039;&amp;#039;n&amp;#039;&amp;#039; هو عدد [[رأس (نظرية المخططات)|العقد]] في شجرة قبل العملية. الإدخال والحذف قد يستلزم إعادة توازن الشجرة عن طريق [[دوران شجرة]] واحد أو أكثر.&lt;br /&gt;
&lt;br /&gt;
شجرة AVL سميت نسبة لمخترعَيها [[الاتحاد السوفيتي|السوفيتيين]]، [[غيورغي أدلسن-فالسكي|غيورغي ماكسيموفيتش أدلسن-فالسكي]] (Adelson-Velskii) و[[يفغيني لانديس]] (Landis). الذين نشراها في مقالهما سنة [[1962]] «خوارزمية لتنظيم المعلومات».&amp;lt;ref&amp;gt;{{استشهاد بدورية محكمة|الأخير=Adelson-Velskii|الأول=G.|المؤلفون=E. M. Landis|سنة=1962|عنوان=An algorithm for the organization of information|صحيفة=Proceedings of the USSR Academy of Sciences|المجلد=146|صفحات=263–266}} {{أيقونة روسية}} English translation by Myron J. Ricci in &amp;#039;&amp;#039;Soviet Math. Doklady&amp;#039;&amp;#039;, 3:1259–1263, 1962.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;عامل التوازن&amp;#039;&amp;#039;&amp;#039; لعقدة ما هو ارتفاع الشجرة الجزئية اليسرى ناقص ارتفاع الشجرة الفرعية اليمنى (أحيانا العكس). والعقدة مع عامل توازن 1، 0 أو -1 تعتبر متوازنة. عقدة مع عامل توازن غير ذلك تعتبر غير متوازنة وتتطلب إعادة توازن الشجرة. عامل التوازن إما أن يكون محفوظا في كل عقدة، أو يتم حسابه من ارتفاعات أشجاره الجزئية.&lt;br /&gt;
&lt;br /&gt;
عادة ما يتم مقارنة أشجار AVL مع [[شجرة أحمر أسود|أشجار أحمر-أسود]] لأنهما يدعمان نفس العمليات، ولأن أشجار أحمر-أسود يتطلبون زمن (O(log &amp;#039;&amp;#039;n&amp;#039;&amp;#039; في العمليات الأساسية. لأن أشجار AVL صارمون بالتوازن، هم أسرع من أشجار أحمر-أسود لتطبيقات المكثفة البحث.&amp;lt;ref&amp;gt;{{استشهاد ويب|الأخير = Pfaff|الأول = Ben|عنوان = Performance Analysis of BSTs in System Software| ناشر = Stanford University|سنة = 2004|شهر = June|مسار = https://web.stanford.edu/~blp/papers/libavl.pdf|تنسيق = PDF| مسار أرشيف = https://web.archive.org/web/20170809091546/http://stanford.edu/~blp/papers/libavl.pdf | تاريخ أرشيف = 9 أغسطس 2017 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
من ناحية أخرى، أشجار أحمر-أسود هم أسرع بالإدخال والحذف.&lt;br /&gt;
&lt;br /&gt;
== عمليات ==&lt;br /&gt;
[[ملف:AVL Tree Rebalancing.svg|تصغير|350بك|وصف مصور يظهر كيف أن عمليات دوران الشجرة تسبب إعادة توازن الشجرة. تمثل الأرقام العقد التي يتم موازنتها. المثلثات المعلمة بالحروف هي في حد ذاتها أشجار بحث ثنائية.]]&lt;br /&gt;
&lt;br /&gt;
العمليات الأساسية في شجرة AVL تشتمل على تنفيذ نفس الأعمال الممكن تنفيذها على [[شجرة بحث ثنائية]] غير متوازنة، ولكن تسبق التعديلات أو تليها عملية واحدة أو أكثر تسمى دوران شجرة، والتي تساعد على استعادة توازن ارتفاع الأشجار الجزئية.&lt;br /&gt;
&lt;br /&gt;
=== بحث ===&lt;br /&gt;
البحث في شجرة AVL يتم بالضبط مثل أية شجرة بحث ثنائية غير متوازنة. بسبب توازن ارتفاع الشجرة، يستغرق البحث زمن (O(log &amp;#039;&amp;#039;n&amp;#039;&amp;#039;، ولا يتم تعديل مبنى الشجرة في عملية البحث.&lt;br /&gt;
&lt;br /&gt;
إذا كان لكل عقدة سجلات أحجام شجرتها الجزئية (شاملا العقدة نفسها و[[شجرة (بنية بيانات)#مصطلحات|أحفادها]])، إذن يمكن استعادة العقدة بزمن (O(log &amp;#039;&amp;#039;n&amp;#039;&amp;#039; أيضا.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;[[ملف:binary search tree delete.svg|تصغير|600بك|حذف عقدة مع ابنين من شجرة بحث ثنائية]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== إدخال ===&lt;br /&gt;
بعد إدخال عقدة، لابد من التحقق من تمسك كل من [[شجرة (بنية بيانات)#مصطلحات|أسلاف]] العقدة بقواعد AVL. لكل عقدة فحصت، إذا بقى عامل التوازن 1، 0 أو -1 إذن ليست هناك حاجة للدوران. من ناحية أخرى، إذا صار عامل التوازن ±2 إذن الشجرة الجزئية المبتدئة بهذه العقدة غير متوازنة. إذا تم الإدخال بشكل متسلسل، بعد كل إدخال، على الأكثر حالة واحدة من الحالات التالية يحب حلها لاستعادة قواعد AVL للشجرة كاملة.&lt;br /&gt;
&lt;br /&gt;
هنالك أربع حالات يجب التطرق لها، بحيث أن حالتين متماثلتان للاثنتين الأخرى ين. ليكن &amp;#039;&amp;#039;P&amp;#039;&amp;#039; جذر شجرة جزئية غير متوازنة، مع &amp;#039;&amp;#039;L&amp;#039;&amp;#039; الابن الأيسر و&amp;#039;&amp;#039;R&amp;#039;&amp;#039; الابن الأيمن لـ &amp;#039;&amp;#039;P&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;حالة يمين-يمين&amp;#039;&amp;#039;&amp;#039; و&amp;#039;&amp;#039;&amp;#039;حالة يمين-يسار&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;P&amp;#039;&amp;#039; هو -2 إذن يفوق ارتفاع الشجرة الجزئية اليمنى ارتفاع الشجرة الجزئية اليسرى، ويجب فحص معامل توازن الابن الأيمن (&amp;#039;&amp;#039;R&amp;#039;&amp;#039;). الدوران الأيسر مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر ضروري.&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;R&amp;#039;&amp;#039; هو -1، نحتاج &amp;#039;&amp;#039;&amp;#039;دوران يساري واحد&amp;#039;&amp;#039;&amp;#039; (مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر) (حالة يمين-يمين).&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;R&amp;#039;&amp;#039; هو +1، نحتاج دوارنين. الدوران الأول هو &amp;#039;&amp;#039;&amp;#039;دوران يميني&amp;#039;&amp;#039;&amp;#039; مع &amp;#039;&amp;#039;R&amp;#039;&amp;#039; كالجذر. الدوران الثاني هو &amp;#039;&amp;#039;&amp;#039;دوران يساري&amp;#039;&amp;#039;&amp;#039; مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر (حالة يمين-يسار).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;حالة يسار-يسار&amp;#039;&amp;#039;&amp;#039; و&amp;#039;&amp;#039;&amp;#039;حالة يسار-يمين&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;P&amp;#039;&amp;#039; هو +2 إذن يفوق ارتفاع الشجرة الجزئية اليسرى ارتفاع الشجرة الجزئية اليمنى، ويجب فحص معامل توازن الابن الأيسر (&amp;#039;&amp;#039;L&amp;#039;&amp;#039;). الدوران الأيمن مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر ضروري.&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;L&amp;#039;&amp;#039; هو +1، نحتاج &amp;#039;&amp;#039;&amp;#039;دوران يميني واحد&amp;#039;&amp;#039;&amp;#039; (مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر) (حالة يسار-يسار).&lt;br /&gt;
* إذا كان معامل توازن &amp;#039;&amp;#039;L&amp;#039;&amp;#039; هو -1، نحتاج دوارنين. الدوران الأول هو &amp;#039;&amp;#039;&amp;#039;دوران يساري&amp;#039;&amp;#039;&amp;#039; مع &amp;#039;&amp;#039;L&amp;#039;&amp;#039; كالجذر. الدوران الثاني هو &amp;#039;&amp;#039;&amp;#039;دوران يميني&amp;#039;&amp;#039;&amp;#039; مع &amp;#039;&amp;#039;P&amp;#039;&amp;#039; كالجذر (حالة يسار-يمين).&lt;br /&gt;
&lt;br /&gt;
=== حذف ===&lt;br /&gt;
إذا كانت العقدة [[شجرة (بنية بيانات)#مصطلحات|ورقة]] أو لها ابن واحد فقط، نزيلها.&lt;br /&gt;
وإلا، نبدلها بإما الأكبر في الشجرة الجزئية اليسرى (السابق inorder predecessor) أو الأصغر في الشجرة الجزئية اليمنى (اللاحق inorder successor)، ونزيل العقدة.&lt;br /&gt;
&lt;br /&gt;
== مقارنة مع بنى بيانات أخرى ==&lt;br /&gt;
كلا من أشجار AVL و[[شجرة أحمر أسود|أشجار أحمر-أسود]] هم أشجار بحث ثنائية متوازنة ذاتيا، ولذلك هم متشابهون رياضيا. عمليتا إعادة التوازن الأشجار مختلفة، ولكن كلاهما يحدث في زمن (O(log &amp;#039;&amp;#039;n&amp;#039;&amp;#039;. الفرق الحقيقي بين الاثنتين هو تحديد الارتفاع.&lt;br /&gt;
لشجرة بحجم &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
ارتفاع شجرة AVL أقل بدقة من:&amp;lt;ref&amp;gt;{{استشهاد بكتاب|الأخير=Burkhard|الأول=Walt|عنوان=Advanced Data Structures|مسار=http://ieng6.ucsd.edu/~cs100s/public/Notes/CSE100Spring2010.pdf|تاريخ=Spring 2010|ناشر=[http://softreserves.ucsd.edu/ A.S. Soft Reserves], UC San Diego|مكان=La Jolla|صفحة=99|الفصل=AVL Dictionary Data Type Implementation| مسار أرشيف = https://web.archive.org/web/20200426144714/http://ieng6.ucsd.edu/~cs100s/public/Notes/CSE100Spring2010.pdf | تاريخ أرشيف = 26 أبريل 2020 | وصلة مكسورة = yes | تاريخ الوصول =  أغسطس 2020  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\log_\varphi(n+2) - 1 = { \log_2(n+2) \over \log_2(\varphi) } - 1 = \log_\varphi(2) \cdot \log_2(n+2) - 1 \approx 1.44\log_2(n+2) - 1&amp;lt;/math&amp;gt;&lt;br /&gt;
بحيث أن &amp;lt;math&amp;gt;\varphi&amp;lt;/math&amp;gt; هو [[نسبة ذهبية|الرقم الذهبي]].&lt;br /&gt;
ارتفاع شجرة أحمر-أسود هو على الأغلب &amp;lt;math&amp;gt;2\log_2(n+1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
إن أشجار AVL أكثر صرامة بالتوازن من أشجار أحمر-أسود، مما يؤدي إلى إدخال وحذف أبطئ ولكن استرجاع أسرع.&lt;br /&gt;
&lt;br /&gt;
== انظر أيضا ==&lt;br /&gt;
* [[شجرة (بنية بيانات)|شجرة]]&lt;br /&gt;
* [[شجرة بحث ثنائية]]&lt;br /&gt;
== مراجع ==&lt;br /&gt;
{{مراجع}}&lt;br /&gt;
&lt;br /&gt;
== وصلات خارجية ==&lt;br /&gt;
* [https://github.com/ZeR0God/exdgmime/wiki exdgmime library] by Dmitriy Vilkov: Straight C implementation could easily be taken from this library under GNU-LGPL and AFL v2.0 licenses.&lt;br /&gt;
* [http://www.nist.gov/dads/HTML/avltree.html Description from the Dictionary of Algorithms and Data Structures]&lt;br /&gt;
* [http://github.com/pgrafov/python-avl-tree/ Python Implementation]&lt;br /&gt;
* [http://piumarta.com/software/tree/ Single C header file by Ian Piumarta]&lt;br /&gt;
* [http://www.strille.net/works/media_technology_projects/avl-tree_2001/ AVL Tree Demonstration]&lt;br /&gt;
* [http://webdiis.unizar.es/asignaturas/EDA/AVLTree/avltree.html AVL tree applet – all the operations]&lt;br /&gt;
* [http://github.com/fbuihuu/libtree Fast and efficient implementation of AVL Trees]&lt;br /&gt;
* [https://github.com/mondrake/Rbppavl PHP Implementation]&lt;br /&gt;
&lt;br /&gt;
{{علم الحاسوب - بنى شجرية}}&lt;br /&gt;
{{بنى بيانات}}&lt;br /&gt;
{{تصنيف كومنز|AVL-trees}}&lt;br /&gt;
{{شريط بوابات|علم الحاسوب}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:أشجار ثنائية]]&lt;br /&gt;
[[تصنيف:اختراعات سوفيتية]]&lt;br /&gt;
[[تصنيف:بنى البيانات]]&lt;br /&gt;
[[تصنيف:علم الحاسوب في 1962]]&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>