الجزء الثالث
Data
Structures
هياكل
البيانات
في
الباب الأول عرفنا يعني إيه Algorithms
,
وازاي
نعمل Analysis
و
Design
لل
Algorithms
, وشفنا
أول 2
Algorithms وهما
ال Insertion
sort
وال
Merge
sort
.
في
الجزء الثاني درسنا بالتفصيل مشكلة ال
Sorting
وشفنا
Algorithms
كتير
بتحل المشكلة ومدى الفرق في ال Performance
بين
ال Algorithms
دي.
في
الجزء ده هنتعلم حاجتين:
-
ازاي
نعمل representation
لل
Data.
-
ازاي
نعمل operations
على
ال Data
دي.
في
الفصل السادس اتعرضنا لأول Data
Structure وهي
كانت ال Heap
, وشفنا
ازاي ال Data
structure دي
بتسهلنا تنفيذ عمليات على ال Data
زي
ال Sorting
باستخدام
ال Heap
sort Algorithm , وزي
ال extraction
وال
insertion
وال
updating
elements باستخدام
ال Priority
Queue.
في
الأول عايزين نعرف يعني إيه Mathematical
set وإيه
علاقتها بال Data
structures? أولا
Mathematical
set هي
مجموعة من العناصر المميزة(يعني
مفيش عنصر متكرر),
كمان
ال Mathematical
set مش
بتتغير ,
زي
مثلا مجموعة الأعداد الطبيعية هي مجموعة
أعداد محددة لا ينفع تحذف منها أعداد ولا
ينفع تضيف ليها أعداد لإن لو عملت كدة مش
هتبقى مجموعة الأعداد الطبيعية.
أما
ال Sets
اللي
بنستخدمها في ال Computer
science علشان
نخزن أو ن represent
ال
Data
هي
عبارة عن Dynamic
sets , يعني
بتتغير ,
لإن
إحنا مش مجرد عايزين نخزن ال Data
إحنا
عايزين نعمل عليها processing
وال
processing
ده
بالتأكيد ينتج منه تغيير لل Data
زي
مثلا إننا نضيف أو نحذف elements
من
ال Data.
يعني
تقدر تقول إن ال Data
structures هي
Dynamic
sets.
Elements
of a dynamic set
قلنا
ان ال Sets
هي
عبارة عن مجموعة عناصر ,
بس
يعني إيه عناصر
في
ال Computer
science؟
هنا إحنا بنقصد مش مجرد مجموعة أعداد ولكن
مجموعة records
أو
objects
وال
record
دايما
بيتكون من key
data
و
satellite
data
, والجزئية
دي اتشرحت بالتفصيل في مقدمة الجزء الثاني
(ممكن
ترجعلها).
بعض
ال Dynamic
sets بتفرض
ان ال keys
بتاعتها
مرتبة,
النوع
ده من ال Sets
اسمه
totally-ordered
sets
.
النوع
ده بيسهل بعض العمليات زي ال Minimum
وال
Maximum
وال
Successor
وال
Predecessor
والعمليات
دي هنفهمها حالا.
Operations
on dynamic sets
العمليات
اللي بتتنفذ على ال Dynamic
sets ممكن
نقسمها لقسمين رئيسيين:
-
Queries
و
كلمة query
يعني
(استفسار)
وبالتالي
النوع ده من العمليات مش
بيغير
في
ال Dynamic
set ولكن
بيسأل
عن
معلومة معينة في ال Dynamic
set.
-
Modifying operations
وكلمة
modifying
يعني
تغيير وبالتالي النوع ده من العمليات
بيغير
في
ال Dynamic
set.
نشوف
بقى أمثلة للعمليات دي:
1)
Search(S,
k)
العملية
دي query
بتسأل
هل ال element
اللي
ال key
بتاعه
k
موجود
في ال Set
S ولا
ﻷ,
لو
ال element
ده
موجود المفروض نرجع reference
أو
pointer
بيشاور
على ال element
ده
ولو مش موجود المفروض نرجع NULL.
2)
Insert(S,
x)
العملية
دي Modifying
لإنها
بتتضيف element
جديد
x
لل
Set
S .
3)
Delete(S,
x)
العملية
دي Modifying
لإنها
بتحذف element
x من
ال Sets
S. لاحظ
إن x
هنا
بتعبر عن ان اللي جايلنا ك argument
هو
العنصر نفسه أو pointer
ليه
مش ال key
, لإن
لو اللي جاي key
هنضطر
نعمل search
الأول
قبل منحذف.
*
ال
Dynamic
set اللي
بتوفر ال 3
عمليات
دول بتسمى dictionary.
4)
Minimum(S)
العملية
دي query
بترجع
ال element
صاحب
أصغر key
في
ال Set
S.
5)
Maximum(S)
العملية
دي query
بترجع
ال element
صاحب
أكبر key
في
ال Set
S.
6)
Successor(S,
x)
العملية
دي query
بترجع
ال element
الي
بعد ال element
x في
الترتيب من حيث ال key
طبعا.
7)
Predecessor(S,
x)
العملية
دي query
بترجع
ال element
الي
قبل ال element
x في
الترتيب.
في الجزء ده إن شاء الله هنشوف أمثلة لل Data structures اللي بتوفر العمليات دي وهنشوف الفرق في ال performance بينهم.
تعليقات
إرسال تعليق