Professional Documents
Culture Documents
I
AS
T
)?(O
)ΣT(i
حيث iهو المتحول الذي يتحكم بالحلقة ،و) T(iعدد العمليات
األولية المتعلقة بالمرور رقم iفي الحلقة.
بالنسبة إلى طلب (استدعاء) إجرائية تحسب درجة تعقيد اإلجرائية
باتباع نفس القواعد (حساب عدد العمليات األولية في اإلجرائية).
بالنسبة إلى اإلجرائيات العودية ،تستخدم عالقتها العودية لحساب
درجة التعقيد )).T(n) = f(T(g(n
د .ندى غنـيم
H
I
AS
T
نظرية عامة
إذا استطعنا وضع معادلة التعقيد الزمني على الشكل:
T(1)=p
T(n) = aT(n/b) + cnk
تكون لدينا الحاالت الثالث التالية:
) Case (1): a bk then T(n) is O(nlogba
)Case(2): a = bk then T(n) is O(nk logn
) Case(3): a < bk then T(n) is O(nk
د .ندى غنـيم
H
I
AS
T
”حجم معطيات الدخل“؟
مثال :
العمليات الالزمة لفرز صفيفة من 1000عدد >
عدد العمليات الالزمة لفرز صفيفة من 10أعداد.
يمكن أن يكون إيجاد الحالة الوسطية صعباً جداً ،لذلك يقاس
تعقيد الخوارزميات عادة بالتعقيد الزمني في الحالة األسوأ.
كذلك ،تكون معرفة التعقيد الزمني في الحالة األسوأ في
بعض التطبيقات الخاصة أمراً أساسياً:
التحكم في حركة المطارات،
a = bc if logb a = c
:خواص
logb ac = logb a + logb c c
(ba) = ba c
logb a/c = logb a - logb c
logb ac = c . logb a ba bc = ba + c
ندى غنـيم.د
H
I
AS
T
مراجعة رياضية :المتتاليات
t تعريف:
is
) f (i ) f ( s ) f ( s 1) ... f (t
i 1
4
) :Θ(gا لتوابع ا لتيت نمو ب سرعة م ماثلة ل سرعة .g ) :Ω(gا لتوابع ا لتيت نمو علىا ألقلب سرعة .g
د .ندى غنـيم
H
I
AS
T
التدوين المقارب (تتمة)
idealConstant
goodlog(n)
n
n.log(n)
poor n2
n3
awful en
ندى غنـيم.د
H
I
AS
T
مثال:
إذا كان البرنامج بحاجة إلى 2nخطوة ،وإذا كانت لدينا n=40
عدد الخطوات تقريباً. 1012*1.1
فعلى حاسوب ينفذ بليون Gigaعملية في الثانية فذلك يتطلب
18.3دقيقة.
إذا كانت n=50 13يوماً.
Algorithm prefixAverages1(X):
Input: An n-element array X of numbers.
Output: An n-element array A of numbers such that
A[i] is the average of elements X[0], ... , X[i].
A[i] s / (i + 1) 2( n ) O ( n )
return array A
ندى غنـيم.د
H
I
AS
T
مثال: 4خوارزمية تكرارية إليجاد مجموع عناصر صفيفة
خوارزمية تكرارية تقوم بإيجاد مجموع عناصر صفيفة Aعدد عناصرها n
;S += a[I] 1 n O(n)
;Return s 1 1 O(1)
} 0 - O(0)
Total O(n)
ندى غنـيم.د
H
I
AS
T
مثال: 4خوارزمية عودية إليجاد مجموع عناصر صفيفة
خوارزمية عودية تقوم بإيجاد مجموع عناصر صفيفة Aعدد عناصرها n
if (n <=0) { 1 1 1 O(1) 1
else
} 0 - - O(0) 0
Total O(2+x) 2
X = TRsum(n-1)
ندى غنـيم.د
H
I
AS
T RSum التعقيد المقارب لـ
Statement TRSum 2
s/e (n) Frequency n 0
Totalifsteps
n=0 n>o n=0 n>o
2 TRSum (n - 1) if n 0
Float RSum(float a[], int n) 0 - - O(0) 0
} 0 - n(2)
- T O(0) (0)0
RSum
Total 2n 2, O(2+x) n 2 0
X = TRsum(n-1)
ندى غنـيم.د
حساب تعقيد قيمة كثير حدود
H
I
AS
T
Input: ...
Output: …
y = a0
for i =1 to n
power (x0 , i)
y = y + ai * power
C (n ) O (n )
2
Return y
ندى غنـيم.د
H
I
AS
T
حساب تعقيد قيمة كثير حدود
P(x) an x n an-1x n-1 ... a1x a0
Input: …
Output: …
y = an
C(n) O(n)
for i =1 to n
y = y * x0 + an-I
Return y
ندى غنـيم.د
حساب درجة تعقيد البحث الثنائي
H
I
AS
T
ندى غنـيم.د
H
I
AS
T
مثال أعداد فيبوناتشي
تعرف Fibonacciأعداد فيبوناتشي بالعالقة:
if (n < 2)
return n;
else
return Fib(n - 2) + Fib(n - 1);
ندى غنـيم.د
H
I
AS
T )مـثال (تتمة
Algorithm iterativeFib (n)
:خوارزمية فيبوناتشي التكرارية هي
Input:……
Output: …..
if (n <= 1)
return n;
else
int fn, fnm1 = 1;
fnm2 = 0;
for (int i = 2; i <= n; i++)
fn = fnm1 + fnm2;
fnm2 = fnm1;
fnm1 = fn;
ندى غنـيم.د
return fn;
H
I
AS
T
الطريقة المباشرة لحساب أعداد فيبوناتشي هي:
n ˆ n
Fib(n)
5
حيث
1
(1 5 ) and ˆ 1
2
هناك عدة طرق لتخزين معطيات الدخل مما يتطلب المقارنة بين
حجم الذاكرة التي تحتاجها كل طريقة.
تخزين سلسلة من األعداد في صفيفة أو في الئحة مترابطة
عند تصميم الخوارزميات هناك دائماً حالة تسوية بين التعقيد الزمني
وحجم الذاكرة