0% found this document useful (0 votes)
97 views32 pages

Design and Analysis of Algorithms تﺎﻴﻣزراﻮﺨﻟا ﻞﻴﻠﺤﺗو ﻢﻴﻤﺼﺗ: · November 2016

This document provides an introduction to algorithms and their analysis. It defines algorithms and flowcharts, and provides examples of algorithm design and flowchart representation. It discusses different types of algorithms like polynomial and exponential algorithms. It also covers algorithm efficiency and applications. The introduction concludes with exercises.

Uploaded by

Lith Lith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views32 pages

Design and Analysis of Algorithms تﺎﻴﻣزراﻮﺨﻟا ﻞﻴﻠﺤﺗو ﻢﻴﻤﺼﺗ: · November 2016

This document provides an introduction to algorithms and their analysis. It defines algorithms and flowcharts, and provides examples of algorithm design and flowchart representation. It discusses different types of algorithms like polynomial and exponential algorithms. It also covers algorithm efficiency and applications. The introduction concludes with exercises.

Uploaded by

Lith Lith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/310768681

Design and Analysis of Algorithms ‫ﺗﺼﻤﻴﻢ وﺗﺤﻠﻴﻞ اﻟﺨﻮارزﻣﻴﺎت‬

Book · November 2016

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:

Meta-heuristic Algorithms View project

Parallel Computing View project

All content following this page was uploaded by El-Sayed Badr on 28 January 2019.

The user has requested enhancement of the downloaded file.


‫‪E. M. Badr‬‬ ‫‪Introduction‬‬
‫المكتبة العربية‬
‫انثاب األول‪ :‬يمذيح‬

‫تصميم و تحليل الخوارزميات‬


‫‪Design and Analysis of Algorithms‬‬

‫تأليف‬
‫دكتور ‪ /‬السيد بدر‬
‫أستاذ علوم الحاسب اآللى م‬
‫كلية الحاسبات والمعلومات‬
‫القاهرة ‪ -‬مصر‬

‫‪1‬‬
E. M. Badr Introduction ‫ يمذيح‬:‫انثاب األول‬

‫انفهزص‬

Introduction ‫ يمذيــــح‬: ‫انثاب األول‬

Introduction ‫ِملِـــــخ‬
Algorithm Definition ‫بد‬١ِ‫اهى‬ٛ‫ف اٌق‬٠‫رؼو‬
Flowchart Definition ْ‫ب‬٠‫ف فوائؾ اٌَو‬٠‫رؼو‬
Examples ‫بد‬١ِ‫اهى‬ٛ‫ُ اٌق‬١ّ‫ رظ‬ٍٝ‫أِضٍخ ػ‬
Preference Factors ‫بد‬١ِ‫اهى‬ٛ‫ٓ اٌق‬١‫اًِ اٌّفبػٍخ ث‬ٛ‫ػ‬
Polynomial Algorithm ‫ك‬ٚ‫وح اٌؾل‬١‫بد وض‬١ِ‫اهى‬ٛ‫اٌق‬
Exponential Algorithm ‫خ‬١ٍ٢‫بد ا‬١ِ‫اهى‬ٛ‫اٌق‬
Important Problem Types ‫بد‬١ِ‫اهى‬ٛ‫اع ٘بِخ ٌٍق‬ٛٔ‫أ‬
Exercises ٓ٠‫رّبه‬

Principles of Algorithm Analysis ‫ أطاطياخ تحهيم انخىارسييح‬: ًَ‫انثاب انثا‬

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 ٓ٠‫رّبه‬

Brute Force Method ‫ طزيمح انمىج انغاشًح‬: ‫انثاب انثانث‬

Selection Sort ‫به‬١‫ت ثبالفز‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬


Bubble Sort ٝ‫ت اٌفمبػ‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬
Linear Search ٝ‫خ اٌجؾش اٌقط‬١ِ‫اهى‬ٛ‫ف‬
String Matching ‫افك ٍٍٍَخ ِٓ األؽوف‬ٛ‫خ ر‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬
Traveling Salesman Problem ‫ي‬ٛ‫خ اٌجبئغ اٌّزغ‬١ِ‫اهى‬ٛ‫ف‬
Knapsack Problem ‫و‬ٙ‫جخ اٌظ‬١‫خ ؽم‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

2
E. M. Badr Introduction ‫ يمذيح‬:‫انثاب األول‬

Divide and Conquer Method ‫ طيطز‬-‫ طزيمح لظى‬: ‫انثاب انزاتغ‬

Merge Sort ُ١َ‫ت ثبٌزم‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬


Quick Sort ‫غ‬٠‫ت اٌَو‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬
Binary Search ٝ‫خ اٌجؾش اٌضٕبئ‬١ِ‫اهى‬ٛ‫ف‬
Strassen's Matrix Multiplication ‫فبد‬ٛ‫خ ػوة اٌّظف‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

Decrease and Conquer ‫ طزيمح لهم وطيطز‬: ‫انثاب انخايض‬

Insertion Sort ‫ت ثبإلكفبي‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬


Depth First Search ‫ال‬ٚ‫خ اٌجؾش ثبٌؼّك أ‬١ِ‫اهى‬ٛ‫ف‬
Breadth First Search ‫ال‬ٚ‫خ اٌجؾش ثبٌؼوع ا‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

Transform and Conquer ‫ طزيمح حىل وطيطز‬: ‫انثاب انظادص‬

Gaussian Elimination ًٚ‫خ اٌؾنف ٌغب‬١ِ‫اهى‬ٛ‫ف‬


Horner's Rule ‫هٔو‬ٛ٘ ‫خ‬١ِ‫اهى‬ٛ‫ف‬
Heap Sort "ً‫ت "اٌز‬١‫خ اٌزور‬١ِ‫اهى‬ٛ‫ف‬
Linear Programming ‫خ‬١‫خ اٌجوِغخ اٌقط‬١ِ‫اهى‬ٛ‫ف‬
Counting Paths in a graph ‫ االشىبي‬ٝ‫خ ؽَبة اٌَّبهاد ف‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

Greedy Algorithms ‫انثاب انظاتغ انطزيمح انشزهح‬

Prim's Algorithm ُ٠‫خ ثو‬١ِ‫اهى‬ٛ‫ف‬


Kruskal's Algorithm ‫ٍىبي‬ٚ‫خ وو‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬
Dijkstra's Algorithm ‫خ كعَزوا‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

Dynamic Programming ‫ طزيمح انثزيجح انذيُاييكيح‬: ٍ‫انثاب انثاي‬

Warshall's algorithm ‫هشبي‬ٚ ‫خ‬١ِ‫اهى‬ٛ‫ف‬


Floyed's Algorithm ‫ل‬٠ٍٛ‫خ ف‬١ِ‫اهى‬ٛ‫ف‬
Knapsack Algorithm ‫و‬ٙ‫جخ اٌظ‬١‫خ ؽم‬١ِ‫اهى‬ٛ‫ف‬
Exercises ٓ٠‫رّبه‬

3
E. M. Badr Introduction ‫ يمذيح‬:‫انثاب األول‬

Parallel Algorithms ‫ انخىارسيياخ انًتىاسيح‬: ‫انثاب انتاطغ‬

Introduction ‫ِملِخ‬
Basic Definitions ‫خ‬١ٍ‫ُ اٍب‬١٘‫ِفب‬
Parallel Computers Classification ‫خ‬٠‫اى‬ٛ‫ف اٌؾبٍجبد اٌّز‬١ٕ‫رظ‬
Parallel Algorithms Design ‫خ‬٠‫اى‬ٛ‫بد اٌّز‬١ِ‫اهى‬ٛ‫ُ اٌق‬١ّ‫رظ‬
Exercises ٓ٠‫رّبه‬

NP-Completness ‫خىارسيياخ‬: ‫انثاب انؼاشز‬

Polynomial Algorithms ‫ك‬ٚ‫وح اٌؾل‬١‫بد وض‬١ِ‫هاى‬ٛ‫ف‬


Exponential Algorithms ‫خ‬١ٍ‫بد اال‬١ِ‫اهى‬ٛ‫اٌق‬
NP-Completness ‫بد‬١ِ‫اهى‬ٛ‫ف‬

Formulas for the algorithms analysis ‫ صيغ يفيذج نتحهيم انخىارسيياخ‬A ‫يهحك‬

Short Tutorial On Recurrence Relations ‫ يهخص نهؼاللاخ انزجؼيح‬B ‫يهحك‬

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‬‬

‫خزائط انتذفك ‪Flow charts‬‬


‫رَزقلَ فوائؾ اٌزلفك ف‪ ٟ‬ث‪١‬بْ فط‪ٛ‬اد ؽً اٌَّأٌخ ‪ٚ‬و‪١‬ف‪١‬خ اهرجبؽ‪ٙ‬ب ثجؼغ ‪ ,‬ثبٍزقلاَ‬
‫هِ‪ٛ‬ى اططالؽ‪١‬خ ٌز‪ٛ‬ػ‪١‬ؼ فط‪ٛ‬اد اٌؾً ‪٘ٚ ,‬نٖ اٌوِ‪ٛ‬ى ِج‪ٕ١‬خ ثبٌشىً ( ‪) 1-2‬‬
‫أهًيح اطتخذاو خزائط انتذفك ‪:‬‬
‫ِٓ أُ٘ ف‪ٛ‬ائل اٍزقلاَ فوائؾ اٌزلفك لجً وزبثخ أ‪ ٞ‬ثؤبِظ ‪ ,‬األِ‪ٛ‬ه ا‪٢‬ر‪١‬خ ‪:‬‬
‫‪ .1‬رؼط‪ ٟ‬ط‪ٛ‬هح ِزىبٍِخ ٌٍقط‪ٛ‬اد اٌّطٍ‪ٛ‬ثخ ٌؾً اٌَّبئً ف‪ ٟ‬م٘ٓ اٌّجوِظ ‪ ,‬ثؾ‪١‬ش رّىٕٗ ِٓ‬
‫اإلؽبؽخ اٌىبٍِخ ثىً أعياء اٌَّأٌخ ِٓ ثلا‪٠‬ز‪ٙ‬ب ‪ٚ‬ؽز‪ٙٔ ٝ‬ب‪٠‬ز‪ٙ‬ب ‪.‬‬
‫‪ .2‬رَبػل اٌّجوِظ ػٍ‪ ٝ‬رشق‪١‬ض األفطبء اٌز‪ ٟ‬رمغ ػبكح ف‪ ٟ‬اٌجواِظ ‪ٚ ,‬ثقبطخ األفطبء‬
‫إٌّطم‪١‬خ ِٕ‪ٙ‬ب ‪ٚ ,‬اٌز‪٠ ٟ‬ؼزّل اوزشبف‪ٙ‬ب ػٍ‪ٚ ٝ‬ػغ اٌزًٍََ إٌّطم‪ٌ ٟ‬قط‪ٛ‬اد ؽً اٌَّأٌخ ٌل‪ٜ‬‬
‫اٌّجوِظ ‪.‬‬

‫‪7‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫‪ . 3‬ر‪َ١‬و ٌٍّجوِظ أِو ئكفبي أ‪ ٞ‬رؼل‪٠‬الد ‪ ,‬ف‪ ٟ‬أ‪ ٞ‬عيء ِٓ أعياء اٌَّأٌخ ‪ ,‬ثَوػخ ‪ٚ‬ك‪ْٚ‬‬
‫اٌؾبعخ إلػبكح كهاٍخ اٌَّأٌخ‪.‬‬
‫‪ . 4‬ف‪ ٟ‬اٌَّبئً اٌز‪ ٟ‬رىضو ف‪ٙ١‬ب االؽزّبالد ‪ٚ‬اٌزفوػبد ‪٠ ,‬ظجؼ أِو ِزبثؼخ كلبئك اٌزًٍََ ‪ ,‬أِوا‬
‫شبلب ػٍ‪ ٝ‬اٌّجوِظ ‪ ,‬ئما ٌُ ‪َ٠‬زؼٓ ثّقطؾ رظ‪ٙ‬و ف‪ ٗ١‬فط‪ٛ‬اد اٌؾً اٌوئ‪١َ١‬خ ثشىً ‪ٚ‬اػؼ ‪.‬‬
‫رؼزجو هٍ‪ َٛ‬فوائؾ اٌزلفك اٌَّزؼٍّخ ف‪ ٟ‬رظّ‪ ُ١‬ؽٍ‪ٛ‬ي ثؼغ اٌَّبئً ‪ِ ,‬وعؼب ‪,‬ف‪ ٟ‬ؽً َِبئً‬
‫أفو‪ِ ٜ‬شبث‪ٙ‬خ ‪ِٚ ,‬فز بؽب ٌؾً َِبئً عل‪٠‬لح ٌ‪ٙ‬ب ػاللخ ِغ اٌَّبئً اٌمل‪ّ٠‬خ اٌّؾٍ‪ٌٛ‬خ ‪ ,‬فزشجٗ هٍ‪َٛ‬‬
‫فوائؾ اٌزلفك ‪ ,‬ثبٌوٍ‪ َٛ‬اٌز‪٠ ٟ‬ؼؼ‪ٙ‬ب اٌّ‪ٕٙ‬لً اٌّؼّبه‪ ٞ‬ػٕل رظّ‪ ّٗ١‬ث‪١‬زب أ‪ ٚ‬ػّبهح ‪ ,‬أ‪َِ ٚ‬غل‬
‫‪...‬اٌـ ‪.‬‬
‫( انزيش) انشكم االصطالحي‬ ‫انزيش‬ ‫يؼًُ‬
‫) ‪(Start \ stop‬‬ ‫ثلا‪٠‬خ أ‪ٙٔ ٚ‬ب‪٠‬خ اٌجؤبِظ‬ ‫(‪) 1‬‬

‫) ‪( Input \ output‬‬ ‫ئكفبي أ‪ ٚ‬ئفواط‬ ‫(‪)2‬‬

‫(‪ )3‬ػٍّ‪١‬بد ؽَبث‪١‬خ أ‪ ٚ‬رقي‪Calculation and store ) ٓ٠‬‬


‫) ‪( Decision‬‬ ‫رمو‪٠‬و‬ ‫(‪)4‬‬
‫) ‪( Looping‬‬ ‫رىواه أ‪ ٚ‬ك‪ٚ‬هاْ‬ ‫(‪) 5‬‬

‫) ‪( Call subroutine‬‬ ‫اٍزلػبء ثؤبِظ فوػ‪ٟ‬‬ ‫(‪)6‬‬

‫) ‪( Flow line‬‬ ‫ارغبٖ ٍ‪١‬و اٌجؤبِظ‬ ‫(‪) 7‬‬

‫) ‪(Connector‬‬ ‫ٔمطخ ر‪ٛ‬ط‪ٚ ً١‬هثؾ‬ ‫(‪) 8‬‬

‫) ‪( Comment‬‬ ‫رؼٍ‪١‬ك ‪ٚ‬ئ‪٠‬ؼبػ‬ ‫(‪) 9‬‬

‫شكم ‪ :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‬‬

‫‪ّ٠‬ىٕٕب ئػبكح اٌق‪ٛ‬اهىِ‪١‬خ اٌَبثمخ ثبٍزقلاَ اٌؾٍمخ اٌزىواه‪٠‬خ ‪ for‬وبٌزبٌ‪:ٝ‬‬


‫) ‪Algorithm ( print the numbers from 1 to 10‬‬
‫‪Input : /‬‬
‫‪Output: 1 2 3 4 ….. 10‬‬
‫‪Strat‬‬
‫‪for i = 1 to 10‬‬
‫‪Print i‬‬
‫‪end‬‬
‫‪End‬‬

‫فكزج انؼذاد ‪counter‬‬


‫ف‪ ٟ‬ؽبٌخ اٌوغجخ ف‪ ٟ‬رىواه رؼٍ‪١ّ١‬خ ‪ٚ‬اؽلح أ‪ِ ٚ‬غّ‪ٛ‬ػخ ِٓ اٌزؼٍ‪ّ١‬بد فبٔٗ ‪ٍ٠‬يَ ثٕبء ػلاك ‪٠‬م‪َٛ‬‬
‫ثزىواه رٍه اٌزؼٍ‪ّ١‬خ ػلك اٌّواد اٌّطٍ‪ٛ‬ثخ ‪.‬‬
‫‪ٚ‬رىّٓ فىوح اٌؼلاك ف‪: ٟ‬‬
‫تحذيذ تذايح انؼذاد‪:‬‬ ‫‪‬‬
‫ػٓ ؽو‪٠‬ك رؾل‪٠‬ل ِزغ‪١‬و هلّ‪ٚ ٟ‬رقي‪ ٓ٠‬ل‪ّ١‬خ اثزلائ‪١‬خ ثٗ رّضً ثلا‪٠‬خ اٌؼلاك ‪ٌٚ‬زىٓ ‪ 1‬أ‪ 5 ٚ‬أ‪ ٚ‬أ‪ٞ‬‬
‫‪.I = 0‬‬ ‫أ‪ٚ‬‬ ‫‪ n = 5‬أ‪x = 1 ٚ‬‬ ‫ل‪ّ١‬خ اثزلائ‪١‬خ ِضً‬
‫كتاتح يجًىػح انتؼهيًاخ انًطهىتح تكزارها‬ ‫‪‬‬
‫‪٠‬زُ وزبثخ اٌزؼٍ‪ّ١‬خ أ‪ِ ٚ‬غّ‪ٛ‬ػخ اٌزؼٍ‪ّ١‬بد اٌز‪ٔ ٟ‬و‪٠‬ل رىواه٘ب‬

‫‪10‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫سيادج انؼذاد تًمذار (‪: )1‬‬ ‫‪‬‬


‫‪٠‬زُ مٌه ثىزبثخ عٍّخ ِضً ‪ x = x +1‬أ‪ٚ n = n + 1 ٚ‬ػٍ‪ٕ١‬ب أْ ٔالؽع أْ اٌزىواه ٕ٘ب ‪٠‬زُ ثّملاه‬
‫(‪ )1‬ف‪ ٝ‬وً فط‪ٛ‬ح‪.‬‬
‫انظؤال ػٍ َهايح انؼذاد ‪:‬‬ ‫‪‬‬
‫‪٠ٚ‬زُ مٌه غبٌجبً ثبٍزقلاَ عٍّخ االٍزف‪ٙ‬بَ ‪ if‬ؽ‪١‬ش ‪٠‬زُ اٌَإاي ػٓ اٌ‪ٛ‬ط‪ٛ‬ي ئٌ‪ ٝ‬اٌولُ اٌن‪ّ٠ ٞ‬ضً‬
‫ٔ‪ٙ‬ب‪٠‬خ اٌؼلاك ‪ِ ,‬ضً ً٘ ? ‪x <= 10‬‬
‫‪ٔ-‬ؼُ ‪ :‬ام٘ت ٌٍقط‪ٛ‬ح اٌز‪ ٟ‬ث‪ٙ‬ب ثلا‪٠‬خ ِغّ‪ٛ‬ػخ اٌزؼٍ‪ّ١‬بد اٌّطٍ‪ٛ‬ة رىواه٘ب‬
‫‪ -‬ال ‪ :‬ام٘ت ٌٍقط‪ٛ‬ح اٌز‪ ٟ‬رٍ‪ ٟ‬اٌَإاي ( ِّب ‪٠‬ؼٕ‪ٙٔ ٟ‬ب‪٠‬خ اٌزىواه) ‪.‬‬

‫يثال ‪ : 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‬‬

‫▀ حاول تُفظك كتاتح انخىارسييح انظاتمح تاطتخذاو انحهمح انتكزاريح ‪for‬‬

‫‪11‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫فكزج انحصانح ‪Money Box‬‬

‫اٌؾظبٌخ ٘‪ِ ٟ‬قيْ هلّ‪ ٟ‬رجلأ ل‪ّ١‬زٗ االثزلائ‪١‬خ ثبٌم‪ّ١‬خ طفو (فبهغخ) ‪٠ٚ ,‬زُ ف‪ ٗ١‬رغّ‪١‬غ ِغّ‪ٛ‬ػخ‬
‫ِٓ اٌم‪ ُ١‬اٌولّ‪١‬خ ثشىً رواوّ‪ٚ ٟ‬ف‪ٙٔ ٟ‬ب‪٠‬خ اٌزغّ‪١‬غ ‪٠‬زُ ؽجبػخ ل‪ّ١‬خ ٘نا اٌّقيْ ٌ‪١‬ؼط‪ ٟ‬اٌم‪ّ١‬خ‬
‫اإلعّبٌ‪١‬خ ٌّب رُ رغّ‪١‬ؼٗ ‪٠ٚ ,‬زُ مٌه ِٓ فالي ِغّ‪ٛ‬ػخ ِٓ اٌقط‪ٛ‬اد وّب ‪: ٍٟ٠‬‬
‫تحذيذ ليًح اتتذائيح نهحصانح‪:‬‬ ‫‪‬‬
‫ػٓ ؽو‪٠‬ك رؾل‪٠‬ل ِقيْ هلّ‪ ٟ‬ل‪ّ١‬زٗ االثزلائ‪١‬خ = طفو ‪١ٌٚ‬ىٓ ‪S = 0‬‬
‫إضافح انزلى انًطهىب تجًيؼه نهحصانح ‪:‬‬ ‫‪‬‬
‫اٌولُ ‪S = S +‬‬
‫طثاػح ليًح انحصانح في َهايح انتجًيغ ‪:‬‬ ‫‪‬‬
‫اؽجغ ‪S‬‬
‫‪١ٍٚ‬زُ ر‪ٛ‬ػ‪١‬ؼ ٘نٖ اٌفىوح ِٓ فالي اٌّضبي اٌزبٌ‪: ٟ‬‬

‫يثال ‪ :6‬اوزت اٌق‪ٛ‬اه ىَ اٌقبص ثؾَبة ِغّ‪ٛ‬ع األػلاك ِٓ ‪ 1‬ئٌ‪ 13 ٝ‬؟‬


‫انحم ‪ٚ :‬اٌ‪١‬ه ا‪ٚ‬ي ف‪ٛ‬اهىِ‪١‬خ ِؼوثخ ‪,‬اٌ‪ٙ‬لف ِٕ‪ٙ‬ب و‪١‬ف‪١‬خ اٌزله‪٠‬ت ػٍ‪ ٝ‬رؼو‪٠‬ت اٌق‪ٛ‬اهىِ‪١‬بد‪:‬‬
‫خىارسييح حظاب يجًىع األػذاد يٍ ‪ 1‬إنً ‪:11‬‬
‫‪.1‬اٌجلا‪٠‬خ‬
‫‪-2‬اعؼً ‪x =1‬‬
‫‪-3‬اعؼً ‪s = 0‬‬
‫‪-4‬أػف اٌولُ ئٌ‪ ٝ‬اٌؾظبٌخ ‪S=S+X‬‬
‫‪-5‬ىك ‪ x‬ثّملاه ‪ 1‬أ‪ ٜ‬أْ‪) x = x + 1 ( :‬‬
‫‪x < =10 ? ً٘-6‬‬
‫‪ٔ -‬ؼُ ‪ :‬ام٘ت ٌٍقط‪ٛ‬ح ‪4‬‬
‫‪ -‬ال ‪ :‬ام٘ت ٌٍقط‪ٛ‬ح ‪7‬‬
‫‪-7‬اؽجغ ل‪ّ١‬خ اٌؾظبٌخ ‪S‬‬
‫‪ .8‬إٌ‪ٙ‬ب‪٠‬خ‬

‫‪12‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫‪ّ٠ٚ‬ىٓ اٌزؼج‪١‬و ػٓ اٌق‪ٛ‬اهىَ اٌَبثك وبٌزبٌ‪: ٝ‬‬


‫) ‪Algorithm ( computing the sum of the numbers from 1 to 10‬‬
‫‪Input: /‬‬
‫‪Output: s‬‬
‫‪1- Start‬‬
‫‪2-‬‬ ‫‪Assign x = 1 and s = 0‬‬
‫‪3-‬‬ ‫‪Compute s = s + x‬‬
‫‪4-‬‬ ‫) ‪Increase x by one ( x = x + 1‬‬
‫‪5-‬‬ ‫‪If x < = 10‬‬
‫‪a-Yes: go to 3‬‬
‫‪b- No: go to 6‬‬
‫‪6-‬‬ ‫‪Print s‬‬
‫‪7-End‬‬

‫يثال ‪: 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‬‬

‫انخىارسيياخ كثيزج انحذود ‪Polynomial Algorithms‬‬

‫ِوح أفو‪ٌٍ ٞ‬زنوو ‪ ,‬رؼوف اٌق‪ٛ‬اهىِ‪١‬خ ػٍ‪ ٝ‬أٔ‪ٙ‬ب أ‪ ٜ‬ئعواء ؽَبث‪ٚ ٝ‬اػؼ اٌّؼبٌُ‬
‫‪ٚ‬اٌز‪ ٝ‬رأفن ثؼغ اٌم‪ ( ُ١‬رَّ‪ِ ٝ‬لفالد ‪ٚ ) input‬ثؼل ئعواء ثؼغ ػٍّ‪١‬بد‬
‫اٌّؼبٌغخ ‪, processing‬رٕزظ اٌق‪ٛ‬اهىِ‪١‬خ ثؼغ اٌم‪ ( ُ١‬رَّ‪ِ ٝ‬قوعبد ‪ ِٓٚ .)output‬صُ رؼزجو‬

‫‪14‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫اٌق‪ٛ‬اهىِ‪١‬خ ِغّ‪ٛ‬ػخ ِٓ اٌقط‪ٛ‬اد اٌؾَبث‪١‬خ اٌّززبثؼخ اٌز‪ ٝ‬رؾ‪ٛ‬ي اٌّلفالد ‪ input‬ئٌ‪ٝ‬‬


‫ِقوعبد ‪. output‬‬
‫‪َٔٚ‬زط‪١‬غ أْ ٕٔظو ئٌ‪ ٝ‬اٌق‪ٛ‬اهىِ‪١‬خ ػٍ‪ ٝ‬أٔ‪ٙ‬ب أكاح ِؾلكح ثشىً ع‪١‬ل ٌؾً َِأٌخ ؽَبث‪١‬خ‪ٚ ,‬وٍّخ‬
‫َِأٌخ رؼٕ‪ ٝ‬أْ ٕ٘بن ِلفالد ‪ٚ‬اٌّقوعبد اٌّطٍ‪ٛ‬ثخ‪ .‬اٌق‪ٛ‬اهىِ‪١‬خ رظف اإلعواء اٌؾَبث‪ٝ‬‬
‫ٌزؾم‪١‬ك اٌؼاللخ ث‪ ٓ١‬اٌّلفالد ‪ٚ‬اٌّقوعبد‪.‬‬
‫تؼزيف ‪ :‬خىارسييح كثيزج انحذود ‪Polynomial Algorithms‬‬
‫‪٠‬مبي أْ ف‪ٛ‬اهىِ‪١‬خ ِب وض‪١‬وح ؽل‪ٚ‬ك ف‪ ٝ‬اٌيِٓ ‪ Polynomial time Algorithm‬ئما‬
‫وبْ اٌؾل اٌؼٍ‪ٌ ٞٛ‬يِٓ رٕف‪١‬ن٘ب َٔزط‪١‬غ اٌزؼج‪١‬و ػٕٗ ثىض‪١‬وح ؽل‪ٚ‬ك ف‪ ٝ‬ؽغُ اٌّلفالد ‪ ,n‬ثّؼٕ‪ٝ‬‬
‫‪ّ٠‬ىٓ اٌزؼج‪١‬و ػٕٗ ثبٌؼاللخ ) ‪( T( n ) = O ( nk‬كاٌخ وض‪١‬وح ؽل‪ٚ‬ك ‪ ) nk‬ؽ‪١‬ش أْ ‪ k‬صبثذ ‪ n ,‬ؽغُ‬
‫اٌّلفالد‪.‬‬
‫تؼزيف‪ :‬انخىارسييح اآلطيح ‪Exponential Algorithm‬‬
‫‪٠‬مبي أْ ف‪ٛ‬اهىِ‪١‬خ ِب وض‪١‬وح ؽل‪ٚ‬ك ف‪ ٝ‬اٌيِٓ ‪ Exponential time Algorithm‬ئما‬
‫وبْ اٌؾل اٌؼٍ‪ٌ ٞٛ‬يِٓ رٕف‪١‬ن٘ب َٔزط‪١‬غ اٌزؼج‪١‬و ػٕٗ ثلاٌخ آٍ‪١‬خ ف‪ ٝ‬ؽغُ اٌّلفالد ‪ , n‬ثّؼٕ‪ٝ‬‬
‫‪nk‬‬ ‫‪nk‬‬
‫) ؽ‪١‬ش أْ ‪ k‬صبثذ ‪ n ,‬ؽغُ‬ ‫‪2‬‬ ‫‪( T( n ) = O ( 2‬كاٌخ آٍ‪١‬خ‬ ‫‪ّ٠‬ىٓ اٌزؼج‪١‬و ػٕٗ ثبٌؼاللخ )‬
‫اٌّلفالد‪.‬‬
‫‪k‬‬
‫يهحىظح ‪ٍٛ :‬ف ‪٠‬زُ ر‪ٛ‬ػ‪١‬ؼ ‪ٚ‬شوػ فىوح اٌزؼج‪١‬و ) ‪ T( n ) = O ( n‬ف‪ ٝ‬اٌجبة اٌمبكَ ئْ شبء هللا‬
‫ثبٌزفظ‪.ً١‬‬
‫واآلٌ يا انفزق تيٍ انخىارسييح اآلطيح ‪ exponential algorithm‬وانخىارسييح كثيزج‬
‫انحذود‪ polynomial algorithm‬؟‬

‫اٌّضبي اٌزبٌ‪ٛ٠ ٝ‬ػؼ اٌفوق ث‪ ٓ١‬ف‪ٛ‬اهىِ‪١‬خ آٍ‪١‬خ ‪ٚ‬ف‪ٛ‬اهىِ‪١‬خ وض‪١‬وح اٌؾل‪ٚ‬ك ِٓ ؽ‪١‬ش اٌيِٓ‬
‫اٌّطٍ‪ٛ‬ة ٌزٕف‪١‬ن وً ِٕ‪ّٙ‬ب ‪:‬‬
‫يثال ‪ٚ : 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‬أْ ى‪٠‬بكح ػلك االشوؽخ‬
‫ري‪٠‬ل ثّؼلي غ‪١‬و صبثذ ‪.‬‬
‫ػٍّٕب أٔٗ ػٕلِب ‪ ّٕٛ٠‬ىِٓ رٕف‪١‬ن كاٌخ ِب ّٔ‪ ٛ‬أٍ‪ ٟ‬ف‪ٙ‬نا ‪٠‬إك‪ ٞ‬ئٌ‪ ٟ‬أْ ٘نٖ اٌق‪ٛ‬اهىِ‪١‬خ‬
‫ٌ‪َ١‬ذ طبٌؾخ ٌالٍزقلاَ اٌؼٍّ‪ ٟ‬ف‪ ٟ‬اٌؾ‪١‬بح ِغ و‪ٙٔٛ‬ب ف‪ٛ‬اهىِ‪١‬خ طؾ‪١‬ؾخ ‪ٌٚ‬ىٓ رؼط‪ ٟ‬إٌزبئظ ثؼل‬
‫ىِٓ وج‪١‬و ِٓ اٌ‪ٛ‬لذ ثبٍزقلاَ اٌؾبٍت ا‪.ٌٟ٢‬‬

‫ػىايم انًفاضهح تيٍ انخىارسيياخ انتً تمىو تحم َفض انًظأنح‬

‫ثفوع أْ ٌل‪ٕ٠‬ب أوضو ِٓ ف‪ٛ‬اهىِ‪١‬خ طؾ‪١‬ؾخ رم‪ َٛ‬ثبٌؾظ‪ٛ‬ي ػٍ‪ٔ ٝ‬فٌ إٌبرظ اٌّطٍ‪ٛ‬ة ٌؾً‬
‫َِأٌخ ِب ‪ ,‬فبٌَإاي اٌّطو‪ٚ‬ػ أ‪ ِٓ ٜ‬رٍه اٌق‪ٛ‬اهىِ‪١‬بد رى‪ ْٛ‬األفؼً ؟‬

‫ٌإلعبثخ ػٍ‪٘ ٝ‬نا اٌَإاي ‪٠‬غت أْ َٔزؼوع ثؼغ اٌزؼبه‪٠‬ف اٌقبطخ ثّ‪ٛ‬ػ‪ٛ‬ع اٌّفبػٍخ ث‪ٓ١‬‬
‫اٌق‪ٛ‬اهىِ‪١‬بد‪.‬‬

‫تؼزيف ‪ :‬انخىارسييح انصحيحح ‪correct algorithms‬‬


‫‪٠‬مبي أْ ف‪ٛ‬اهىِ‪١‬خ ِب طؾ‪١‬ؾخ ‪ - correct‬أل‪ِ ٞ‬لفالد‪ ٌٛ -‬ر‪ٛ‬لفذ ٘نٖ اٌق‪ٛ‬اهىِ‪١‬خ‬
‫ثبٌّقوعبد اٌّطٍ‪ٛ‬ثخ‪ٚ ,‬ف‪٘ ٝ‬نٖ اٌؾبٌخ ٔم‪ٛ‬ي أْ اٌق‪ٛ‬اهىِ‪١‬خ اٌظؾ‪١‬ؾخ رؾً اٌَّأٌخ اٌّؼطبح‪ .‬ث‪ّٕ١‬ب‬
‫اٌق‪ٛ‬اهىِ‪١‬خ اٌغ‪١‬و طؾ‪١‬ؾخ ٘‪ ٟ‬اٌز‪ ٟ‬ال رز‪ٛ‬لف ػٕل ثؼغ اٌّلفالد أ‪ ٚ‬رز‪ٛ‬لف ػٕل ٔز‪١‬غخ غ‪١‬و‬
‫طؾ‪١‬ؾخ ( ِقوعبد فطأ)‪.‬‬
‫كفاءج انخىارسيياخ ‪Algorithms efficiency‬‬
‫غبٌجب رقزٍف اٌق‪ٛ‬اهىِ‪١‬بد اٌّجزىوح ٌؾً ٔفٌ اٌَّأٌخ ثشىً ِض‪١‬و ف‪ ٟ‬وفبءر‪٘ .ُٙ‬نا االفزالف ٌٗ‬
‫ِؼٕ‪ ٝ‬وج‪١‬و علا أوجو ِٓ االفزالف ث‪ .software ٚ , hardware ٓ١‬ف‪٘ ٝ‬نا اٌمَُ ٍ‪ٛ‬ف ٔملَ‬
‫ف‪ٛ‬اهىِ‪١‬بد ِزؼلكح ٌؾً ٔفٌ اٌَّأٌخ ‪ ٝ٘ٚ‬ئ‪٠‬غبك اٌؼبًِ اٌّشزون األػٍ‪ٌ ٝ‬ؼلك‪ ٓ٠‬طؾ‪١‬ؾ‪.ٓ١١‬‬
‫هثّب ‪ٛ٠‬عل ف‪ٛ‬اهىِ‪١‬بد ِزؼلكح ٌؾً ٔفٌ اٌَّأٌخ ‪ ,‬ثبإلػبفخ ئٌ‪ ٝ‬أْ اٌق‪ٛ‬اهىِ‪١‬بد‬
‫ٌٕفٌ اٌَّأٌخ رؼزّل ػٍ‪ ٝ‬أفىبه ِقزٍفخ ‪ّ٠ٚ‬ىٓ ؽً ٘نٖ اٌَّأٌخ ثىفبءاد ( ٍوػبد ) ِقزٍفخ رّبِب‬
‫ِؼزّلح ػٍ‪ٛٔ ٝ‬ع اٌق‪ٛ‬اهىِ‪١‬خ اٌَّزقلِخ ف‪ ٝ‬اٌؾً‪ٚ .‬ئٌ‪١‬ه ٘نٖ اٌَّأٌخ ( ا‪٠‬غبك اٌؼبًِ اٌّشزون‬
‫األػٍ‪ٌ ٝ‬ؼلك‪ ٓ٠‬طؾ‪١‬ؾ‪ٚ ٓ١‬غ‪١‬و ٍبٌج‪ٚ ٓ١‬ال ‪َ٠‬ب‪٠ٚ‬بْ اٌظفو ِؼب) اٌز‪ّ٠ ٝ‬ىٓ ؽٍ‪ٙ‬ب ثأوضو ِٓ‬
‫ف‪ٛ‬اهىِ‪١‬خ‪:‬‬
‫‪17‬‬
E. M. Badr Introduction ‫ يمذيح‬:‫انثاب األول‬

m , n ٓ١‫ؾ‬١‫ٓ طؾ‬٠‫ ٌؼلك‬greatest common divisor ٍٝ‫ٔزنوو ِؼب أْ اٌؼبًِ اٌّشزون األػ‬
m, n ٓ٠‫مَُ اٌؼلك‬٠ ‫ؼ‬١‫ اوجو ػلك طؾ‬ٛ٘ ٗٔ‫ أ‬ٍٝ‫ؼوف ػ‬٠ gcd(m,n) ‫وِي ٌٗ ثبٌوِي‬٠ ٞ‫اٌن‬ٚ
ْ‫ اٌمو‬ٝ‫ ف‬. 12 ‫ اٌؼلك‬ٛ٘ 60, 12 ٓ٠‫ ٌٍؼلك‬ٍٝ‫ً اٌّضبي اٌؼبًِ اٌّشزون اٌؼ‬١‫ ٍج‬ٍٝ‫ فؼ‬,ٝ‫ْ ثبل‬ٚ‫ك‬
‫ب‬ٙ١ٍ‫طٍك ػ‬٠ ‫ضب‬٠‫ؽل‬ٚ .‫خ ٌؾً ٘نٖ اٌَّأٌخ‬١ِ‫اهى‬ٛ‫ ف‬Euclid of Alexandria ‫الك وزت‬١ٌّ‫اٌضبٌش لجً ا‬

:‫خ‬١ٌ‫خ اٌزب‬٠ٚ‫خ اٌّزَب‬٠‫ رىواه‬ٍٝ‫ب ػ‬ٙ‫م‬١‫ؼزّل رطج‬٠ ٝ‫اٌز‬ٚ ً‫ل‬١ٍ‫خ ئل‬١ِ‫اهى‬ٛ‫ف‬


gcd(m,n) = gcd(n,m mod n)
m ٝ‫خ ؽز‬٠ٚ‫ٔىوه ٘نٖ اٌّزَب‬ٚ , n ‫ اٌؼلك‬ٍٝ‫ ػ‬m ‫ لَّخ اٌؼلك‬ٝ‫ ثبل‬ٛ٘ m mod n ْ‫ش أ‬١‫ؽ‬
ِٓ ‫ ثؼل ػلك‬m ‫وح ٌٍؼلك‬١‫ّخ االف‬١‫ ئما اٌم‬, gcd(m,0) = m ْ‫ ثّب أ‬.‫ طفوا‬ٜٚ‫َب‬٠ mod n
.m,n ٓ٠‫ ٌٍؼلك‬ٍٝ‫ اٌؼبًِ اٌّشزون اٌؼ‬ٝ٘ ‫اٌزىواهاد‬
‫ ؟‬60, 40 ٓ٠‫ ٌٍؼلك‬ٍٝ‫عل اٌؼبًِ اٌّشزون األػ‬ٚ‫ أ‬:‫يثال‬
: ْ‫ك اٌمبػلٖ أػالٖ ٔغل أ‬١‫ثزطج‬
gcd(60, 24) = gcd(24, 12) = gcd(12,0) = 12
.12 ‫ اٌؼلك‬ٛ٘ 60, 40 ٓ٠‫ ٌٍؼلك‬ٍٝ‫ِٓ صُ ٔغل اْ اٌؼبًِ اٌّشزون اٌؼ‬ٚ
: ‫خ‬١ٌ‫خ اٌزب‬١‫طف‬ٌٛ‫مخ ا‬٠‫خ ثبٌطو‬١ِ‫اهى‬ٛ‫و ػٓ ٘نٖ اٌق‬١‫ّىٕٕب اٌزؼج‬٠ ْ‫اال‬ٚ
Euclid’s algorithm for computing gcd(m, n)
Step 1
If n = 0, return the value of m as the answer and stop; otherwise,
proceed to Step 2
Step 2 Divide m by n and assign the value of the remainder to r.
Step 3 Assign the value of n to m and the value of r to n. Go to Step 1.

: ٌٝ‫ اٌزب‬pseudo code ‫ك اٌيائف‬ٛ‫خ ثبٌى‬١ِ‫اهى‬ٛ‫و ػٓ ٘نٖ اٌق‬١‫ّىٕٕب اٌزؼج‬٠ ‫ؼب‬٠‫ا‬ٚ

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‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫‪//Output: Greatest common divisor of m and n‬‬


‫‪while n  0 do‬‬
‫‪r ← m mod n‬‬
‫‪m←n‬‬
‫‪n←r‬‬
‫‪return m‬‬

‫‪٠‬الؽع ِٓ اٌق‪ٛ‬اهىِ‪١‬خ اٌَبثمخ أْ اٌؼلك اٌضبٔ‪٠ 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‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫يثال ‪ :‬أ‪ٚ‬عل اٌؼبًِ اٌّشزون اٌؼٍ‪ٌٍ ٝ‬ؼلك‪60, 24 ٓ٠‬؟‬


‫ثبٌَٕجخ ٌٍؼلكاْ ‪ 60,24‬اٌق‪ٛ‬اهىِ‪١‬خ اٌَبثمخ ٍ‪ٛ‬ف رؼط‪ t = 24 ٝ‬فال ‪٠‬زؾمك اٌشوؽ فزم‪ َٛ‬ثبٌزمٍ‪ً١‬‬
‫ثّملاه اٌ‪ٛ‬اؽل اٌظؾ‪١‬ؼ‪ t = 23‬صُ رقزجو فال ‪٠‬زؾك فزم‪ َٛ‬ثبٌزمٍ‪ِ ً١‬وح افو‪ ٜ‬ئٌ‪٘ٚ 22 ٝ‬ىنا ئٌ‪ٝ‬‬
‫أْ رظً ل‪ّ١‬خ ‪ t = 12‬ف‪١‬ى‪ ْٛ‬إٌبرظ ( اٌؼبًِ اٌّشزون اٌؼٍ‪ ٛ٘ 9 ٝ‬اٌؼلك ‪.12‬‬
‫‪٠‬غت ِالؽظخ اْ ف‪ٛ‬اهىِ‪١‬خ ئلٍ‪١‬لً ال رؼًّ ثشىً طؾ‪١‬ؼ ػٕلِب رى‪ ْٛ‬ل‪ّ١‬خ أؽل اٌؼلك‪( ٓ٠‬‬
‫اٌّلفالد) رَب‪ ٜٚ‬طفوا ‪٘ٚ‬نٖ اٌّالؽظخ رإول ‪ٚ‬رشلك ػٍ‪ ٝ‬أْ ‪٠‬غت رؼ‪ٚ ٓ١‬رؾل‪٠‬ل ِلفالد‬
‫اٌَّأٌخ ثظواؽخ ‪ٚ‬كلخ ػبٌ‪١‬خ‪.‬‬
‫‪ٚ‬االْ ‪ّ٠‬ىٕٕب ػوع اٌق‪ٛ‬اهىِ‪١‬خ اٌضبٌضخ إل‪٠‬غلا اٌؼبًِ اٌّشزون األػٍ‪ٌ ٝ‬ؼلك‪ ٓ٠‬طؾ‪١‬ؾ‪ٚ ٓ١١‬اٌز‪ٝ‬‬
‫كهٍٕب٘ب ف‪ ٝ‬اٌّوؽٍخ اٌّز‪ٍٛ‬طخ ‪:‬‬
‫)‪Middle-school procedure for computing gcd(m, n‬‬
‫‪Step 1 Find the prime factors of m.‬‬
‫‪Step 2 Find the prime factors of n.‬‬
‫‪Step 3 Identify all the common factors in the two prime expansions found‬‬
‫‪in Step 1 and Step 2. (If p is a common factor occurring pm and pn times in‬‬
‫)‪m and n, respectively, it should be repeated min{pm, pn} times.‬‬
‫‪Step 4 Compute the product of all the common factors and return it as the‬‬
‫‪greatest common divisor of the numbers given.‬‬

‫يثال ‪ :‬أ‪ٚ‬عل اٌؼبًِ اٌّشزون اٌؼٍ‪ٌٍ ٝ‬ؼلك‪60, 24 ٓ٠‬؟‬


‫انحم‪:‬‬
‫‪60 = 2. 2. 3. 5‬‬ ‫األػلاك األ‪١ٌٚ‬خ ٌٍؼلك ‪ٝ٘ 63‬‬
‫‪24 = 2. 2. 2. 3‬‬ ‫األػلاك األ‪١ٌٚ‬خ ٌٍؼلك ‪ٝ٘ 24‬‬
‫‪gcd(60, 24) = 2. 2. 3 = 12‬‬ ‫‪ ِٓٚ‬صُ ‪٠‬ى‪ ْٛ‬اٌؼبًِ اٌّشزون األػٍ‪ٛ٘ ٝ‬‬
‫أصٕبء كهاٍزٕب ٌ‪ٙ‬نٖ اٌطو‪٠‬مخ ف‪ ٝ‬اٌّلاهً اٌّز‪ٍٛ‬طخ ٌُ ٔالؽع أْ ٘نٖ اٌطو‪٠‬مخ أوضو‬
‫رؼم‪١‬لا ‪ٚ‬أثؾء ٍوػخ ِٓ ؽو‪٠‬مخ ئلٍ‪١‬لً ( ٍ‪ٛ‬ف ٔلهً ِمبهٔخ ث‪ ٓ١‬اٌطوق اٌضالس ِٓ ؽ‪١‬ش ىِٓ‬
‫اٌزٕف‪١‬ن ف‪ ٝ‬اٌجبة اٌزبٌ‪ .)ٝ‬ف‪ٛ‬اهىِ‪١‬خ اٌّلهٍخ اٌّز‪ٍٛ‬طخ ال‪٠‬غبك اٌؼبًِ اٌّشزون األػٍ‪ٌ ٝ‬ؼلك‪ٓ٠‬‬

‫‪20‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫طؾ‪١‬ؾ‪ِ ٓ١١‬ج‪ّٙ‬خ ٌّبما؟ ٌٓ اٌقط‪ٛ‬ح األٌ‪ٚ ٝ‬اٌضبٔ‪١‬خ اٌقبطخ ثمبئّخ اٌؼ‪ٛ‬اًِ األ‪١ٌٚ‬خ ٌىً ِٓ ‪m, n‬‬
‫غ‪١‬و ‪ٚ‬اػؾخ ‪ٚ‬اٌّلهً ػٕلِب شوػ ٌٕب اٌطو‪٠‬مخ ٌُ ‪٠‬قجؤب ‪ٛ٠ ٌُٚ‬ػؼ ٌٕب و‪١‬ف‪١‬خ اٌؾظ‪ٛ‬ي ػٍ‪٘ ٝ‬نٖ‬
‫اٌمبئّخ‪ٚ ,‬ئما ٌُ ٍّٔه ؽولخ ٌٍؾظ‪ٛ‬ي ػٍ‪٘ ٝ‬نٖ اٌمبئّخ فٍٓ ٔزّىٓ ِٓ وزبثخ ‪ٌٙ code‬نٖ‬
‫اٌق‪ٛ‬اهىِ‪١‬خ‪ .‬ثبإلػبفخ ئٌ‪ ٝ‬أْ اٌقط‪ٛ‬ح اٌضٍضخ غ‪١‬و ‪ٚ‬اػؾخ أ‪٠‬ؼب ‪ ٌُٚ‬ر‪ٛ‬ػؼ و‪١‬ف‪١‬خ ا‪٠‬غبك اٌؼٕبطو‬
‫اٌّشزووخ ث‪ ٓ١‬اٌمبئّز‪ ٓ١‬ف‪ ٝ‬اٌقط‪ٛ‬ح األ‪ٚ ٌٝٚ‬اٌضبٔ‪١‬خ‪.‬‬
‫‪ٌٚ‬ز‪ٛ‬ػ‪١‬ؼ اٌق‪ٛ‬اهىِ‪١‬خ اٌَبثمخ ( ف‪ٛ‬اهىِ‪١‬خ اٌّلهٍخ اٌّز‪ٍٛ‬طخ ‪ٔ )middle school‬ملَ‬
‫٘نٖ اٌق‪ٛ‬اهىِ‪١‬خ اٌز‪ ٝ‬رم‪ َٛ‬ثب‪٠‬غبك لبئّخ األػلاك اٌ‪١ٌٛ‬خ ٌٍؼلك ‪ٚ ,n‬رَّ‪٘ ٝ‬نٖ اٌق‪ٛ‬اهىِ‪١‬خ ‪sieve‬‬
‫‪ٚ‬هثّب أ‪ٚ‬عل ٘نٖ اٌق‪ٛ‬اهىِ‪١‬خ اٌملِبء اٌ‪ٔٛ١‬بٔ‪ ْٛ١‬ػبَ ‪ 233‬لجً اٌّ‪١‬الك‪:‬‬

‫‪ -1‬رجلا اٌق‪ٛ‬اهىِ‪١‬خ ثمبئّخ اثزلائ‪١‬خ ‪ ٝ٘ٚ‬األػلاك اٌّؾظ‪ٛ‬هح ث‪ٚ 2 ٓ١‬اٌؼلك ‪n‬‬


‫‪ -2‬رم‪ َٛ‬اٌق‪ٛ‬اهىِ‪١‬خ ف‪ ٝ‬اٌزىواه األ‪ٚ‬ي ‪ first iteration‬ثؾنف عّ‪١‬غ ِؼبػفبد اٌؼلك ‪2‬‬
‫ِٓ اٌمبئّخ اٌَبثمخ أ‪ ٜ‬رم‪ َٛ‬ثؾنف )… ‪(4, 6, 8,‬‬
‫‪ -3‬صُ رم‪ َٛ‬ثؾنف ِؼبػفبد اٌؼلك ‪ ( 3‬ف‪٘ ٝ‬نٖ اٌؾط‪ٛ‬ح رم‪ َٛ‬اٌق‪ٛ‬اهىِ‪١‬خ ثؾنف اػلاك رُ‬
‫ؽنف‪ٙ‬ب ف‪ ٝ‬اٌقط‪ٛ‬ح اٌَبثمخ ِضً ‪٘ٚ 12 ,6‬نا ِب ‪٠‬ؼوف ثّظطٍؼ ‪)overhead‬‬
‫‪ -4‬ال كاػ‪ٌ ٝ‬ؾنف ِؼبػفبد اٌؼلك ‪ 4‬ألٔ‪ٙ‬ب ؽنفذ ثبٌفؼً ف‪ ٝ‬اٌقط‪ٛ‬ر‪ ٓ١‬اٌَبثمز‪ ( ٓ١‬ألْ‬
‫ِؼبػفبد اٌؼلك ‪ِٛ 4‬ع‪ٛ‬كح ػّٓ ِؼبػفبد اٌؼلك ‪)2‬‬
‫‪ -5‬ؽنف ِؼبػفبد اٌؼلك ‪5‬‬
‫‪٘ٚ‬ىنا رَزّو اٌق‪ٛ‬اهىِ‪١‬خ ف‪ ٝ‬ؽنف اٌّؼبػفبد ٌألػلاك األػٍ‪ ٝ‬ؽز‪ ٝ‬ال‪ٛ٠‬عل أػلاك‬
‫‪٠‬غت ؽنف‪ٙ‬ب ‪ ِٓٚ‬صُ فزى‪ ْٛ‬األػلاك اٌّزجم‪١‬خ ٘‪ ٝ‬لبئّخ اٌؼلاك األ‪١ٌٚ‬خ ٌٍؼلك ‪.n‬‬

‫يثال‪ :‬أ‪ٚ‬عل لبئّخ األػلاك األ‪١ٌٚ‬خ ٌٍؼلك ‪ 25‬؟‬


‫انحم‪:‬‬

‫ف‪ ٝ‬اٌغل‪ٚ‬ي اٌزبٌ‪ ٝ٘ step1 ٝ‬اٌمبئّخ االثزلائ‪١‬خ ٌألػلاك اٌّؾظ‪ٛ‬هح ث‪ٚ 2 ٓ١‬اٌؼلك ‪ n = 25‬ث‪ّٕ١‬ب‬
‫‪ ٝ٘ step2‬اٌمبئّخ ثؼل ؽنف ِؼبػفبد اٌؼلك ‪ٚ ,2‬روِي ‪ step3‬ئٌ‪ ٝ‬اٌمبئّخ ثؼل ؽنف ِؼبػفبد‬
‫اٌؼلك ‪ٚ ,3‬اف‪١‬وا ‪ ٝ٘ step4‬اٌمئّخ ثؼل ؽنف ِؼبػفبد اٌؼلك ‪ٚ 5‬اٌز‪ ٝ‬رؾز‪ ٜٛ‬ػٍ‪ ٝ‬لبئّخ األػلاك‬
‫األ‪١ٌٚ‬خ ٌٍؼلك ‪.25‬‬

‫‪21‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫‪Step 1‬‬ ‫‪Step 2‬‬ ‫‪Step 3‬‬ ‫‪Step 4‬‬


‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪#‬‬
‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬
‫‪6‬‬ ‫‪5‬‬
‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪7‬‬
‫‪8‬‬
‫‪9‬‬ ‫‪9‬‬ ‫‪#‬‬
‫‪10‬‬
‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬
‫‪12‬‬
‫‪13‬‬ ‫‪13‬‬ ‫‪13‬‬ ‫‪13‬‬
‫‪14‬‬
‫‪15‬‬ ‫‪15‬‬
‫‪16‬‬
‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬
‫‪18‬‬
‫‪19‬‬ ‫‪19‬‬ ‫‪19‬‬ ‫‪19‬‬
‫‪20‬‬
‫‪21‬‬ ‫‪21‬‬
‫‪22‬‬
‫‪23‬‬ ‫‪23‬‬ ‫‪23‬‬ ‫‪23‬‬
‫‪24‬‬
‫‪25‬‬ ‫‪25‬‬ ‫‪25‬‬ ‫‪#‬‬

‫يالحظح‪ :‬انؼاليح ‪ #‬تزيش إنً أول ػذد يحذف لً انؼًىد‪.‬‬


‫ثشىً ػبَ ثفوع إٔٔب ٔو‪٠‬ل ا‪٠‬غبك لبئّخ األػلاك األ‪١ٌٚ‬خ ٌٍؼلك ‪ , n‬فّب ٘‪ ٛ‬أوجو ػلك ‪٠‬غت‬
‫ؽنف ِؼبػفبرٗ ِٓ اٌمبئّخ ؟ لجً االعبثخ ػٍ‪٘ ٝ‬نا اٌَإاي ‪٠‬غت رَغ‪ ً١‬اٌّالؽظخ اٌزبٌ‪١‬خ ِٓ‬
‫اٌّضبي اٌَبثك‪ ٝ٘ٚ ,‬ف‪ ٝ‬اٌقط‪ٛ‬ح ‪ٚ step2‬اٌز‪ ٝ‬لّٕب ثؾنف ِؼبػفبد اٌؼلك ‪ 2‬وبْ أ‪ٚ‬ي ػٕظو‬
‫‪٠‬ؾنف ٘‪ ٛ‬اٌؼلك ‪ ( 4‬أ‪ٚ ) 2*2 ٜ‬ا‪٠‬ؼب ف‪ ٝ٘ٚ step3 ٝ‬ؽنف ِؼبغفبد اٌؼلك ‪ 3‬وبْ أ‪ٚ‬ي‬
‫ػٕظو ‪٠‬زُ ؽنفٗ ٘‪ ٛ‬اٌؼلك ‪ٚ )3*3( 9‬اف‪١‬وا ف‪ ٝ٘ٚ step4 ٝ‬ؽنف ِؼبػفبد اٌؼلك ‪ 5‬وبْ أ‪ٚ‬ي‬
‫ػٕظو ‪٠‬ؾنف ٘‪ٚ )5*5 ( 25 ٛ‬ثظفٗ ػبِخ ف‪ ٝ‬اٌؼّ‪ٛ‬ك اٌن‪٠ ٞ‬ؾنف ف‪ِ ٗ١‬ؼبغفبد اٌؼلك ‪ p‬فاْ‬
‫أ‪ٚ‬ي ػٕظو ‪٠‬ؾنف ٘‪ ٛ‬اٌؼلك ‪ٌّ p*p‬بم؟ ألْ ف‪ ٝ‬اٌؾم‪١‬مخ اٌّؼبػفبد األلً ) ‪( 2p, …, (p-1)p‬‬
‫ؽنفذ ف‪ ٝ‬اٌقط‪ٛ‬اد اٌَبثمخ‪٘ .‬نٖ اٌّالؽظخ رغٕجٕب ؽنف ػٕبطو رُ ؽنف‪ٙ‬ب لجً مٌه ‪٠ٚ‬زؼؼ أ‪٠‬ؼب‬
‫‪22‬‬
E. M. Badr Introduction ‫ يمذيح‬:‫انثاب األول‬

ٓ‫ل ػ‬٠‫(أوضو كلخ ال ري‬ n ٓ‫ل ػ‬٠‫ ال ري‬p ُ‫ِٓ ص‬ٚ n ‫ل ػٓ اٌؼلك‬٠‫ي‬٠ ‫غت أْ ال‬٠ p*p ْ‫ا‬

.Sieve ‫خ‬١ِ‫اهى‬ٛ‫غ ػوع ف‬١‫االْ َٔزط‬ٚ .)  n 

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‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫تؼض تطثيماخ انخىارسيياخ ‪Algorithms Applications :‬‬


‫ٕ٘بن رطج‪١‬مبد وض‪١‬وح علا رؾً ث‪ٛ‬اٍطخ اٌق‪ٛ‬اهىِ‪١‬بد فؼٍ‪ٍ ٝ‬ج‪ ً١‬اٌّضبي‪:‬‬
‫رور‪١‬ت اٌج‪١‬بٔبد ‪Sorting‬‬ ‫‪-1‬‬
‫َِبئً رور‪١‬ت اٌج‪١‬بٔبد ٌ‪ٙ‬ب أّ٘‪١‬خ وجو‪ , ٜ‬فّضال ػٍ‪ٍ ٝ‬ج‪ ً١‬اٌّضبي ٔؾزبط ئٌ‪ ٝ‬رور‪١‬ت ل‪ٛ‬ائُ اٌطالة‬
‫رور‪١‬جب أثغل‪٠‬ب ثبٌَٕجخ ٌالؽوف ‪ٚ‬رور‪١‬جب رٕبىٌ‪١‬ب أ‪ ٚ‬رظبػل‪٠‬ب ثبٌَٕجخ ٌالهلبَ ‪ٔٚ‬زبئظ اٌطالة ثبإلؽبفخ‬
‫ئٌ‪ ٝ‬رور‪١‬ت ِىزجبد اٌغبِؼخ أ‪ ٚ‬اٌّلاهً ‪٠‬غت أْ رى‪ِ ْٛ‬ورجخ أثغل‪٠‬ب ٌَ‪ٌٛٙ‬خ اٌجؾش ف‪ٙ١‬ب‪.‬‬
‫‪ٌٍٚ‬زور‪١‬ت اّ٘‪١‬بد افو‪ ٜ‬ؽجمب ٌٍزطج‪١‬مبد اٌّقزٍفخ‪.‬‬
‫تؼزيف ‪ :‬رَّ‪ ٝ‬ف‪ٛ‬اهىِ‪١‬خ اٌزور‪١‬ت ف‪ٛ‬اهىِ‪١‬خ َِزموح ‪ stable‬ئما ؽبفذ ٘نٖ اٌق‪ٛ‬اهىِ‪١‬خ ػٍ‪ٝ‬‬
‫رور‪١‬ت أ‪ ٜ‬ػلك‪ِ ٓ٠‬زَب‪ ٓ١٠ٚ‬ف‪ِ ٝ‬لفالر‪ٙ‬ب‪ ِٓ .‬ع‪ٙ‬خ أفو‪ ٜ‬ثفوع أْ اٌّلفالد رؾز‪ ٜٛ‬ػٍ‪ٝ‬‬
‫ػلك‪ِ ٓ٠‬زَب‪ ٓ١٠ٚ‬ف‪ ٝ‬اٌ‪ٛ‬ػؼ‪ I, j ٓ١‬ؽ‪١‬ش أْ ‪ I < j‬ئما ٌى‪ ٝ‬رى‪ ْٛ‬اٌق‪ٛ‬اهىِ‪١‬خ َِزموح ‪stable‬‬
‫‪٠‬غت أْ ‪٠‬ى‪ٔٛ‬ب اٌؼلكاْ ف‪ ٝ‬اٌّ‪ٛ‬ػؼ‪ i ' , j ' ٓ١‬ف‪ ٝ‬اٌّقوعبد ثؾ‪١‬ش ' ‪. i '  j‬‬
‫اٌجؾش ف‪ ٝ‬اٌج‪١‬بٔبد ‪Searching‬‬ ‫‪-2‬‬
‫ثبٌّضً اٌجؾش ف‪ ٝ‬اٌج‪١‬بٔبد ‪٠‬ؼط‪ٕ١‬ب هؤ‪٠‬خ ألّ٘‪١‬خ اٌج‪١‬بٔبد وّب ٌ‪ٔ ٛ‬و‪٠‬ل ِؼوفخ ألظ‪ ٝ‬ل‪ّ١‬خ ث‪ ٓ١‬ث‪١‬بٔبد‬
‫ِب أ‪ ٚ‬أطغو ل‪ّ١‬خ ف‪ٙ١‬ب ‪ ,‬رىواه ل‪ّ١‬خ ِب ‪٘ ,‬نا وٍٗ ٔؼوفٗ ِٓ فالي ف‪ٛ‬اهىِ‪١‬بد اٌجؾش ف‪ٝ‬‬
‫اٌج‪١‬بٔبد‪.‬‬
‫ِؼبٌغخ األؽوف ‪ٚ‬إٌظ‪ٛ‬ص ‪String Processing‬‬ ‫‪-3‬‬
‫ف‪ٛ‬اهىِ‪١‬بد ِؼبٌغخ إٌظ‪ٛ‬ص رشًّ ػٍ‪ِ ٝ‬طبثمخ وٍّز‪ ِٓ ٓ١‬ؽ‪١‬ش ػلك اٌؾو‪ٚ‬ف‬
‫‪ٚ‬ؽج‪١‬ؼخ اٌؾو‪ٚ‬ف ‪ٚ‬أِبوٓ رور‪١‬ت اٌؾو‪ٚ‬ف ف‪ ٝ‬وً وٍّٗ ‪ٚ‬أ‪٠‬ؼب اوزشبف األفطبء اٌٍغ‪٠ٛ‬خ‬
‫ف‪ ٝ‬إٌظ‪ٛ‬ص ٌ‪ ٌ١‬فمؾ ثً ‪ٚ‬رظؾ‪١‬ؼ ٘نٖ األفطبء‪.‬‬
‫َِبئً اٌوٍ‪ِٛ‬بد اٌج‪١‬بٔ‪١‬خ ‪graph theory problems‬‬ ‫‪-4‬‬

‫رشزًّ َِبئً اٌوٍ‪ِٛ‬بد اٌج‪١‬بٔ‪١‬خ ‪ graph theory problems‬ػٍ‪َِ ٝ‬بئً ٌ‪ٙ‬ب أّ٘‪١‬خ‬
‫فبطخ ِضً ‪:‬‬

‫‪َِ ‬أٌخ اٌجبئغ اٌّزغ‪ٛ‬ي ‪ٚ : Travelling Salesman Problem‬رزٍقض ٘نٖ‬


‫اٌَّأٌخ ف‪ ٝ‬أْ اٌجبئغ اٌّزغ‪ٛ‬ي ‪٠‬و‪٠‬ل ى‪٠‬بهح ِغّ‪ٛ‬ػخ ِٓ اٌّلْ ( لبؽؼب ألً‬
‫َِبفخ ) ِٕطٍمب ِٓ ٔمطخ اٌجلا‪٠‬خ ‪ٚ‬ػبئلا ئٌ‪ٙ١‬ب ثشوؽ أْ ‪ّ٠‬و ػٍ‪ ٝ‬وً ِل‪ٕ٠‬خ‬
‫ِوح ‪ٚ‬اؽلح فمؾ ‪ِٚ‬ؾممب ألً َِبفخ‪.‬‬

‫‪26‬‬
‫‪E. M. Badr‬‬ ‫‪Introduction‬‬ ‫انثاب األول‪ :‬يمذيح‬

‫‪َِ ‬أٌخ اٌّّو األطغو ‪ٔ : Short Path Problem‬و‪٠‬ل االٔزمبي ِٓ ِل‪ٕ٠‬خ ئٌ‪ٝ‬‬
‫ِل‪ ٕٝ٠‬أفو‪ ٜ‬ثأطغو َِبه‪.‬‬

‫‪َِٚ ‬أٌخ اٌزٍ‪ٔ :Coloring 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 ‫ يمذيح‬:‫انثاب األول‬

9. Euclid’s algorithm, as presented in Euclid’s treatise, uses subtractions


rather than integer divisions. Write pseudocode for this version of
Euclid’s algorithm.
10. Write pseudocode for an algorithm for finding real roots of equation
ax2 + bx + c = 0
for arbitrary real coefficients a, b, and c. (You may assume the
availability of the square root function sqrt (x).)
11. Describe the standard algorithm for finding the binary representation
of a positive decimal integer:
a. in English.
b. in pseudocode.
12. Describe the algorithm used by your favorite ATM machine in
dispensing cash. (You may give your description in either English or
pseudocode, whichever you find more convenient.)
13. a. Can the problem of computing the number π be solved exactly?
b. How many instances does this problem have?
c. Look up an algorithm for this problem on the Internet.
14. Give an example of a problem other than computing the greatest
common divisor for which you know more than one algorithm. Which of
them is simpler? Which is more efficient?
15. Consider the following algorithm for finding the distance between the
two closest elements in an array of numbers.
ALGORITHM MinDistance(A[0..n − 1])
// Input: Array A[0..n − 1] of numbers
// Output: Minimum distance between two of its elements
dmin ← ∞
for i ← 0 to n − 1 do

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

Make as many improvements as you can in this algorithmic solution to


the problem. If you need to, you may change the algorithm altogether; if
not, improve the implementation given.
16.Consider the algorithm for the sorting problem that sorts an array by
counting, for each of its elements, the number of smaller elements and
then uses this information to put the element in its appropriate position in
the sorted array:
ALGORITHM ComparisonCountingSort(A[0..n − 1])
// Sorts an array by comparison counting
// Input: Array A[0..n − 1] of orderable values
// Output: Array S[0..n − 1] of A’s elements sorted
// in nondecreasing order
for i ←0 to n − 1 do
Count[i]← 0
for i ←0 to n − 2 do
for j ←i + 1 to n − 1 do
if A[i] < A[j ]
Count[j ]← Count[j ] + 1
else Count[i]← Count[i] + 1
for i ← 0 to n − 1 do
S[Count[i]] ← A[i]
return S

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‬‬

‫جًيغ حمىق انًهكيح يحفىظح‬

‫ال ‪٠‬غ‪ٛ‬ى‪ ,‬ك‪ ْٚ‬اٌؾظ‪ٛ‬ي ػٍ‪ ٝ‬ئمْ فط‪ ِٓ ٟ‬اٌّإٌف‪ ,‬اٍزقلاَ‬


‫أ‪ ِٓ ٞ‬اٌّ‪ٛ‬اك اٌز‪٠ ٟ‬زؼّٕ‪ٙ‬ب ٘نا اٌىزبة‪ ,‬أ‪ ٚ‬اٍزَٕبف‪ٙ‬ب أ‪ٚ‬‬
‫ٔمٍ‪ٙ‬ب‪ ,‬وٍ‪١‬ب أ‪ ٚ‬عيئ‪١‬ب‪ ,‬ف‪ ٟ‬أ‪ ٞ‬شىً ‪ٚ‬ثأ‪ٍ١ٍٚ ٞ‬خ‪ٍٛ ,‬اء ثطو‪٠‬مخ‬
‫ئٌىزو‪١ٔٚ‬خ أ‪ ٚ‬آٌ‪١‬خ‪ ,‬ثّب ف‪ ٟ‬مٌه االٍزَٕبؿ اٌف‪ٛ‬ر‪ٛ‬غواف‪ ,ٟ‬أ‪ٚ‬‬
‫اٌزَغ‪ ً١‬أ‪ ٚ‬اٍزقلاَ أ‪ٔ ٞ‬ظبَ ِٓ ٔظُ رقي‪ ٓ٠‬اٌّؼٍ‪ِٛ‬بد‬
‫‪ٚ‬اٍزوعبػ‪ٙ‬ب‪.‬‬
‫يطهة هذا انكتاب كايال يٍ انًؤنف شخصيا‬
‫خ‪11116711583 :‬‬
‫تزيذ انكتزوًَ‪[email protected] :‬‬
‫طؼز انُظخح انىاحذج (داخم يصز)‪ 111 :‬جُيح يصزي‬
‫طؼز انُظخح انىاحذج (خارج يصز)‪ 21 :‬دوالر ايزيكً‬

‫‪31‬‬

‫‪View publication stats‬‬

You might also like