You are on page 1of 22

1

Introduction to Algorithms

،Algorithm ‫اهسردنب شيلو‬، ‫ بتكأ نكمم فيكو‬Algorithms ‫ال نعرتباش لوأب يكحن حر‬
‫ ؟ ًلا صأ‬Algorithm ‫ىنعم وشو‬

 What is the Algorithm?


Algorithm: Is a Finite Set of Instructions that, if followed, accomplishes
a particular task.
‫م نع ةرابع ةيمزراوخال‬K‫ج‬K‫م‬K‫و‬K‫ع‬K‫م ة‬K‫ةنيعم ةلكشم لحت ناشع اهتبعب يلال تاميلعتال ن‬، ‫ مزالو‬-
ِ ‫ًلا‬
.K‫ه‬K‫ا‬KKK‫ نوكتةلكشمالي‬K‫دوجوم‬K‫عف ة‬

‫ ال ةباتك دعب كنم عقوتمال‬Output ‫كيجي حر يلال‬، ‫ ال وشو‬Input ‫ال وش فراع كنإ ىنعمب‬
.Algorithm
 Why Study Algorithms?
▪Necessary in any computer programming problem:
– Improve algorithm efficiency: run faster, process more data, do
something that would otherwise be impossible.
– Solve problems of significantly large size.
– Technology only improves things by a constant factor.

▪Compare algorithms.
▪Algorithms as a field of study.
▪Learn techniques of algorithm design and analysis

‫ ؟ لماك سروك اهالو‬Algorithms ‫ه قوف يلال م ًلكال رصتخم‬K‫ال سردنب شيل انحا هنإ و‬ -
https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪2‬‬

‫▪ ال لنتمعب ‪ Algorithms‬ةءافك ن‪K‬م نسَ حن ناشع (‪ )Efficiency‬اهيلخن ثيحب ‪،‬تايمزراوخال‬


‫لقأو ‪،‬ةعرس رثكأ ‪ Space‬ال وأ ةريبكال اتادال عم رثكأ ةيلمع اهيلخن نامكو ‪،‬يروميمال يف‬
‫‪ Input‬اادج ريبك ه مجح يللا‪.‬‬

‫حب ةيمزراوخ اذك سردن حر ينعي ‪،‬ةدوجومال تايمزراوخال ينب نراقن ناشع وضرب‬ ‫▪ لت‬
‫ال يز ةدوجوم ت ًلكشم ‪ Searching‬الو ‪ ،Sorting‬لضفألاو نسحألا نيم نراقن شلبنو‬
‫ال‪ K‬ديدحتى‪KK‬لع‪ K‬ءا انباعا ب‪KK‬ط ‪ ...‬خالعرسألاو ‪ Complexity‬ل‪K‬ل‪.Algorithm‬‬
‫▪ اهللمعنو ةيمزراوخ ممصن فيك لمتعن ناشع وضرب ‪ analysis‬ممصن ا‪K‬م دعبو ‪،‬ليلحت ينعي‬
‫اهريغ عم ا هنراقن عجرن ةي مزراوخ‪.‬‬

‫‪-‬‬

‫‪ ‬ال‪ K‬ض‪K‬عبف‪KK‬وشنو ةلثمأ ةيوشذخونب‪KK‬يط ‪... Algorithms‬‬

‫‪ Different problems :‬‬ ‫‪ Different design paradigms :‬‬


‫‪- Searching‬‬ ‫‪- Incremental‬‬
‫‪- Sorting‬‬ ‫‪- Divide-and-conquer‬‬
‫‪- Graph problems‬‬ ‫‪- Greedy algorithms‬‬

‫‪ Incremental‬ال ةلكشم تناك لكاشمال دحأ ‪ -‬يلال ‪ Searching‬لخاد نيعم رصنع ن‪K‬ع ثحبأ نكمم فيكو‬
‫يرثك اهريغ ‪ Array Algorithms‬اذك انع ف ً‪،‬لا ثم ‪ Algorithm‬ال ي‪K‬ز ةلكشمال ي‪K‬ا‪K‬ه‪ K‬اولحي نكم‪K‬م‬
‫الع يشمن و‪K‬ه ‪ Array‬يفو ‪،‬بول ةلمج ل‪K‬لً‪KK‬خ ن‪K‬م رصنع رصنع‬
‫ال‪ K‬لث م ‪ Binary Search‬لاو ‪ Hashing‬هريغ‪K‬و ‪....‬‬
‫ا ع ا بط‬

‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
‫‪3‬‬

‫ال ةلكشم‪ K‬وضرب‪ -‬ءازجأل ‪ Sorting‬ال رصانع‪ K‬ب‪KK‬ترأ حر ف‪KK‬يكو ‪ ،Array‬ال دحأو ‪Algorithms‬‬
‫سبث‪KK‬يحب‪Array‬‬
‫طبك‪K‬يه‪ K‬دعبو ‪ Array‬ال و‪K‬ه ‪ K‬ةلكشمالي‪K‬ا‪K‬ه‪ K‬اولحبي‪K‬لال‪ Divide-and-conquer‬ال مق‬
‫ال‪ K‬لعت‬
‫ي‪K‬نعي رغصأ‬
‫ت‪KK‬انراقم‪ K‬ل‪K‬معيش‪K‬لبو)ي‪K‬شمبعوضومالن‪K‬جريكير (‬
‫انع يللا ‪.Sorted‬‬
‫ةلثمأل ن‪KK‬م‪.Merge Sort + Quick Sort K‬‬
‫ال و‪K‬ه ‪ K‬اهيلع‪ K‬ا‬
‫‪ -‬لا لكاش م ‪ Graph‬لا انع يف ‪،‬ك‪K‬لذك ‪ Greedy Algorithms‬نيربتاش رخآب م ه ملعتن حرو‬
‫هللا ءاش نإ‪.‬‬
‫‪-‬‬

‫‪ Algorithm Design And Analysis:‬‬

‫‪Algorithm‬‬

‫‪Design‬‬ ‫‪Analysis‬‬

‫‪Correctness‬‬ ‫‪Efficiency‬‬

‫‪Time‬‬ ‫‪Space‬‬

‫‪ ‬لا ‪ Algorithm‬نيتلحر م ن م وأ ني مسق ن م نوتكتب ‪‬‬

‫‪ Design 1-‬لل ‪ ،Algorithm‬يلال تاوطخال بتكأ هنإ ىنعمب‬ ‫‪:Desig‬لمعن حر ةيادبالب‬


‫ينعي ا هسف‪n‬ن ةلكش ملا لح و ه يللا ‪،‬ةلكش ملا لحل م هيلع يش مأ‪.‬‬

‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
‫‪4‬‬

‫ب ‪ Design‬ةيلمعب أدبن ا‪K‬م بلق ا‪K‬ذ‪K‬ه ىنبلمل‬


‫ال هب نش‬
‫لمعن ةيادبالب مزال ‪،‬ىنبمال وأ ةرامعالب يش ا‬
‫ال‬
‫ءانب ‪.‬‬
‫‪ Design 2-‬ل‪KK‬مع‪K‬أ شبلب‪ Analysis‬ال‪ K‬ي‪KKK‬ا‪K‬ه‪ K‬ل‪KK‬لحأ ى‪K‬نعمب‪Algorithm‬‬ ‫‪:Analysi‬‬
‫ال‪ K‬دعب‬
‫ا هتلمع يللا ‪s‬‬
‫‪.Design‬‬

‫لمعب ‪ Analysis‬نيتلغش ن م دكأتأ هنإ ل‪K‬لًخ ن م ‪‬‬


‫▪ ‪ :Correctness‬ال هنإ دكأتأ مزال ينعي ‪ Algorithm‬اهلتلمع يلال( ابتهك يلال ‪،)Design‬‬
‫يطعتب ا هنإ دكأتأ مزال‪ Output K‬اما ئاد حيحص‪.‬‬

‫▪ ‪ :Efficiency‬ال هنإ ن‪K‬م دكأتأ مزال وضربو ‪ Algorithm‬اهتلمع يلال ‪،Efficiency‬‬


‫لا ي‪KK‬ا ه ة‪K‬ءافك ينعي يبرعالب ‪.Algorithm‬‬

‫ينعي فيك بيط ‪ Efficiency‬؟‬


‫نيتلغش ن م دكأتب ‪‬‬
‫‪ -‬لا ‪ :Time Complexity‬لا يا ه ة عرس ىد م و ه يللا ‪ ،Algorithm‬وضربقمعتن حرو‬
‫ا‪K‬ل‪K.‬ل‬
‫ت‪K‬كشبعوضومال ا‪K‬ذ‪K‬ه‪ K‬ي‪K‬ف‬
‫صل‬
‫بييل ف‬
‫ه ءاشن‪KK‬ا ةياجال ابرتشال‬

‫ي‬
‫‪ :Space‬ال ي‪K‬ا‪K‬ه مك و‪K‬ه يلال ‪ Algorithm‬ف ةحاسم ذخوت حر‬
‫‪ -‬ال ‪Complexity‬‬
‫‪.‬‬
‫ي‪KK‬روميمال‬
‫ترا‬
‫ال و‪K‬ه نوكي حر هيلع ‪ Time Complexity‬ال ةلكشم هنوك ‪ Space‬ص‬
‫زيكرت رثكألاو‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬ ‫ة م‪.‬‬

‫يظع ةلكش م ش م اايل اح‬


5

:‫خلمال‬K‫ص‬

‫م اهال‬K‫خ ن‬KKً‫ل‬K‫ ل‬Analysis ‫ لمعنب كيه دعبو‬Algorithm ‫ لل‬Design ‫▪ لمعنب يشا لوأ نذإ‬
:‫نيلاؤس يالح لأسأ هنإ‬
.Time Complicity  Algorithm 1- ‫لا يا ه تقو ذخوت حر مك‬
.Space Complicity  Memory K‫م‬KK‫ ن‬K‫ ال‬Space 2- ‫جاتحتحر مك‬
.Space ‫ ن م رثكأ‬Time ‫ر انيكحو‬K‫ىلع زكرن ح‬

- Slide 8:
Fact: running time grows with the size of the input

..Input Size ‫و‬K‫ ال‬Running Time K‫ه‬K‫و‬KK‫لحضوبن‬K‫و ةلغشي‬K‫ه‬KK‫ نيبةق ًلعالي‬K‫ال‬ -


... ‫ ديكأ‬Time ‫ لا ديزي حر‬Input Size ‫لا داز‬
‫ا ملكف‬
 Algorithm Efficiency vs. Speed:

.. Efficient K‫ه‬K‫و‬KK‫ر ن‬K‫وشنح‬KK‫أ ف‬K‫يمه‬K‫وكتهنإ ة‬K‫يمرزاوخالن‬K‫ة‬ -

https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪6‬‬

‫‪ ‬ال ةعرس ‪ Algorithm‬الب ةدوجومال تايلمعال دعأ هنإ ل‪K‬لً‪KK‬خ ن‪K‬م باوجال ؟ اهبسحنب وشب‬
‫‪ Algorithm‬نيع م نشكنف يع م لعطبو ‪،‬هريغو سبول يف اذإو‪.‬‬
‫ال ر‪K‬و‪K‬ه‪K‬ظ ةعرس يف يسيئر ل‪K‬م‪K‬ا‪K‬ع ش‪K‬م رتويبمكال ةعرس هنإ رصتخم لكشبو يكحب ًديلسالب‬
‫‪ ،Output‬ال‪ K‬ة‪K‬عرسامنإ ‪ Algorithm‬هر‪K‬وهظ ي‪K‬في‪K‬سيئرالل‪KK‬ماعال ي‪KK‬ه‪.K‬‬

‫▪ هتعرسرتويبمك ك‪K‬بحاصدنع‪ K‬ولكيلكبحف‪)109 Instruction / Second( ‬‬


‫لا ةعرسو ‪ Algorithm‬لا بسح ا م دعب( كبحاص تعبت ‪ Time‬ينعي) ‪2n2 ‬‬
‫▪ هتعرسك‪K‬رتويبمك ت‪KK‬نا امنيب‪(107 Instruction / Second( ‬‬
‫لا ةعرسو ‪ Algorithm‬كتعبت ‪50n*logn ‬‬

‫ل‪K‬معناندبو كبتعت‪ Sorting‬رصانعالن‪KK‬م‪ 610 K‬ل ‪Input Size = 106 ‬‬

‫‪ -‬ال‪ K‬روهظلق‪K‬رغتسمالت‪KK‬قوالانبسح املهنإ كيلكبحف‪ ،Output‬ال‪ K‬ت‪KK‬علط ‪Algorithm‬‬


‫ةعرس ن‪K‬م فعض ‪ 100‬ب عرسأ كبحاص ز‪K‬ا‪K‬ه‪K‬ج ةعرس هنإ عم هنإ‬
‫‪ ،More Efficient‬ىنعمب‬
‫ة‪K‬ر‪K‬م‪ 20 K‬ب ك‪K‬بحاصةجيتنن‪KK‬م‪ K‬عرسأ ةجيتنك‪K‬اطع‪K‬أ تبتكه ت‪KK‬نأ ي‪K‬لالك‪K‬جمانربهنإ ال‪K‬إ !‪.‬‬
‫‪،‬ك‪K‬ز‪K‬ا‪K‬هج‬
‫ال‪ K‬ر‪K‬و‪K‬هظ ةعرسبرثؤمالل‪KK‬ماعال‪ Output‬ال‪ K‬ة‪K‬عرس و‪K‬ه‪Algorithm K‬‬
‫هنإ كليكحبس‪K‬بف‬
‫لاب مت هنب كي ه ناشع ‪،‬رتويب مكلا ‪ Efficient‬لل ‪.Algorithms‬‬
‫ة عرس سيل‪K‬و‬
‫‪ “pseudo-‬ال‪ K‬ب‪KK‬تكنن‪K‬اشع‪ ،Algorithm K‬ال‪ K‬ي‪K‬نعي‪Algorithm‬‬
‫بةدا‪K‬ع ”‪code‬‬ ‫‪ -‬مدختسن ا‬
‫انلمع ا‪K‬م ىسل انحا هنإل ‪،‬ةجمرب ةغل طرش ‪ implementation‬لل‬
‫ش‪K‬م ‪،‬يداع ةغل يأب اتبهنكب‬
‫‪ Algorithm‬لا دحأ ىلع ‪.Compilers‬‬

‫‪،‬ةموهفم نوكتبو كحيرتب يلال ةغلالب ابتهكب‬


‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬ ‫‪ Algorithm‬ةغل مدختست نكمم اعبطا‬
‫ال ف‬ ‫‪-‬‬
‫زومرو تايضايرال ةغل لمعتست ينعي ً‪،‬لا ثم ةيضاير تاريبعت مت‬
‫خست نكممو ‪،‬ةتحب ةيزيلجنا‬
‫هريغو ت‪KKK‬ايضايرال‪.K‬‬
‫لمعت يجيت كدب امل امنيب ‪،‬ملقو ةقرو ىلع ابتهكب ‪ Implementation‬لل‬
7

 Writing Algorithms:
• Any algorithm should be written as:
 Name: give an appropriate name
 Input: value or set of values
 Output: value or set of values
 Algorithm:
• Step (usually steps) that can take you from the input to
the output
• …
• ..
:K‫حلةنيعم‬K‫و ةلكشمالل‬K‫ه‬KK‫التالك ي‬K‫ ي‬Formula‫أ كليكحب‬K‫لغ‬KK‫انالب‬K‫يجمربمالوأ س‬K‫ اومدختسبن‬
.‫ يدنع يللا ةلكش ملا مسا ددحب ةيادبالب‬: Name -1
Output‫لال‬K‫ر ي‬K‫نيجيح‬K‫ي‬، (‫ةقدبددحأ مزال‬، K‫اشع‬KK‫ ن‬K‫م‬K‫ علطيا‬K‫عم‬KK‫ ي‬Input ‫ ددحأ‬K‫ ال‬: Input -2
.)‫ يعبت‬Domain ‫ لا يف دوجو م شم و ه‬Input
‫دنع فلتخم‬
.‫ ين م قعوت ملا‬Output ‫ لا وش ددحأ‬: Output -3

‫ب‬.‫تكأ شبل‬KK‫حالب‬K‫اوطخالو ل‬KKK‫أبةلسلستمالت‬KK‫ااعبط ةغلي‬


K‫ه‬K‫و‬KK‫ ن‬:Algorithm 4- K‫ال‬

 Examples:
 Example 1: Determining if a number is prime or not.
▪Name: Prime
▪Input: n (an integer number)
▪Output: Prime or not prime
▪Algorithm:
https://web.facebook.com/groups/IntelligenceGroup.CS/

- Think for such an algorithm here?!


8

.‫ وأ‬K‫ ال‬Prime K‫دنع‬KK‫ ي‬K‫يك ةلكشم‬KK‫لالمقرالاذإ ددحأ ف‬K‫ رزويالهلخدأ ي‬


.‫▪ ةلكش ملا مسا ددحب ةيادبالب‬
.Integer K‫كمم‬KK‫وكين‬K‫أ ن‬KK‫ مقر ي‬Input ‫ ظحالو‬K‫ه‬K‫و‬KK‫ ن‬K‫ ال‬،Input‫ مث‬K‫▪ ال‬
.Not Prime ‫ وأ‬Prime ‫ عبطيحر‬،Output ‫▪ لا مث‬
‫ه لحن ناشع فيكرت تاوطخ بلشن مث‬K‫ا‬K‫ةلكشمال ي‬، ‫ه تلحنا فيك يوش دعب فوشن حر‬K‫ا‬K‫▪ ي‬
.)‫ةلكش مال‬. (‫ شم‬K‫لحلا فوشت ا م لبق كالحل تركف ول طلغ‬

 Example 2:
▪Name: ListSort
▪Input: L (list of names of people)
▪Output: L (same list sorted alphabetically).
▪Algorithm:
- Steps …
- We will see several algorithms in later chapters
 Example 3:
▪Name: SumOfNumbers
▪Input: n (positive integer)
▪Output: sum (sum of all positive integers from 1 to n)
▪Algorithm:

initially sum is zero


Loop from 1 to n
Add current
loop counter
to the sum
output sum
https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪9‬‬

‫‪ ‬نيطعي حر رزويال ‪،‬الؤسال اذهب ‪ Input‬نيعم )‪ (n‬ىإل ‪ 1‬ن‪K‬م ماقرألا ع‪K‬و‪K‬مج‪K‬م هيطعأ انأو‬
‫)‪.(n‬‬
‫▪ لا ‪ Input‬هنإ اوظحال‪ Positive Integer K‬طقف‪.‬‬
‫▪ لاو ‪ Output‬ع ومجملا نوكي ح‪K‬ر‪.‬‬
‫▪ لل يجين ‪:Algorithm‬‬

‫‪ ‬مق‪K‬ر ل‪KK‬ح ‪:1‬‬

‫ي ‪ Zero‬ب كرحتأ حرو ‪،‬هليع عمجأ حر ليال و‪K‬ه ناشع‬


‫ب ‪ Sum‬ال ن‪K‬م بدأ‬
‫ال‬
‫فر عن حر بادية‬ ‫‪-‬‬
‫‪ Loop‬ال ا‪K‬ذ‪K‬ه ىإل ‪ 1‬ال ن‪K‬م (‪ )n‬ال عمجأ حر اهلخادو ‪ Counter‬بولال لخاد يشمب يلال‪،‬‬
‫عومجملا عبطيبوللا صلخت سبو‪.‬‬
‫‪ -‬ال هنإ ة‪K‬ر‪K‬م نامك اوظحال ‪ Algorithm‬نكممو ةيزيلجنا ةغل امنإ ‪،‬ةجمرب ةغلب اتبهنكب ا‪K‬م‬
‫اهريغو ةيضاير ةغلب بتكي دحاو‪.‬‬
‫ةروصلا يا هب ا هتبكي دحاو نك م مو ‪‬‬ ‫‪-‬‬
‫‪ Example 3:‬‬
‫‪▪Name: SumOfNumbers‬‬
‫)‪▪Input: n (positive integer‬‬
‫)‪▪Output: sum (sum of all positive integers from 1 to n‬‬
‫‪▪Algorithm:‬‬
‫‪sum = 0‬‬
‫‪for count =1 to n‬‬
‫{‬
‫‪sum = sum + count‬‬
‫}‬
‫‪output sum‬‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
10

:2 ‫ح‬KK‫ر ل‬K‫مق‬

 ‫ ًلا ثم‬While ‫ مدختسي ف ةيناث ةقيرطب‬Algorithm ‫ال لحي ادح نكمم‬ -
 Example 3:
▪Name: SumOfNumbers
▪Input: n (positive integer)
▪Output: sum (sum of all positive integers from 1 to n)
▪Algorithm:
count = 1
sum = 0
while (count <= n)
{
sum = sum + count
count = count + 1
}
output sum
-

‫ ا‬K ‫ن‬، ‫جآ املهنإ انيكح‬KK‫تكأ ي‬KK‫ ب‬Algorithm ‫يط‬KK‫يك انفرع انحا ب‬KK‫تنكبف‬K‫ ب‬K‫ ال‬-
Algorithm ‫آل‬
.‫ اهال‬Analysis ‫ و‬Design ‫أ مزال ف‬K‫مع‬KK‫ل‬
.‫ اهال‬Correctness + Efficiency‫وكب‬K‫ ن‬K‫م‬KK‫خ ن‬KًK‫ل‬KK‫ دكأتأ ل‬K‫م‬KK‫ ن‬K‫ ال‬Analysis ‫و‬K‫ال‬ -
.Analysis‫ ذخونليانخف‬K‫وشنو الثم‬KK‫يك ف‬KK‫هلحناندبف‬، ‫معنو‬KK‫ل‬ -

https://web.facebook.com/groups/IntelligenceGroup.CS/
11

Example 4: We need to solve a computational problem “Convert a


weight in pounds to Kg”.
▪Name: ConvertPoundToKg
▪Input: weight-in-pounds (weight in pound)
▪Output: weight-in-Kg (weight in Kg)

.Kg ‫ ل‬Pounds K‫دنع‬KK‫ؤسي‬K‫ال‬،‫ليكحب‬K‫دبي‬KK‫و حيجمانربي‬K‫ ل‬K‫ ال‬


.Output ‫ لاو‬Input ‫▪ لا مث مسلاا ددحب ةيادبالب‬
:Analysis ‫وشنو‬KK‫ ف‬K‫م‬K‫ج‬K‫م‬K‫و‬K‫ع‬K‫ولح ة‬K‫معنو ل‬KK‫ ل‬Algorithm ‫آل‬
‫ ا‬K‫جينن‬K‫ ةباتكلي‬K‫▪ ال‬
.0.454 Kg ‫ نع ةرابع‬Pound ‫ لك نإ ف‬Hint ‫ك‬ -
:1 ‫ح‬KK‫ر ل‬K‫ مق‬

▪Algorithm:
1. Read weight-in-pounds.
2. Calculate weight-in-Kg = weight-in-pounds * 0.454.
3. Print weight-in-Kg.

:‫ اهال‬Analysis ‫آل انيلخ‬


‫ ا‬K‫معنن‬K‫ ل‬،Algorithm‫ل‬K‫ ل‬Design ‫ انحا‬K‫▪ انلمع‬

‫ ًلا عف هنإ ي ًقلن حر ف‬،Output ‫م دكأتن حر ةيادبالب‬K‫ ال ةحص ن‬:Correctness -


.‫ حيحص علطي حر اما ئاد‬Output K‫ال‬

:Efficiency -
‫ ؟‬Algorithm ‫ ال ياهل‬Time Complexity ‫ال مك‬
https://web.facebook.com/groups/IntelligenceGroup.CS/
12

‫م هنوك‬K‫مج الو بول انع ا‬K‫نارود ل‬، ‫طف امنإ‬


‫ ىهتناو ةطيسب ةيباسح ةيلمع ق‬O(1) ‫ه باوجال‬K‫و‬
.‫ زات م م ريثك ريثك‬Time ‫ر ملأا‬، ‫الف‬ ‫ال ب‬
‫لا ي ت‬

.Efficient‫اد ةحيحص‬KK‫ وضربو اما ئ‬Algorithm ‫بف‬‫ ًقلنب ت‬K‫للهو هنإ ي‬KK‫ ا‬K‫ه‬K‫ا‬KKK‫ ي‬K‫ال‬
‫ال‬
‫ال‬K‫ي‬

:2 ‫ح‬KK‫ر ل‬K‫مق‬
▪Algorithm: 

1. Read weight-in-pounds
2. Calculate weight-in-Kg = weight-in-pounds / 0.454
3. Print weight-in-Kg

Analysis‫ انبحاص‬K‫ه‬K‫و‬KK‫الكح ن‬K‫دبانأ ي‬KK‫حأ ي‬KK‫ ل‬K‫ه‬K‫ا‬KKK‫ ةلكشمالي‬K‫يه‬K‫ك‬، ‫يط‬KK‫معنانيلخ ليهكحنبب‬K‫▪ ل‬


.. ‫وشنو‬KK‫ف‬
- Is Algorithm Correct ? Answer : No
- Is Algorithm Efficient ? Answer : Yes, But The Result is Incorrect.

‫رفوأ اظا ح يلهكبن‬


‫ئطاخ هلح نكلو ةلكشمال لح انبحاص‬، ‫و ةمسقال مدختسا وهف‬K‫ه‬K‫ذ‬K‫أطخ ا‬، ‫حف‬
.‫أ‬K‫ ًال ص‬Efficiency ‫ر’ ج‬KK‫ ب‬K‫م‬K‫ر‬K‫رخأ ة‬KK‫ى‬، ‫ درجمبو‬K‫م‬K‫حال لعط ا‬K‫طخ ل‬K‫أ‬،‫يفمف‬
‫اد ا‬K‫ع‬KK‫وشأ ي‬KK‫ ف‬K‫ال‬

:3 ‫ح‬KK‫ر ل‬K‫مق‬

▪Algorithm:
1. Read weight-in-pounds
2. weight-in-Kg = 0
https://web.facebook.com/groups/IntelligenceGroup.CS/
3. Loop until weight-in-pounds =0
13

4. if weight-in-pounds > 1
5. weight-in-Kg = weight-in-Kg + 0.454
6. weight-in-pounds = weight-in-pounds -1
7. else
8. weight-in-Kg=weight-in-Kg+weight-in-pounds* 0.454
9. weight-in-pounds =0
10. Print weight-in-Kg

‫ِ لىع‬K‫ةدح‬، ‫ ف‬K‫ه‬K‫ و‬K‫ع‬K‫م‬K‫ يشمت حر بول ل‬K‫م‬K‫ ال ن‬Pound ‫ صقنيو دحاو‬K‫م‬K‫لحال اذهب ▪ هدنع يلال زدنوابال ن‬، ‫لك لوحأ نكمم انأ اكح‬
‫ دحل‬K‫م‬K‫ مقرلل لصوي ا‬1، ‫ لكو‬K‫م‬K‫ر‬K‫ دنواب لوحي ة‬Pounds 1 5 ‫ر وهف‬K‫م بلشي ح‬K‫ ال ن‬5 ‫ لل‬Pounds
‫م دحل‬K‫زدنوابال اوصلخي ا‬، ‫هاطعأ رزويال ول ينعي‬
. K‫م‬K‫ اوصلخيا‬Pounds ‫قنيو دحاو‬K‫ ص‬K‫م‬KK‫ ن‬K‫ ال‬Pound ‫خ‬KًK‫ل‬KK‫ولل‬KK‫ب‬، ‫كو‬KK‫ ل‬K‫م‬K‫ر‬K‫وحية‬K‫ل‬
‫دحل‬

.‫و’ ح ينعي‬K ‫ع مج ةيل معل برضلا ةيل مع ل‬


- Is Algorithm Correct? Answer: Yes.
- Is Algorithm Efficient? Answer: No.

‫ ؟‬Efficient ‫شم شيل بيط‬ -


.O(n) ‫ر‬K‫ ًقلنح‬K‫ اهنإ ي‬Algorithm‫اهل‬KK‫ ي‬K‫ ال‬Time Complexity‫سحناملهنإل‬KK‫ ب‬K‫ال‬
‫لال‬K‫ي‬
. K‫ه‬K‫ و‬K‫وأ‬KK‫ح ل‬KK‫ اهنيلح ل‬O(1) ‫ بيرك‬K‫نراقم‬K‫ البة‬Time ‫و‬K‫ه‬K‫ذ‬K‫ ا‬K‫ال‬

FindMinInArray + Prime + SumDigits‫ف‬K‫امك ي‬KK‫اد ًيلسالبةلثمأ ن‬KK‫ ت‬K‫ع‬K ‫ ن‬K‫ال‬ -


.Algorithm ‫دهالو‬KKK‫ِ ف‬K‫م‬K‫ركذ ن‬K‫بمه‬ ‫ ًالدي‬K‫ف‬
‫سال‬ ‫ قطت‬K‫اشع‬K‫وشتن‬K‫ تاكبةةقيرط ف‬K‫ال‬

https://web.facebook.com/groups/IntelligenceGroup.CS/
14

Greatest Common Divisor

 Definition: The GCD of two natural numbers x, y is the largest


integer j that divides both (without remainder).

‫أل كرتشمال مساقال‬


‫ نيمقرل ربك ا‬: ‫ه‬K‫سب مقر ربكأ و‬
‫يقاب نودب مهيلع مق‬، ‫و‬K‫ه‬K‫ذ‬K‫ رغصأ مقرال ا‬
.‫ م هسفن ني مقرلا نيب‬Minimum ‫لا نم‬
 Examples:
 GCD(8,12) = 4
 GCD(12,8) = 4
 GCD(10, 25) = 5
 GCD(23, 19) = 1

‫ ؟‬Algorithm ‫سالع’لطن نكمم يفك‬


‫و اايجمرب ينقمرل كترشمالماق‬K‫م‬K‫ ن‬K‫خ‬Kً‫ل‬K‫ل‬ -
:Algorithm ‫وأ‬KK‫ل‬
‫وشن‬KK‫ف‬
▪Name: GreatestCommonDivisor1 (or GCD1)
▪Input: x, y (two natural numbers)
▪Output: x (Greatest Common Divisor of x and y)
▪Algorithm:
r = min(x, y)
for j = 1 to
r
{
if (mod(x, j) = 0 and mod(y,j) =
0) largest = j
}
output “GCD of x and y is “& largest.
https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪15‬‬

‫لوأب ▪ ال ن‪K‬م ‪ Algorithm‬ي‪K‬ه‪K‬و ‪ Simple Algorithm‬ال دنسأ يشا لوأ ‪ Minimum‬مهنيب‬


‫أل كرتشمال مساقال انيكخ هنإل‬
‫همسا ديدج ريغتمل ‪ r‬رغصأ مقر ربكأ نوكي حر ربك ا‬
‫‪ Minimum‬ني مقرلا نيب‪.‬‬
‫‪ -‬ب ىشم كيه دعب ‪ Loop‬ال اذهل ‪ 1‬ال ن‪K‬م ‪ ،r‬مق‬
‫سب مقرال اذإ فوشنو يكشن حر ة‪K‬ر‪K‬م لكو‬
‫همسا ريغتمبةميقالن‪K‬زخنح‪K‬ر ف ي‪K‬قابن‪K‬ودبن‪K‬يناثالمهيلع‪.Largest K‬‬

‫‪ -‬ال كلعجرب نشنكف يف و‪K‬ه ينألسي حر ادح يف اعا بط ‪ Mod‬؟‬


‫ىلع ‪ + j‬ال هنإ انيكح سب ‪،‬ال و‪K‬ه‪ K‬باوجال ال ‪ Algorithm‬دوك ش‪K‬م‪ K‬ن‪K‬و‪K‬ه‪ K‬بوتكمالف ‪،‬ةغل يأب اتبهنكب‬
‫طف امنإ يجمرب ‪ Mod‬لوألا مقرلل‬ ‫ال دجون اندب رطسال اذهب هنإ كلحضوي ناشع ق‬
‫‪ Mod‬ىلع يناثلا مقرلل ‪.j‬‬
‫‪ -‬الف ‪ Algorithm‬لل ‪ 1‬ال ن‪K‬م يشمت حر ‪ r‬مساقال ةميق يدنع نوكت حر بولال يهتنت سبو‬
‫أل كرتشمال‬
‫سب مقر ربكأ و‪K‬ه يلال ربك ا‬
‫ال ن‪K‬م لقأ نوكي هنإ طرش ‪،‬يقاب نودب نيمقرال ىلع مق‬
‫‪ Minimum‬م هنيب‪.‬‬

‫▪ ال الثم انقبط لوف )‪ GCD(8,12‬ال ي‪K‬ا‪K‬ه ىلع ‪ Algorithm‬ال هنإ ي ًقلن حر ‪ r = 8‬بولالو‬
‫لل ‪ 1‬ل ‪K‬ا ن م يش مت ح‪K‬ر ‪.12‬‬
‫يذح‪K‬ر ‪.Largest = 1‬‬
‫فورتن‪K‬وكيو طرشالتنف‬
‫دنع‪ i=1 K‬ال‪ K‬ةميق يرصتح‪K‬ر ةايدبال‬ ‫‪-‬‬
‫يذ حر ‪ ،Largest‬مساق و‪K‬ه ‪ 2‬مقرال هنإ ىنعمب‬ ‫‪ -‬دنع ‪ i=2‬ال و‪K‬ه ريصيو كلذك طرشالتنف‬
‫‪،‬ربكأل س‪K‬يلهنكلو ‪ 12‬ال‪K‬و ‪ 8‬ال‪ K‬نيبك‪K‬رتشم‪.K‬‬
‫ة‪K‬ر‪K‬م‪ K‬ن‪KK‬امك ب‪KK‬ولالي‪K‬شمتح‪K‬ر ف ا‬
‫‪ i=3‬لا ‪ 8‬ىلع نكل ‪ 21‬لا ىلع مسقب حص ‪ 8،‬ىلع مسقب ا م هنإل‪، K‬طرشلا ذفنتي ح‪K‬ر ا م‪.‬‬
‫‪ -‬دنع‬

‫دنع ‪ i=4‬لا ريصتو طرشلا ذفنتي ح‪K‬ر ‪.Largest = 4‬‬ ‫‪-‬‬


‫يذح‪K‬ر ا‪K‬م‪.4 K‬‬
‫ربكألك‪K‬رتشمالمساقالن‪K‬وبكفطرشالتنف‬
‫دنع‪ i=5,i=6,i=7,i=8 K‬و‪K‬ه‪ K‬مهنيب ا‬ ‫‪-‬‬

‫انلمع انيج ول ‪ Analysis‬لل ‪ Algorithm‬انع يف يقًلن حر ف ‪ For Loop‬ال يتالالب‬


‫‪ Algorithm‬ذخوت ح‪K‬ر )‪ O(n‬لا ن م ‪.Time‬‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
16

:Algorithm‫يناث فوشن‬
Euclid’s ‫كلو‬K‫ ن‬K‫ه‬K‫ا‬KKK‫يمزراوخال ي‬K‫ اهمسا اادج ةميدقة‬GCD ‫وشنانليخ‬KK‫يمزراوخ ف‬K‫ح ة‬KK‫لل‬K‫ل‬
.GCD Algorithm

Euclid’s GCD Algorithm

▪Name: GreatestCommonDivisor2 (or GCD2)


▪Input: x, y (two natural numbers)
▪Output: x (Greatest Common Divisor of x and y)
▪Algorithm:
while (y != 0)
{
t = mod(x, y)
x = y
y = t
}
Output x
‫م‬K‫خ ن‬KًK‫ل‬K‫م دحل ضعب ىلع نيمقرال ةمسق ل‬K‫ ةميقال لصوت ا‬GCD ‫ه‬K‫ا‬K‫▪ ال دجوتب ةيمزراوخال ي‬
.0 ‫ل‬
 Examples:
 Example 1: Computing GCD(8,12):
t x y
Initially -- 8 12
After 1 round 8 12 8
After 2 rounds 4 8 4
After 3 rounds 0 4 0
Output: 4
https://web.facebook.com/groups/IntelligenceGroup.CS/
17

 Example 2: Computing GCD(72,120):


t x y
Initially -- 72 120
After 1 round 72 120 72
After 2 rounds 48 72 48
After 3 rounds 24 48 24
After 4 rounds 0 24 0
Output: 24

 Example 3: Computing GCD(19,23):


t x y
Initially -- 19 23
After 1 round 19 23 19
After 2 rounds 4 19 4
After 3 rounds 3 4 3
After 4 rounds 1 3 1
After 5 rounds 0 1 0
Output: 1
.... Recursively ‫مو‬K‫▪ ةي مزراوخلا يا ه بتكن نك م‬
▪Algorithm:
GCD(x, y)
{
if y = 0 return x
else return GCD(y, x mod y)
}
https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪18‬‬

‫‪ Algorithm Efficiency:‬‬

‫ال‪ K‬ن ‪K‬ع‪ K‬ي‪K‬كحبعجربت‪KK‬اد ًيلسالب‪ 1.2‬ن‪KK‬م‪ K‬ءزج رخآب‪Algorithm Efficiency‬‬ ‫‪-‬‬
‫لمعن اندب ليككحب ‪ Sort‬ال ن‪K‬م نيعم ددعل ‪ Items‬مدختسن حرو ‪ Algorithms‬فوشنو ‪2‬‬ ‫‪-‬‬
‫عوضو ملا لص’ فنو م هنيب لضفلأا نيم ‪...‬‬

‫‪ Insertion sort‬‬


‫‪ Merge Sort‬‬

‫▪ ‪ :Insertion Sort‬ال‪ K‬وشانفرعو ل‪ K‬تغشبف‪KK‬يك وشانفرعو رشتكرتساتادالبهانذخأ ‪Time‬‬


‫و‪K‬ه‪ K‬ي‪K‬لالةياهنالبانعم‪ K‬علط ي‪K‬لالهبعت‪f(n) = c1 * n2‬‬
‫ال‪ c1 K‬ب ة‪K‬ق ًلع‪ K‬هال ا‪K‬م‪ K‬ت ‪K‬باثالا‪K‬ذ‪K‬ه‪K‬و ت ‪K‬باثو‪K‬ه‪ n K‬ال‪ K‬وأ ا‬
‫ت‪KK‬وبنالمجح ي‪KK‬ه‪ K‬ي‪K‬لال‪.Size of Input‬‬

‫شكترس اتادالب هانملعتا وضرب‬


‫▪ ‪ :Merge Sort‬ىتحل اهيف لتغشب يلال ةقيرطال فيك انفرعو رت‬
‫ل‪K‬معي‪ Sorting‬ال‪ K‬هنإ انفرعو ‪،‬رصانعلل‪ Time‬و‪K‬ه‪ K‬قهرتغسبي‪K‬لال‪f(n) = c2 * n * logn‬‬
‫‪K‬ال‬
‫ال‪ c2 K‬ب ةقلًع هالا م تباثلا اذ هو ت‪KKK‬باث و ه وضرب ‪ n‬توبنلاا مجح ي ه يل ‪.‬‬

‫‪- Note: Insertion sort usually has a smaller constant factor than merge‬‬
‫‪sort: i.e. c1 < c2‬‬
‫ال عم يلال تباثال ةداع ليككحب ‪ Insertion Sort‬ال عم دوجومال تباثال ن‪K‬م لقأ نوكب‬ ‫‪-‬‬
‫‪.Merge‬‬

‫ديااو انتق ه ز كارت بولطملا وش ن ‪K‬لآا ب‪KKK‬يط ‪...‬‬

‫‪ -‬ل‪K‬معناندب‪ Sorting‬ال‪ K‬ن‪KK‬م‪ )610( K‬ل ‪ Items‬رابتعا ى‪KK‬لع‪، K‬رصنع‪ K‬ن‪K‬ويلم‪ K‬ب‪KK‬ترناندبي‪K‬نعي‬
‫ال‬
‫ي‪K‬ال‪:‬‬
‫ت‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
‫‪19‬‬

‫‪• Assume that‬‬


‫‪ c1 = 2‬‬ ‫‪and‬‬ ‫‪c2 = 50‬‬
‫‪• Thus‬‬
‫‪ Insertion sort takes 2n2 instructions to sort n items‬‬
‫‪ Merge Sort takes 50 n‬‬ ‫‪to sort n items‬‬
‫)‪lg(n‬‬

‫لمعن حر ‪ Run‬لل ‪ Algorithms‬نيفتلخ م ‪ 2‬‬ ‫‪-‬‬


‫بوساحلا وأ رتويب مكلا سفن ىلع ‪:1-‬‬

‫▪ ال‪ K‬هنإ ي‪ً K‬قلنح‪K‬ر ‪ Merge Sort‬ال‪K‬و رصنع‪ K‬ن‪K‬ويلم‪ K‬ب‪K‬تيترلةدحاو ةيناثق‪K‬ر تغسا ‪Insertion‬‬
‫بةيناث‪ 2000‬ق‪K‬ر تغسا ‪ Merge Sort‬ة‪K‬الحالي‪KK‬اهبعرسأ ن‪KK‬اك‪.‬‬ ‫ال‬
‫ي‪K‬ال‬
‫ال‪ K‬ت‬

‫ثيحب نيفلتخ م نيبوساح ىلع ‪:2-‬‬


‫لا لغشن ح‪K‬ر ‪ Merge Sort -‬زا هج ىلع )‪ )A‬هتعرس )‪.(107‬‬
‫‪ -‬ال‪ K‬ل‪K‬غشنح‪K‬ر ‪ Insertion Sort‬ز‪K‬ا‪K‬هج ى‪KK‬لع‪ )B( K‬ن‪KK‬م‪ K‬عرسأ )‪ )A‬هتع‪K‬رسو ة‪K‬ر‪K‬م‪ 100 K‬ب‬
‫(‪.)109‬‬
‫أل‬
‫زاهجال ىلع عرسألا ةيمزراوخالو ‪،‬عرسألا زاهجال ىلع أطب ا‬
‫‪ -‬ةيمزراوخال لغشي هدب ينعي‬
‫ئ‪K‬طبأل) ‪....‬‬
‫‪K‬ساسأل ل‪KK‬ماعالش‪K‬يا ف‪KK‬وشيى‪K‬تح ا‬
‫بتوال ر‪K‬و‪K‬هظ ة‪K‬عرسديدحتلي‪ K‬ا‬
‫ارتاق‪K‬باسهانركذ( ت‪KK‬و ا‬
‫ا‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬
20

- By using algorithm whose running time grows more slowly,


Computer B runs 20 times faster than Computer A.

 For ten million numbers:


▪Insertion sort takes  2.3 days.
▪Merge sort takes  20 minutes.
‫ قرغتسا‬20 ‫ةقيقد‬، ‫ رثكأو عرسأ الزي ال هنكل ةرماله أطبأ ناك حيحص‬Merge Sort ‫ال‬
-
.Insertion Sort ‫ ةءافك‬K‫م‬KK‫ال ن‬
.Computer ‫يلو‬K‫عرسس‬K‫ ة‬K‫ ال‬Algorithm‫نعمب‬K‫وكيمزال انزيكرتى‬K‫ ن‬K‫لع‬KK‫عرسى‬K‫ ة‬K‫ال‬ -

 Merge sort is faster than insertion sort for large input sizes.
Some algorithms might be always (for all n values) faster than
the other algorithm.
▪Examples:
algorithm A: takes 4n2
algorithm
AlgorithmB:
A takes 3n3 +faster
is always 2n (takes less steps) than algorithm B.

https://web.facebook.com/groups/IntelligenceGroup.CS/
‫‪21‬‬

‫▪ ال ضعب هنإ ليككحب ‪ Algorithms‬الف قوف روكذمال الثمال يز اهريغ ن‪K‬م عرسأ اما ئاد نوكتب‬
‫)‪ Algorithm (A‬ن‪K‬م عرسأ اما ئاد ‪ B‬تمدختسا ءاوس الثمال اذهب ‪ Input‬يأ ف ‪،‬ريغص وأ بيرك‬
‫‪ Input‬ة‪K‬يمزراوخ ى‪KK‬لع‪ K‬هتلخدأ اذإ ن‪KK‬اك ا‪K‬م‪K‬ه‪K‬م‪ A K‬و ‪ B‬لعطتح‪K‬ر اما ئ‪KK‬اد ف ‪ A‬عرسأ ‪...‬‬

‫‪Some algorithms might be faster than the other algorithm after‬‬


‫‪specific point.‬‬
‫‪▪Examples:‬‬
‫‪algorithm A: takes 3n3‬‬
‫‪algorithm B: takes 20n2‬‬
‫‪Algorithm B is faster (takes less steps) than algorithm B for all values starting‬‬
‫‪from n=8.‬‬

‫▪ دنع عرسأ نوكت تبلش‬


‫ب امنإ ‪،‬اما ئاد ش‪K‬م نكلو اهريغ ن‪K‬م عرسأ نوكتب تايمزراوخال ضعب كليكحبو‬
‫ةنيعم ةطقن‪.‬‬

‫ةيمزراوخ ف ‪،‬روكذمال الثمال يز ‪ B‬ن‪K‬م عرسأ اما ئاد ش‪K‬م ‪ A‬ال هنإ مغرال ىلع ‪ Time‬لقأ اهعبت‬ ‫‪-‬‬
‫ن‪KK‬م‪.A K‬‬

‫‪ -‬ت‪KKK‬ذخأ ول ًلا ث‪K‬مف‪ n=1‬ك‪K‬دنع‪ K‬ن‪KK‬اك ي‪K‬نعي‪ input‬ة‪K‬يمزراوخ ي‪ً K‬قلتح‪K‬ر ةلداعمالبض‪K‬وعتو ‪،‬طقفدحاو ‪A‬‬
‫ن‪K‬م عرسأ ‪ B‬تضوع ولو ‪ n=2,n=3……..n=7‬هنإب مهلك مهي ًقلت حر ف ‪ A‬ن‪K‬م عرسأ ‪ ،B‬سب‬
‫ال‪ K‬ا‪K‬م‪ K‬درجمب‪ Input‬هنإ ظح ًلتو رهظية‪K‬عرسالق‪K‬رفشبليح‪K‬ر ‪،‬رثكأف‪ 8‬يرصي‪ B‬ن‪KK‬م‪ K‬عرسأ ‪.A‬‬

‫‪ Faster at some pointes does not necessary means more efficient.‬‬
‫‪ -‬يز ‪،‬اهريغ ن‪K‬م ةءافك رثكأ اهنإ ينعي ال ا‪K‬ذ‪K‬ه طاقنال ضعب دنع ةعيرس نوكت ةيمزراوخال هنإ ليككحب‬
‫امل ‪،‬قوف يلال الثمال ‪ n‬ةيمزراوخال تناك ‪ 8‬ن‪K‬م لقأ تناك ‪ A‬اهنع يكحب ا‪K‬م كلذ عمو نكلو ‪،‬عرسأ‬
‫ن‪KK‬م‪ K‬ةءافك رثك‪K‬أ ‪ B‬يقطن م اذ هو ‪...‬‬
‫ةياهنالى‪KK‬إل‪ 35‬د ًيلسن ‪K‬م‪ K‬ت‪KK‬اديًلسالةقيب‪ ‬ويروفزإ‪ K‬س‪K‬يذ‪.‬‬
‫‪#Intelligence_Group‬‬
‫‪By: Albara Fwaz‬‬
‫‪https://web.facebook.com/groups/IntelligenceGroup.CS/‬‬

You might also like