Design and Analysis of Algorithms تﺎﻴﻣزراﻮﺨﻟا ﻞﻴﻠﺤﺗو ﻢﻴﻤﺼﺗ: · November 2016
Design and Analysis of Algorithms تﺎﻴﻣزراﻮﺨﻟا ﻞﻴﻠﺤﺗو ﻢﻴﻤﺼﺗ: · November 2016
net/publication/310768681
CITATIONS READS
0 23,058
1 author:
El-Sayed Badr
Benha University
51 PUBLICATIONS 136 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by El-Sayed Badr on 28 January 2019.
تأليف
دكتور /السيد بدر
أستاذ علوم الحاسب اآللى م
كلية الحاسبات والمعلومات
القاهرة -مصر
1
E. M. Badr Introduction يمذيح:انثاب األول
انفهزص
Introduction ِملِـــــخ
Algorithm Definition بد١ِاهىٛف اٌق٠رؼو
Flowchart Definition ْب٠ف فوائؾ اٌَو٠رؼو
Examples بد١ِاهىُٛ اٌق١ّ رظٍٝأِضٍخ ػ
Preference Factors بد١ِاهىٛٓ اٌق١اًِ اٌّفبػٍخ ثٛػ
Polynomial Algorithm كٚوح اٌؾل١بد وض١ِاهىٛاٌق
Exponential Algorithm خ١ٍ٢بد ا١ِاهىٛاٌق
Important Problem Types بد١ِاهىٛاع ٘بِخ ٌٍقٛٔأ
Exercises ٓ٠رّبه
Introduction ِملِخ
Analysis of Algorithms بد١ِاهىًٛ اٌق١ٍخ رؾ١ف١و
Growth of Functions ايٚ اٌلّٛٔ
Best case, Average case, Worst case بد١ِاهىًٛ اٌق١ٍاٌؾبالد اٌضالصخ ٌزؾ
Asymptotic Notation خ١غ اٌزمبهث١اٌظ
Big-Oh Notation ٍٟغخ اٌؾل األػ١ط
Omega Notation ٟٔغخ اٌؾل األك١ ط-1
Theta Notation ٟٔاٌؾل األك-ٍٟغخ اٌؾل األػ١ ط-2
Examples of Algorithm Analysis بد١ِاهىًٛ اٌق١ٍ رؾٍٝأِضٍخ ػ
Exercises ٓ٠رّبه
2
E. M. Badr Introduction يمذيح:انثاب األول
3
E. M. Badr Introduction يمذيح:انثاب األول
Introduction ِملِخ
Basic Definitions خ١ٍُ اٍب١ِ٘فب
Parallel Computers Classification خ٠اىٛف اٌؾبٍجبد اٌّز١ٕرظ
Parallel Algorithms Design خ٠اىٛبد اٌّز١ِاهىُٛ اٌق١ّرظ
Exercises ٓ٠رّبه
Formulas for the algorithms analysis صيغ يفيذج نتحهيم انخىارسيياخA يهحك
4
E. M. Badr Introduction انثاب األول :يمذيح
الباب األول
مقدمة
Introduction
Introduction مقدم ـ ــة
Algorithms تعريف الخوارزميات
Flow Chart تعريف خرائط السريان
أمثلة على تصميم الخوارزميات ورسم خرائط سريانها Examples
Polynomial Algorithms الخوارزميات كثيرة الحدود
Exponential Algorithms الخوارزميات اآلسية
Algorithms Efficiency كفاءة الخوارزميات
Algorithms Applications تطبيقات الخوارزميات
Exercises تمارين
5
E. M. Badr Introduction انثاب األول :يمذيح
يمذيح
اٌملهح ػٍ ٝؽً اٌّشبوً ثٛاٍطخ اٌجوِغخ ِ٘ٙ ٟبهح ٚؽو٠مخ ِورجخ ٚال رؼزّل ػٍٝ
اٌؼشٛائ١خ ٘ٚنٖ اٌملهح ّ٠ىٓ اوزَبثٙب ٚرؼٍّٙب ثارجبع ثؼغ اٌمٛاػل اٌز ٟرَبػل ػٍ ٝمٌه ٚثؼغ
٘نٖ اٌمٛاػل موو٘ب ه ٓ٠ك٠ىبهد اٌو٠بػٚ ٟاٌفٍَٛ١ف اٌّؼوٚف : ٟ٘ٚ
-1ال ّ٠ىٓ لجٛي أ ٞش ٟؽممزٗ ٍَِّخ ئال ئما صجذ مٌه ف ٟاٌزغوثخ ٚاٌّشب٘لح .
-2وً ِشىٍخ أِ ٚؼؼٍخ ٠زُ رجَ١طٙب ٚرمَّٙ١ب ئٌ ٝأعياء ػلح وٍّب أِىٓ مٌه .
-3فىو ثطو٠مخ ِٕظّخ ِٕٚطم١خ ٚمٌه ف ٟاٌجلء ف ٟاألعياء اٌجَ١طخ ٍٍٙٚخ اٌف ُٙصُ رلهط ئٌٝ
األعياء األطؼت فبألطؼت ؽز ٝرٕز ٝٙاٌّشىٍخ .
-4اٌّواعؼخ ٌغّ١غ األعياء ؽز٠ ٝىزًّ اٌؾً .
ٚثبٌوغُ ِٓ أْ ٘نٖ اٌمٛاػل رُ ٚػؼٙب لجً 333ػبَ رمو٠جب ِٓ طٕبػخ أٚي ؽبٍت
ئٌىزو ٟٔٚئال أٔٙب ِبىاٌذ ِطجمخ ٚطبٌؾخ ٌالٍزقلاَ .اٌزفى١و اٌغ١ل ٚإٌّظُ ٌٍزؼو٠ف ٚرؾل٠ل
اٌّشىٍخ ػوٚه ُِٙٚ ٞعلاً ٚأٍبٌٍٍ ٟؾظٛي ػٍٔ ٝزبئظ طؾ١ؾخ ٚثقبطخ ػٕل اٌزؼبًِ ِغ
اٌؾبٍت ٚ ,مٌه فاْ أٚي فطٛح ٌؾً اٌّشىٍخ فّٙٙب ه٠بػ١ب.
انخىارسيياخ ( ) Algorithms
ٌمل اٍزقلِذ وٍّخ اٌقٛاهىِ١خ , Algorithmف ٟاٌموْ اٌّبػٚ , ٟثشىً ٚاٍغ ,
ف ٟأٚهثب ٚأِو٠ىبٚ ,وبٔذ رؼٕ , ٟاٌٛطف اٌلل١ك ٌزٕف١ن ِّٙخ ِٓ اٌّٙبَ ,أ ٚؽً َِأٌخ ِٓ
اٌَّبئً ٚ .لل اشزك اٌغوث٘ ْٛ١نٖ اٌىٍّخ ِٓ اٍُ ػبٌُ اٌو٠بػ١بد اٌٍَُّ اٌّؼوٚف ,يحًذ تٍ
يىطً انخىارسيي اٌن ٜػبُ ف ٝثغلاك ِٓ ٍٕخ َ783ئٌ َ 847 ٝف ٝػظو اٌقٍ١فخ اٌّأِ,ْٛ
ٚثوع ف ٝاٌو٠بػ١بد ٚاٌفٍه ٚ ,رون ثظّبد ف ٝاٌزواس اٌؾؼبه ٜاٌؼبٌّ ,ٝفمل ٚػغ
اٌقٛاهىِ ٝػٍُ اٌغجو ٚأٌف وزبة اٌغجو ٚاٌّمبثٍخٚ .ف ٝرٍه أٚ٢خ أؽٍك ٌفع اٌقٛاهىِ١بد ػٍٝ
علٚي اٌؼوة ٚاٌمَّخ ٚاٌؾَبة اٌؼشوٚ ,ٞظً ٘نا األٍُ ِزلاٚال ف ٝأٚهثب ِلح لو ْٚؽزٝ
رطٛه ِإفوا ٌ١ؾًّ ِلٌٛال عل٠لا ِورجطب ثبٌجوِغخ.
تؼزيف ( :انخىارسيياخ )
رؼوف اٌقٛاهىِ١بد ػٍ ٝأٔٙب ِغّٛػخ ِٓ اٌقطٛاد ( اٌزؼٍّ١بد ) اٌّورجخ ٚإٌّز١ٙخٌ ,زٕف١ن
ػٍّ١خ ؽَبث١خ ,إِٔ ٚطم١خ ,أ ٚغ١و٘ب ثشىً رزبثؼِ ٟزًٍََ ِٕٚطم. ٟ
6
E. M. Badr Introduction انثاب األول :يمذيح
أ ٞفٛاهىِ١خ رزى ِٓ ْٛفطٛاد ِورجخ ,ثؼؼٙب ئصو ثؼغ ٚ ,وً فطٛح رؼزجو ثٕفَٙب ٚؽلح ِٓ
ٚؽلاد اٌجٕبء اٌىبًِ ٌٍقٛاهىِ١خ ٠ٚ ,قزٍف ؽغُ ٘نٖ اٌقطٛاد ثبفزالف اٌقٛاهىِ١بد ,
ٚافزالف األشقبص ,اٌن٠ ٓ٠م ِْٛٛثزٕف١ن رٍه اٌقطٛاد .
يثال : 1
اوزت فٛاهىِ١خ رم َٛثا٠غبك َِبؽخ ِٚؾ١ؾ كائوح ٔظف لطو٘ب ِؼٍ ( R ( َٛ؟
انحم :
َِبؽخ اٌلائوح = ِ , pi * R2ؾ١ؾ اٌلائوح = 2 * pi * Rؽ١ش أْ ِٓ اٌّؼٍ َٛأْ
إٌَجخ اٌزمو٠ج١خ ٚ piلّ١زٙب اٌؼلك٠خ صبثزخ ٚرَب , 3.14 ٞٚثّٕ١ب ِ Rزغ١و ّ٠ضً ٔظف لطو اٌلائوح
ٚ ,ؽً ٘نٖ اٌَّأٌخ وّب ٠أر: ٟ
) Algorithm ( Area of circle and circumference of a circle
Input: R the radius of circle
) Output : A and C ( area and circumference
1- Strat
2- Read R
3- Assign PI = 3.14
4- Compute A = Pi *R2
5- Compute C = 2*Pi *R
6- Print A , C, R
7- END
7
E. M. Badr Introduction انثاب األول :يمذيح
. 3رَ١و ٌٍّجوِظ أِو ئكفبي أ ٞرؼل٠الد ,ف ٟأ ٞعيء ِٓ أعياء اٌَّأٌخ ,ثَوػخ ٚكْٚ
اٌؾبعخ إلػبكح كهاٍخ اٌَّأٌخ.
. 4ف ٟاٌَّبئً اٌز ٟرىضو فٙ١ب االؽزّبالد ٚاٌزفوػبد ٠ ,ظجؼ أِو ِزبثؼخ كلبئك اٌزًٍََ ,أِوا
شبلب ػٍ ٝاٌّجوِظ ,ئما ٌُ َ٠زؼٓ ثّقطؾ رظٙو ف ٗ١فطٛاد اٌؾً اٌوئ١َ١خ ثشىً ٚاػؼ .
رؼزجو هٍ َٛفوائؾ اٌزلفك اٌَّزؼٍّخ ف ٟرظّ ُ١ؽٍٛي ثؼغ اٌَّبئً ِ ,وعؼب ,ف ٟؽً َِبئً
أفوِ ٜشبثٙخ ِٚ ,فز بؽب ٌؾً َِبئً عل٠لح ٌٙب ػاللخ ِغ اٌَّبئً اٌملّ٠خ اٌّؾٌٍٛخ ,فزشجٗ هٍَٛ
فوائؾ اٌزلفك ,ثبٌوٍ َٛاٌز٠ ٟؼؼٙب إٌّٙلً اٌّؼّبه ٞػٕل رظّ ّٗ١ث١زب أ ٚػّبهح ,أَِ ٚغل
...اٌـ .
( انزيش) انشكم االصطالحي انزيش يؼًُ
) (Start \ stop ثلا٠خ أٙٔ ٚب٠خ اٌجؤبِظ () 1
8
E. M. Badr Introduction انثاب األول :يمذيح
يثال : 2
فو٠طخ اٌَو٠بْ ٌٍقٛاهىِ١خ اٌز ٝرم َٛثا٠غبك َِبؽخ ِٚؾ١ؾ كائوح ٔظف لطو٘ب ِؼٍR َٛ
وّب ِ٘ٛ ٛػؼ ف ٝاٌّضبي اٌَبثك.
انحم :
START
DAER
R
PI = 3.14
A = Pi * ( R )2
) C = 2*Pi *( R
PRINT
R, A & C
STOP
شكم : 2خزيطح طيز خىارسييح حظاب يظاحح ويحيط دائزج َصف لطزها R
يثال : 3
اوزت اٌقٛاه ىَ اٌقبص ثطجبػخ األػلاك ِٓ 1اٌ 13 ٝػٍ ٝشبشخ اٌؾبٍت ؟
9
E. M. Badr Introduction انثاب األول :يمذيح
انحم :
) Algorithm ( print the numbers from 1 to 10
Input : /
Output: 1 2 3 4 ….. 10
1- Strat
2- Assign x =1
3- Print x
4- ) Increase x by one ( x = x+1
5- If x > 10
a- Yes : go to step 6
b- No: go to step 3
6- End
10
E. M. Badr Introduction انثاب األول :يمذيح
يثال : 4اوزت اٌقٛاه ىَ اٌقبص ثطجبػخ اٍّه ٍٕٚه ِٚإٍ٘ه ػٍ ٝاٌشبشخ ِ 13واد ؟
انحم :
Algorithm: (Print your name, age and qualifier ) 10 times
'Input: a= 'badr' ; b = '40' and c ' Ph.D
) Output: a, b and c (10 times
1-Start
2- Assign x = 1
3-Print a , b and c
) 4- Increase x by one ( x = x + 1
5- If x > 10
a- Yes: go to step 3
6-Stop
11
E. M. Badr Introduction انثاب األول :يمذيح
اٌؾظبٌخ ِ٘ ٟقيْ هلّ ٟرجلأ لّ١زٗ االثزلائ١خ ثبٌمّ١خ طفو (فبهغخ) ٠ٚ ,زُ ف ٗ١رغّ١غ ِغّٛػخ
ِٓ اٌم ُ١اٌولّ١خ ثشىً رواوّٚ ٟفٙٔ ٟب٠خ اٌزغّ١غ ٠زُ ؽجبػخ لّ١خ ٘نا اٌّقيْ ٌ١ؼط ٟاٌمّ١خ
اإلعّبٌ١خ ٌّب رُ رغّ١ؼٗ ٠ٚ ,زُ مٌه ِٓ فالي ِغّٛػخ ِٓ اٌقطٛاد وّب : ٍٟ٠
تحذيذ ليًح اتتذائيح نهحصانح:
ػٓ ؽو٠ك رؾل٠ل ِقيْ هلّ ٟلّ١زٗ االثزلائ١خ = طفو ١ٌٚىٓ S = 0
إضافح انزلى انًطهىب تجًيؼه نهحصانح :
اٌولُ S = S +
طثاػح ليًح انحصانح في َهايح انتجًيغ :
اؽجغ S
١ٍٚزُ رٛػ١ؼ ٘نٖ اٌفىوح ِٓ فالي اٌّضبي اٌزبٌ: ٟ
12
E. M. Badr Introduction انثاب األول :يمذيح
يثال : 7
اوزت اٌقٛاه ىَ اٌقبص ثطجبػخ ٚؽَبة ِغّٛع االػلاك اٌيٚع١خ ِٓ 2ئٌ 23 ٝ؟
انحم :
لجً اٌجلء ف ٝوزبثخ اٌقٛاهىِ١خ ٠غت فٚ ُٙرؾٍ ً١اٌَّأٌخ ه٠بػ١ب وبٌزبٌ:ٝ
رؼو٠ف اٌّشىٍخ:
اٌّقوعبد :ؽجبػخ اإلػلاك اٌيٚع١خ 23,............, 8, 6 , 4, 2
اٌّلفالد :رؾل٠ل أٚي هلُ ىٚع ٟثبٌمّ١خ (١ٌٚ )2ىٓ x = 2
اٌّؼبٌغخ :رؾل٠ل ِقيْ وؾظبٌخ لّ١زٗ اثزلائخ = طفو ١ٌٚ ,ىٓ SUM = 0صُ ؽجبػخ اٌولُ x
ٚئػبفخ اٌولُ xئٌ ٝاٌؾظبٌخ SUMصُ ى٠بكح اٌولُ ثّملاه ,2اٌَإاي ػٓ اٌٛطٛي
ألفو هلُ ٚ 23اٌزىواه ٚاف١وا ؽجبػخ لّ١خ اٌؾظبٌخ
13
E. M. Badr Introduction انثاب األول :يمذيح
خزيطح انتذفك ( انظزياٌ) Flowchart خىارسييح حظاب يجًىػح األرلاو يٍ 1إنً 11
اٌجلا٠خ .1
START اعؼً SUM =0 .2
اعؼً x = 2 .3
sum=0اعؼً اؽجغ x .4
أػف xئٌ ٝاٌؾظبٌخ .5
x=2اعؼً SUM = SUM + x
ىك اٌولُ ثّملاه x = x +2 2 .6
اطثغ SUM
ً٘ ? x <= 20 .7
Sum=Sum +X ٔ .aؼُ :ام٘ت ٌٍقطٛح 4
اؽجغ لّ١خ اٌؾظبٌخ SUM .8
إٌٙب٠خ . .9
X=X +2 ٔؼُ
ً٘ X<20
ال
اطثغ SUM
إٌٙب٠خ
انشكم : 3خىارسييح وخزيطح طزياٌ حظاب يجًىع االػذاد انشوجيح يٍ 2انً 21
ِوح أفوٌٍ ٞزنوو ,رؼوف اٌقٛاهىِ١خ ػٍ ٝأٔٙب أ ٜئعواء ؽَبثٚ ٝاػؼ اٌّؼبٌُ
ٚاٌز ٝرأفن ثؼغ اٌم ( ُ١رَِّ ٝلفالد ٚ ) inputثؼل ئعواء ثؼغ ػٍّ١بد
اٌّؼبٌغخ , processingرٕزظ اٌقٛاهىِ١خ ثؼغ اٌم ( ُ١رَِّ ٝقوعبد ِٓٚ .)outputصُ رؼزجو
14
E. M. Badr Introduction انثاب األول :يمذيح
اٌّضبي اٌزبٌٛ٠ ٝػؼ اٌفوق ث ٓ١فٛاهىِ١خ آٍ١خ ٚفٛاهىِ١خ وض١وح اٌؾلٚك ِٓ ؽ١ش اٌيِٓ
اٌّطٍٛة ٌزٕف١ن وً ِّٕٙب :
يثال ٚ : 8علد االثٕخ اٌىجو ٜئّ٠بْ ِؾال ٠ج١غ أشوؽخ اٌىبٍ١ذ ثَؼو ع١ل علا ٚٚ ,افمذ ٚاٌلرٙب
ػٍ ٟأْ رشزو ٞئّ٠بْ 13شوائؾ ف ٟاٌشٙوٚ .أهاك شم١مٙب األطغو ئٍالَ أْ ٠فؼً ٔفٌ اٌشٟء
ٚؽظً ػٍِٛ ٟافمخ ٚاٌلرٗ ػٍ ٟإٌؾ ٛاٌزبٌ : ٟأْ ٠شزو ٞشو٠ط ٓ١ف ٟاٌشٙو األٚي ٠ٚؼبػف
ػلك اٌشوائؾ اٌز٠ ٟشزوٙ٠ب ف ٟوً شٙو ,يٍ يحصم ػهً أكثز ػذد يٍ األشزطح إيًاٌ أو اطالو
تؼذ يزور 6شهىر ؟
15
E. M. Badr Introduction انثاب األول :يمذيح
انحم :
المجموع 6 5 4 3 2 1 الشهر
الشخص
61 11 11 11 11 11 11 إيمان
126 64 32 16 8 4 2 إسالم
فزى ْٛاإلعبثخ ثبٌزأو١ل ئٍالَ ٘ ٛاٌن١ٍ ٞؾظً ػٍ ٟأوجو ػلك ِٓ اٌشوائؾ ٚ ,األشىبي اٌج١بٔ١خ
ٚاٌغلٚي اٌَبثك ٛ٠ػؾبْ مٌه :
70
60
50
40
30
20
10
0
6 5 4 3 2 1
انشكم : 4حانح ايًاٌ انًحىر االفمً يًثم ػذد انشهىر تيًُا انًحىر انزاطي يًثم ػذد االشزطح
اٌشىً ٛ٠ 4ػؼ إٔٔب َٔزط١غ اٌزؼج١و ػٓ ؽبٌخ اّ٠بْ ثؼاللخ ػلك االشوؽخ ثؼلك اٌشٛٙه ولاٌخ
وض١وح ؽلٚك ف ٝػلك االشوؽخ وبٌزبٌ٠ٚ T(n) = 10n ٝالؽع ا٠ؼب ِٓ اٌشىً 4أْ ى٠بكح ػلك
االشوؽخ ري٠ل ثّؼلي صبثذ( 13 ٛ٘ٚوً شٙو)
70
60
50
40
30
20
10
0
6 5 4 3 2 1
انشكم :5حانح اطالو انًحىر االفمً يًثم ػذد انشهىر تيًُا انًحىر انزاطي يًثم ػذد االشزطح
16
E. M. Badr Introduction انثاب األول :يمذيح
اٌشىً ٛ٠ 5ػؼ إٔٔب َٔزط١غ اٌزؼج١و ػٓ ؽبٌخ اٍالَ ثؼاللخ ػلك االشوؽخ ثؼلك اٌشٛٙه ولاٌخ
آٍ١خ ف ٝػلك االشوؽخ وبٌزبٌ٠ٚ T(n) = 2n ٝالؽع ا٠ؼب ِٓ اٌشىً 5أْ ى٠بكح ػلك االشوؽخ
ري٠ل ثّؼلي غ١و صبثذ .
ػٍّٕب أٔٗ ػٕلِب ّٕٛ٠ىِٓ رٕف١ن كاٌخ ِب ّٔ ٛأٍ ٟفٙنا ٠إك ٞئٌ ٟأْ ٘نٖ اٌقٛاهىِ١خ
ٌَ١ذ طبٌؾخ ٌالٍزقلاَ اٌؼٍّ ٟف ٟاٌؾ١بح ِغ وٙٔٛب فٛاهىِ١خ طؾ١ؾخ ٌٚىٓ رؼط ٟإٌزبئظ ثؼل
ىِٓ وج١و ِٓ اٌٛلذ ثبٍزقلاَ اٌؾبٍت ا.ٌٟ٢
ثفوع أْ ٌلٕ٠ب أوضو ِٓ فٛاهىِ١خ طؾ١ؾخ رم َٛثبٌؾظٛي ػٍٔ ٝفٌ إٌبرظ اٌّطٍٛة ٌؾً
َِأٌخ ِب ,فبٌَإاي اٌّطوٚػ أ ِٓ ٜرٍه اٌقٛاهىِ١بد رى ْٛاألفؼً ؟
ٌإلعبثخ ػٍ٘ ٝنا اٌَإاي ٠غت أْ َٔزؼوع ثؼغ اٌزؼبه٠ف اٌقبطخ ثّٛػٛع اٌّفبػٍخ ثٓ١
اٌقٛاهىِ١بد.
m , n ٓ١ؾ١ٓ طؾ٠ ٌؼلكgreatest common divisor ٍٝٔزنوو ِؼب أْ اٌؼبًِ اٌّشزون األػ
m, n ٓ٠مَُ اٌؼلك٠ ؼ١ اوجو ػلك طؾٛ٘ ٗٔ أٍٝؼوف ػ٠ gcd(m,n) وِي ٌٗ ثبٌوِي٠ ٞاٌنٚ
ْ اٌموٝ ف. 12 اٌؼلكٛ٘ 60, 12 ٓ٠ ٌٍؼلكًٍٝ اٌّضبي اٌؼبًِ اٌّشزون اٌؼ١ ٍجٍٝ فؼ,ْٝ ثبلٚك
بٙ١ٍطٍك ػ٠ ضب٠ؽلٚ .خ ٌؾً ٘نٖ اٌَّأٌخ١ِاهىٛ فEuclid of Alexandria الك وزت١ٌّاٌضبٌش لجً ا
ALGORITHM Euclid(m, n)
//Computes gcd(m, n) by Euclid’s algorithm
//Input: Two nonnegative, not-both-zero integers m and n
18
E. M. Badr Introduction انثاب األول :يمذيح
٠الؽع ِٓ اٌقٛاهىِ١خ اٌَبثمخ أْ اٌؼلك اٌضبٔ٠ n ٝظغو ( رمً لّ١زٗ) وً رىواه ٚال ٠ظجؼ ػلكا
ٍبٌجب .اٌمّ١خ اٌغل٠ل ٌٍؼلك ٚ m mod n ٝ٘ nاٌز ٝكائّب رى ْٛأطغو ِٓ ٌّ nبما ؟ ِٓٚ .صُ
رظً لّ١خ اٌؼلك nئٌ ٝاٌظفو ٚػٕل٘ب رزٛلف فٛاهىِ١خ ئلٍ١لً.
ٚاالْ ٔؼوع فٛاهىِ١زبْ أفو٠زبْ إل٠غبك اٌؼبًِ اٌّشزون االػٌٍٍ ٝؼلك m, n ٓ٠اٌظؾ١ؾ, ٓ١١
اٌقٛاهىِ١خ اٌضبٌ١خ رؼزّل ػٍ ٝاٌفىوح اٌزبٌ١خ ( ِالؽظخ) ٔالؽع أْ لّ١خ اٌؼبًِ اٌّشزون األػٍ ٝال
رزؼل ( ٜال ري٠ل ) ػٓ لّ١خ اٌؼلك األطؼو ٌٍ nؼلك .m, n ٓ٠أ ٜاْ ّ٠ىٕٕب اٌزؼج١و ػٓ مٌه وبٌزبٌٝ
}ٚ ,t = min {m, nاالْ ّ٠ىٕٕب اْ ٔقزجو ِب ئما وبْ tرمَُ وال اٌؼلك ٓ٠اَ ال ؟
َؼى tرمَُ اٌؼلكاْ ,ئما اٌؼلك ٛ٘ tاٌمبٍُ اٌّشزون األػٌٍٍ ٝؼلك. ٓ٠
ال tال رمَُ اٌؼلكاْ ٔ ,م َٛثزمٍ ً١لّ١خ اٌؼلك tثّملاه اٌٛاؽل اٌظؾ١ؼ ٔٚؾبٚي ف ٝاالفزجبه ِٓ
عل٠ل ٘ٚىنا ؽزٔ ٝؾظً ػٍ ٝاٌؼبًِ اٌّشزون األػٍ.ٝ
)Consecutive integer checking algorithm for computing gcd(m, n
Step 1 Assign the value of min{m, n} to t.
?Step 2 Divide m by t. Is the remainder of this division is 0
Yes: go to Step 3
No: go to Step 4.
Step 3 Divide n by t. Is the remainder of this division is 0
Yes: return the value of t as the answer and stop
No: proceed to Step 4.
Step 4 Decrease the value of t by 1. Go to Step 2.
19
E. M. Badr Introduction انثاب األول :يمذيح
20
E. M. Badr Introduction انثاب األول :يمذيح
طؾ١ؾِ ٓ١١جّٙخ ٌّبما؟ ٌٓ اٌقطٛح األٌٚ ٝاٌضبٔ١خ اٌقبطخ ثمبئّخ اٌؼٛاًِ األ١ٌٚخ ٌىً ِٓ m, n
غ١و ٚاػؾخ ٚاٌّلهً ػٕلِب شوػ ٌٕب اٌطو٠مخ ٌُ ٠قجؤب ٛ٠ ٌُٚػؼ ٌٕب و١ف١خ اٌؾظٛي ػٍ٘ ٝنٖ
اٌمبئّخٚ ,ئما ٌُ ٍّٔه ؽولخ ٌٍؾظٛي ػٍ٘ ٝنٖ اٌمبئّخ فٍٓ ٔزّىٓ ِٓ وزبثخ ٌٙ codeنٖ
اٌقٛاهىِ١خ .ثبإلػبفخ ئٌ ٝأْ اٌقطٛح اٌضٍضخ غ١و ٚاػؾخ أ٠ؼب ٌُٚرٛػؼ و١ف١خ ا٠غبك اٌؼٕبطو
اٌّشزووخ ث ٓ١اٌمبئّز ٓ١ف ٝاٌقطٛح األٚ ٌٝٚاٌضبٔ١خ.
ٌٚزٛػ١ؼ اٌقٛاهىِ١خ اٌَبثمخ ( فٛاهىِ١خ اٌّلهٍخ اٌّزٍٛطخ ٔ )middle schoolملَ
٘نٖ اٌقٛاهىِ١خ اٌز ٝرم َٛثب٠غبك لبئّخ األػلاك اٌ١ٌٛخ ٌٍؼلك ٚ ,nرَّ٘ ٝنٖ اٌقٛاهىِ١خ sieve
ٚهثّب أٚعل ٘نٖ اٌقٛاهىِ١خ اٌملِبء أٌٛ١بٔ ْٛ١ػبَ 233لجً اٌّ١الك:
ف ٝاٌغلٚي اٌزبٌ ٝ٘ step1 ٝاٌمبئّخ االثزلائ١خ ٌألػلاك اٌّؾظٛهح ثٚ 2 ٓ١اٌؼلك n = 25ثّٕ١ب
ٝ٘ step2اٌمبئّخ ثؼل ؽنف ِؼبػفبد اٌؼلك ٚ ,2روِي step3ئٌ ٝاٌمبئّخ ثؼل ؽنف ِؼبػفبد
اٌؼلك ٚ ,3اف١وا ٝ٘ step4اٌمئّخ ثؼل ؽنف ِؼبػفبد اٌؼلك ٚ 5اٌز ٝرؾز ٜٛػٍ ٝلبئّخ األػلاك
األ١ٌٚخ ٌٍؼلك .25
21
E. M. Badr Introduction انثاب األول :يمذيح
ٓل ػ٠(أوضو كلخ ال ري n ٓل ػ٠ ال ريp ُِٓ صٚ n ل ػٓ اٌؼلك٠ي٠ غت أْ ال٠ p*p ْا
ALGORITHM Sieve(n)
//Implements the sieve of Eratosthenes
//Input: A positive integer n > 1
//Output: Array L of all prime numbers less than or equal to n
for p ← 2 to n do A[p]← p
for p ← 2 to n do //see note before pseudocode
if A[p] 0 //p hasn’t been eliminated on
previous passes
j←p∗p
while j ≤ n do
A[j ] ← 0 //mark element as eliminated
j←j+p
//copy the remaining elements of A to array L of the primes
i←0
for p ← 2 to n do
if A[p] 0
L[i] ← A[p]
i←i+1
return L
middle ٍطخٛخ اٌّلهٍخ اٌّز١ِاهىٛ كافً فSieve خ١ِاهىٛغ اٍزقلاَ ف١االْ َٔزطٚ
خ اٌّلهٍخ١ِاهىٛك ٌقٛؼب وزبثخ و٠غ ا١َٔزطٚ ٖػؾٕبٖ أػالٚ أٞع اٌنّٛؼ اٌغ١ػٛ ٌزschool
.m, n ٓ٠ ٌٍؼلكٍٝ اٌؼبًِ اٌّشزون األػٍٝؾظً ػ٠ ٞ اٌنmiddle school ٍطخٛاٌّز
ٖ ٍوػخ ٘نٝ٘ ؾخ١بد اٌظؾ١ِاهىٛٓ اٌق١اًِ اٌّفبػٍخ ثٛي ػٚي أْ أٛفالطخ اٌمٚ
بَٙ ثٛ رمٝبد اٌز١ٍّ ٍؼخ اٌناووح ٌٍؼٝ٘ ًِاٛ ٘نٖ اٌؼٝٔصبٚ ً اٌؾٍٝي ػٛبد ٌٍؾظ١ِاهىٛاٌق
ٖخ ِب وٍّب وبٔذ ٘ن١ِاهىٛٓ ألً ٌق٠ٍؼخ اٌزقيٚ ن١ فىٍّب وبْ ىِٓ اٌزٕف, بد١ِاهىٛاٌق
ٍؼخٚ ن١خ ِٓ ىِٓ اٌزٕف١ّ٘ ألً أٜاًِ أفوٛؼب ػ٠عل اٛ٠ . و٘ب١ خ أفؼً ِٓ غ١ِاهىٛاٌق
. اٌـ... ,خ١ِاهىٛػ اٌقٛػٚٚ ثَبؽخ, خ١ِاهىٌٛخ اٌقٍٛٙ ٝ٘ٚ ٓ٠اٌزقي
23
E. M. Badr Introduction انثاب األول :يمذيح
اٌّضبي اٌزبٌٛ٠ ٝػؼ أ٠ؼب اٌّفبػٍخ ث ٓ١فٛاهىِ١خ اٌزور١ت ثبإلكفبي insertion sort
ٚث ٓ١فٛاهىِ١خ اٌزور١ت ثبٌلِظ ِٓ merge sortؽ١ش ىِٓ اٌزٕف١ن.
يثال : 9
2
ٔغل أْ فٛاهىِ١خ رور١ت اإلكفبي insertion sortرأفن ىِٕب لّ١زٗ c1nف ٟرور١ت ِٓ n
اٌّفوكاد ؽ١ش أْ c1صبثذ ال ٠ؼزّل ػٍ . n ٝأِب فٛاهىِ١خ اٌلِظ merge sortرأفن ىِٕب
لّ١زٗ ( c2 n log nؽ١ش ٠ log nوِي ئٌ c2 ,)log2 n ٝصبثذ ال ٠ؼزّل ػٍ . n ٝفٛاهىِ١خ
رور١ت اإلكفبي insertion sortرؾز ٜٛػٍ ٝصبثذ ألً ِٓ صبثذ فٛاهىِ١خ merge sortثّؼٕٝ
أْ ٍٛ . c1 < c2ف ٔو ٜأْ اٌؼٛاًِ اٌضبثزخ رّضً ِؼٕ ٝثَ١ؾ علا ف ٟىِٓ اٌزٕف١ن ِمبهٔخ ثبٌّزغ١و
ٚ . nؽ١ش أْ ٠ merge sortؾز ٜٛػٍ ٝػبًِ log nف ٟىِٓ رٕف١نٖ ٚ ,أْ insertion sort
رؾز ٜٛػٍ ٝػبًِ nاٌن ٛ٘ ٞأوجو ِٓ . log nفبٌجوغُ ِٓ أْ insertion sortأٍوع ِٓ
ٌٍّ merge sortلفالد اٌظغ١وح فمؾ ( )only small inputفؼٕلِب رى ْٛاٌّلفالد وج١وح
ثمله وبف فاْ merge sortرى ْٛأٍوع ِٓ .insertion sortثغغ إٌظو أْ c1 < c2فاْ
٠ merge sortى ٛ٘ ْٛاألفؼً.
اٌّضبي اٌزبٌٛ٠ ٝػؼ اٌفوق ثٚ hardware , software ٓ١أّٙ٠ب أفؼً ِٚإصو ف ٝؽً
َِأٌخ ِب.
يثال : 11
ثفوع أْ ٌلٕ٠ب عٙبى ِٓ ٓ٠اٌؾبٍت ا ٌٝ٢األٚي ٘ٚ computer A ٛاٌضبٔcomputer B ٝ
ِٛاطفبد اٌغٙبى األٚي ٕ٠ computer Aفن 139رؼٍّ١خ ف ٝاٌضبٔ١خ اٌٛاؽلح ٠ٚم َٛثزٕم١ن
فٛاهىِ١خ اٌفوى اإلكفبٌٌّ inserting sort ٝظفٛفخ طف arrayرزى ْٛ١ٍِ ِٓ ْٛػلك
ٚاٌجؤبِظ اٌَّزقلَ ف٘ ٝنٖ اٌقٛاهىِ١خ ِىزٛة ثٍغخ ا٠ٚ ٌٗ٢زطٍت ِٓ 2n2اٌزؼٍّ١بد ٌزور١ت n
ِٓ األػلاك .أِب ِٛاطفبد اٌغٙبى اٌضبٕٔ٠ computer B ٝفن 137رؼٍّ١خ ف ٝاٌضبٔ١خ اٌٛاؽلح
٠ٚم َٛثزٕم١ن فٛاهىِ١خ اٌفوى اٌلِغٌّ merge sort ٝظفٛفخ طف arrayرزىْٛ١ٍِ ِٓ ْٛ
ػلك ٚاٌجؤبِظ اٌَّزقلَ ف٘ ٝنٖ اٌقٛاهىِ١خ ِىزٛة ثٍغخ ػبٌ١خ اٌَّز٠ٚ ٜٛزطٍت 50 n log n
24
E. M. Badr Introduction انثاب األول :يمذيح
ِٓ اٌزؼٍّ١بد ٌزور١ت ِٓ nاألػلاكٌ .زور١ت ٍِ ْٛ١ػلك ,اٌغٙبى األٚي computer A
َ١٠زغوق ِٓ اٌٛلذ 2333صبٔ١خ
2(106 )2 instuctions
2000sec onds
109 instructions / sec ond
ثّٕ١ب اٌغٙبى اٌضبَٔ١٠ computer B ٝزغوق ِٓ اٌٛلذ 133صبٔ١خ
50(106 lg106 )instuctions
100sec onds
107 instructions / sec ond
ِٓٚصُ ٠الؽع أْ اٌقٛاهىِ١خ اٌزٌٙ ٝب ىِٓ رٕف١ن ألً – ٔ ٌٛٚفند ػٍِ ٝزوعُ ثطٝء -رىْٛ
أٍوع ِ 23وح ِٓ اٌقٛاهىِ١خ اٌزٌٙ ٝب ىِٓ رٕف١ن أوجو – ٔ ٌٛٚفند ػٍِ ٝزوعُ أٍوع!-
ٚاٌقالطخ.
طؤال يطزح َفظه :ثفوع أْ اٌؾبٍجبد ٌٙب ٍوػخ غ١و ِؾلٚكح ٚماووح فبٌ١خٕ٘ ً٘ .بن ٍجت
ٌلهاٍخ اٌقٛاهىِ١بد ؟
ٚاإلعبثخ ثبٌزأو١ل رىٔ ْٛؼُ ,ألٔٗ ئْ ٌُ ٠ىٓ ٕ٘بن أٍجبة غ١و إٔٔب ف ٟؽبعخ ئٌِ ٝؼوفخ ِب ئما وبْ
ؽً َِأٌخ ِب ٠زٛلف أَ ال ً٘ٚ .ػٕلِب ٠زٛلف ٔؾظً ػً اٌؾً اٌظؾ١ؼ ٌٍَّأٌخ.
ف ٟاٌؾم١مخ ,اٌؾبٍجبد ّ٠ىٓ أْ رىٍ ْٛو٠ؼخ ٌٚىٓ ال رى٘ ْٛنٖ اٌَوػخ ثال ؽلٚكّ٠ٚ ,ىٓ أْ
رى ْٛاٌناووح هف١ظخ ٌٚىٓ ال رى٘ ْٛنٖ اٌناووح فبهغخ ثبٌّوح ِٓٚ .صُ فاْ وفبءح اٌقٛاهىِ١بد
ٕ٘ب ٌٙب ِؼٕ.ٝ
ٚفالطخ اٌمٛي ٌىٔ ٝؼّٓ اٌؼلاٌخ ف ٝاٌّمبهٔخ ث ٓ١فٛاهىِ١ز٠ ٓ١غت أْ ٕٔفن
اٌقٛاهىِ١ز: ٓ١
-1ػٍٔ ٝفٌ االطلاه ِٓ َٔقخ ٔظبَ اٌزشغٍٛ ً١اء أوبْ ٕ٠ٚلٚى windowsأَ ٌٕ١ىٌ
Linux
-2ػٍٔ ٝفٌ االطلاه ِٓ َٔقخ اٌجؤبِظ ٍٛاء أوبْ C, C++, Java, Matlabأ ٚأٜ
ثؤبِظ أفو.
-3ػٍٔ ٝفٌ ِٛاطفبد عٙبى اٌىّجٛ١رو ِٓ ؽ١ش ٍوػخ اٌّؼبٌظ ٍ ٚ processorؼخ
اٌزقئٚ ٓ٠فٌ ِٛاطفبد RAM
25
E. M. Badr Introduction انثاب األول :يمذيح
رشزًّ َِبئً اٌوٍِٛبد اٌج١بٔ١خ graph theory problemsػٍَِ ٝبئً ٌٙب أّ٘١خ
فبطخ ِضً :
26
E. M. Badr Introduction انثاب األول :يمذيح
َِ أٌخ اٌّّو األطغو ٔ : Short Path Problemو٠ل االٔزمبي ِٓ ِلٕ٠خ ئٌٝ
ِل ٕٝ٠أفو ٜثأطغو َِبه.
ِ : Geometric Applicationsضً ٘نٖ اٌَّبئً رورجؾ ثى١ف١خ رطج١مبد ٕ٘لٍ١خ -5
أشبء أشىبي ٕ٘لٍ١خ ِؼٕ١خ ِضً اٌّضٍضبد ,اٌلٚائو ,اٌّقوٚؽ ,اإلٍطٛأبد ...اٌـ
رطج١مبد ػلك٠خ ٘ٚ : Numerical Applicationsن٘ب إٌٛع ِٓ اٌَّبئً ٠ؾزٜٛ -6
ػٍ ٝػلك ٘بئً ِٓ اٌَّبئً ِضً ؽً ٔظبَ فط ِٓ ٝاٌّؼبكالد ٚئعواء اٌزفبػالد ٚاٌزىبِالد
ٌٍلٚاي اٌّقزٍفخ ٚاٌؼل٠لح ....اٌـ.
َِبئً إٌٙلٍخ اٌٛهاص١خ ٚرؼ 133.333 ٓ١ع ٓ١ف DNA ٟاٌجشو٘ٚ ٜنا ٠زطٍت رظُّ١ -7
فٛاهىِ١خ ٌجؤبِظ ًَٙ٠ف ٗ١اٌجؾش ػٓ ٘نٖ اٌغٕ١بد.
َِبئً اٌجوِغخ اٌقط١خ ِٕٙٚ , Linear Programming Problemب َِأٌخ إٌمً -8
ِٕٙٚ , Transportation Problemب َِبئً األِضٍ١خ ٍٛاء ثبٌؾظٛي ػٍ ٝأوجو لّ١خ أ ٚألً
لّ١خ ٌلاٌخ ِب .
27
E. M. Badr Introduction يمذيح:انثاب األول
Exercises ٍتًاري
1. Do some research on al-Khorezmi (also al-Khwarizmi), the man from
whose name the word “algorithm” is derived. In particular, you should
learn what the origins of the words “algorithm” and “algebra” have in
common.
2. Design an algorithm for computing n for any positive integer n.
Besides assignment and comparison, your algorithm may only use the
four basic arithmetical operations.
3. Design an algorithm to find all the common elements in two sorted lists
of numbers. For example, for the lists 2, 5, 5, 5 and 2, 2, 3, 5, 5, 7, the
output should be 2, 5, 5.What is the maximum number of comparisons
your algorithm makes if the lengths of the two given lists are m and n,
respectively?
4. a. Find gcd(31415, 14142) by applying Euclid’s algorithm.
b. Estimate how many times faster it will be to find gcd(31415, 14142) by
Euclid’s algorithm compared with the algorithm based on checking
consecutive integers from min{m, n} down to gcd(m, n).
5. Prove the equality gcd(m, n) = gcd(n, m mod n) for every pair of
positive integers m and n.
6. What does Euclid’s algorithm do for a pair of integers in which the first
is smaller than the second? What is the maximum number of times this
can happen during the algorithm’s execution on such an input?
7. a. What is the minimum number of divisions made by Euclid’s
algorithm among all inputs 1≤ m, n ≤ 10?
8. What is the maximum number of divisions made by Euclid’s algorithm
among all inputs 1≤ m, n ≤ 10?
28
E. M. Badr Introduction يمذيح:انثاب األول
29
E. M. Badr Introduction يمذيح:انثاب األول
for j ← 0 to n − 1 do
if i j and | A[i] − A[j ] | < dmin
dmin ← | A[i]− A[j ] |
return dmin
30
E. M. Badr Introduction انثاب األول :يمذيح
a. Apply this algorithm to sorting the list 60, 35, 81, 98, 14, 47.
?b. Is this algorithm stable
?c. Is it in-place
17. Design a simple algorithm for the string-matching problem
31