Applications of Trees

الفصل الحادي عشر: تطبيقات الأشجار (BST, Decision Trees, Huffman)

الهدف: استخدام الأشجار للبحث السريع، اتخاذ القرارات، وضغط البيانات (Compression).
1

Binary Search Trees (BST)

آلية العمل

هي شجرة ثنائية يتم تخزين البيانات فيها بنظام معين لتسريع البحث:

Left Child < Parent < Right Child

التعقيد: $O(\log n)$ في المتوسط للبحث والإضافة. (مثل Binary Search في المصفوفات ولكن مرن في الإضافة).

10
5
15
2
8
2

Decision Trees

الأشجار واتخاذ القرار

كل عقدة داخلية تمثل "سؤالاً" أو "مقارنة"، وكل ورقة (Leaf) تمثل "نتيجة" أو "قراراً".

نظرية الحد الأدنى للترتيب (Sorting Lower Bound)

أي خوارزمية ترتيب تعتمد على المقارنة (Comparison-based) يجب أن تقوم بـ $\lceil \log_2(n!) \rceil$ مقارنة على الأقل في أسوأ الأحوال.
$\approx O(n \log n)$.

3

Huffman Coding (ضغط البيانات)

Prefix Codes

لتمثيل الحروف بـ Bits متغيرة الطول (Variable Length)، يجب ألا يكون أي كود "بادئة" لكود آخر.
خطأ: a=0, b=01 (لأن 0 بداية 01).
صح: a=0, b=10, c=11.

يتم تمثيل الأكواد كأوراق في شجرة ثنائية (يسار=0، يمين=1) .

Huffman Algorithm

الهدف: الحروف الأكثر تكراراً تأخذ كوداً أقصر.

الخطوات:
  1. خذ أقل حرفين تكراراً واجمعهما في شجرة صغيرة.
  2. مجموعهما يصبح "حرفاً جديداً".
  3. كرر حتى تصبح شجرة واحدة كبيرة.
4

Tree Traversal & Expressions

يمكن تمثيل المعادلات الرياضية كأشجار (الجذر هو العملية، والأبناء هم الأرقام).

Preorder Prefix Notation
$(+ a b)$
Inorder Infix Notation
$(a + b)$
Postorder Postfix Notation
$(a b +)$
🛡️ EXAM VAULT (خزنة الاختبار)
TRAP / التفرد

Is Huffman Code Unique؟

لا! شجرة هوفمان ليست وحيدة (يمكنك وضع الصفر يمين أو يسار، أو تبديل العناصر المتساوية في التكرار).
ولكن طول الكود المضغوط (عدد البتات الكلي) هو دائماً الأمثل والوحيد.

APPLICATION / الألعاب

Minimax Algorithm

تستخدم أشجار القرار في الألعاب (مثل Tic-Tac-Toe).
اللاعب الأول يحاول تعظيم النتيجة (Max)، والخصم يحاول تقليلها (Min). الشجرة تمثل كل الحركات الممكنة .

→ السابق (Ch 10) الفصل التالي (Ch 12) ←