0% found this document useful (0 votes)
5 views20 pages

1lecture 1

ملخص
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)
5 views20 pages

1lecture 1

ملخص
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/ 20

‫‪Algorithms and Data Structures‬‬

‫كلية الهندسة الميكانيكة و الكهربائية‬


‫السنة الثالثة تحكم \ إلكترون‬
‫د‪ .‬فادي تركاوي‬
‫مقدمة‬
‫في السنوات األخيرة‪ ,‬إن مادة البرمجة أصبحت فرع‬ ‫‪‬‬
‫أساسي لنجاح العلوم و المشاريع الهندسية و للمعالجة‬
‫العلمية و التمثيل الهندسي‬
‫أخطاء البرمجة يمكن تالفيها بجعل المبرمجين مدركين‬ ‫‪‬‬
‫للطرق و التقنيات التي يتم إتباعها لبرمجة برنامج ما و‬
‫خصوصا بالبرامج الضخمة المعقدة التي تتضمن مجموعات‬
‫معقدة من البيانات أو بنى المعطيات‬
‫يمكن إعتبار الخوارزميات فرع من فروع الرياضيات أو‬ ‫‪‬‬
‫علوم الكمبيوتر‬
‫مقدمة‬

‫في الثالثيات من القرن العشرين‪ ,‬الرياضيين بدؤوا بوضع‬ ‫‪‬‬


‫نموذج رياضي يعبر عن دراسة العالقات الرياضية التي‬
‫تعبر عن الخوارزميات‪.‬‬
‫الهدف وراء هذه الرغبة هو للتغلب على مشكلة و قيود‬ ‫‪‬‬
‫مصادر الحاسب المحدودة‪ .‬هذه القيود دفعت بعلماء الحاسب‬
‫باإلضافة للرياضيين للتركيز على أداء البرامج و التركيز‬
‫على تصميم فعال لخوارزميات الحاسب‪.‬‬
‫و ألهمية هذه المادة في علم الحاسب يعرف ‪Donald‬‬ ‫‪‬‬
‫‪ E Kuth‬علم الحاسب بعلم دراسة الخوارزميات‪.‬‬
‫الخوارزمية و البرنامج‬

‫الخوارزمية‪ :‬هي عملية أو مجموعة من القواعد المستخدمة‬ ‫‪‬‬


‫لحساب أو حل مشكلة و خاصة في مجال الحوسبة‬
‫اإللكترونية‬
‫البرنامج‪ :‬هو سلسلة من التعليمات البرمجية للتحكم بعمليات‬ ‫‪‬‬
‫الكمبيوتر أو اآلالت البرمجية‬
‫البرنامج هو تمثيل دقيق لخوارزمية مجردة مبنية على‬ ‫‪‬‬
‫تمثيل محدد لبنى المعطيات‬
Program and Algorithm

 Algorithm: a process or set of rules


used for calcuation or problem
solving esp. With computers.
 Program: a series of coded
instructions to control the operation
of a computer or other machine.
‫ إليجاد القاسم المشترك األكبر‬Example
 Problem: Find the greatest common divisor
(GCD) of two integers, m and n.
Euclid's Algorithm:
⚫ while m is greater than zero: If n is greater than m,
swap m and n. Subtract n from m. n is the GCD
 Program (in C):
⚫ int gcd(int m, int n)
⚫ /* precondition: m>0 and n>0. Let g=gcd(m,n). */
⚫ { while( m > 0 ) { /* invariant: gcd(m,n)=g */
⚫ if( n > m ) { int t = m; m = n; n = t; } /* swap */
⚫ /* m >= n > 0 */
⚫ m -= n; } return n; }
‫القاسم المشترك األعظم للعددين ‪ 11‬و ‪ 20‬هو ‪1‬‬ ‫‪‬‬
‫وفق البرنامج ستكون النتيجة كاآلتي‪)2,9( )9,11( )11,20( :‬‬ ‫⚫‬
‫(‪)0,1( )1,1( )1,2( )3,2( )5,2( )7,2‬‬
‫القاسم المشترك اآلعظم للعديدن ‪ 12‬و ‪ 4‬هو ‪4‬‬ ‫‪‬‬
‫(‪)0,4( )4,4( )8,4( )12,4‬‬ ‫⚫‬

‫الفرق بين البرنامج و الخوارزمية بأن الخوارزمية يجب أن‬ ‫‪‬‬


‫تتوقف بعد فترة من الوقت بينما البرنامج من الممكن بأن‬
‫يبقى في حلقة غير منتهية‬
‫التجريد ‪Abstraction‬‬

‫لحل مشكلة ما فإنه (بإستخدام الكمبيوتر أو غيره) فإنه من‬ ‫‪‬‬


‫الضروري بأن نختار طريقة للتجريد من الواقع و هذا يعني‬
‫بأن يتم تعريف مجموعة المعلومات (‪ )Data‬التي تمثل‬
‫الحالة الواقعية للمعلومات‪.‬‬
‫خصائص الخوارزميات‬
‫الحتمية‪ :‬يجب أن يحدد بشكل حتمي و قطعي ماذا يجب أن‬ ‫‪‬‬
‫تكون نتيجة الخوارزمية‬
‫الفعالية‪ :‬كل خطوة يجب أن تكون في وقت محدد لها‬ ‫‪‬‬
‫النهاية‪ :‬الخوارزمية يجب أن تنتهي بعد وقت محدد من‬ ‫‪‬‬
‫العمليات‬
‫بمعنى آخر يجب أن تتطلب الخوارزمية في كل خطوة عدد‬ ‫‪‬‬
‫محدد من التخزين و وقت محدد من أجل اإلنهاء وهنا ندخل‬
‫لمصطلح التعقيد الزمني و المكاني لدراسة سلوك‬
‫الخوارزمية‬
Examples
‫اللغة المعتمدة‬

‫‪ Moore’s law‬الذي يقول بأن حجم و سرعة أنصاف‬


‫النواقل يتضاعف بشكل منتظم كل ‪ 18‬شهر منذ بداية‬
‫التصميم األولي للشرائح اإللكترونية‬
‫‪ ‬تضاعف القدرات الحاسوبية مع الزمن هذا يعني بأن زمن‬
‫تنفيذ البرنامج يتناقص و بالتالي السرعة التنفيذ تزداد‬
‫الكود المزيف الوهمي ‪Pseudo code‬‬

‫الهدف من هذا الكود هو سهولة القراءة من قبل البشر و‬ ‫‪‬‬


‫ليس لكي تنفذ من قبل الكمبيوتر (ليست لغة برمجة)‪.‬‬
‫الهدف هو التعبير عن الخوارزمية بشكل واضح‬ ‫‪‬‬

‫ال يوجد قاعدة لكتابة الكود الوهمي (كل يكتب طريقته)‬ ‫‪‬‬

‫إستقالل الخوارزمية عن لغة البرمجة قد تكتب الخوارزمية‬ ‫‪‬‬


‫بلغة ال ‪Pseuocode‬‬
‫‪C‬‬
‫طورت اللغة من قبل ‪ Dennis Ritchie‬في عام ‪1972‬‬ ‫‪‬‬
‫وسميت ‪ C‬لسبب أن لغة تدعى ‪B‬كانت موجودة‬
‫المشكلة‪ :‬لغة ‪ C‬ال تفهمها اآللة إذا َ علينا كتابة برنامج يحول الكود‬ ‫‪‬‬
‫إلى كود تفهمه اآللة و هو ‪ ...........‬و الكود النهائي هو عبارة عن‬
‫واحدات و أصفار‬
‫لتعلم لغة ال ‪ PRACTICE C‬القراءة ال تكفي يجب الحصول على‬ ‫‪‬‬
‫مترجم لغة ال س و لن تتعلم إال في حال تكرر اآلخطاء‬
‫للحصول على مترجم لغة ال س هناك الكثير من المصادر‬ ‫‪‬‬

‫لماذا يجب تعلم لغة ‪ C‬؟ ‪JAVA, C++‬‬ ‫‪‬‬


‫المعايير ‪Criteria‬‬
‫لحل مسألة ما قد نجد عدد كبير من الخوارزميات تعطي هذا الحل‪.‬‬ ‫‪‬‬

‫الفروق بين الخوارزميات هي الكفاءة و الفعالية‬ ‫‪‬‬

‫من المعلوم أن معظم المشاكل يتم محاولة حلها باستعمال الحاسوب‪,‬‬ ‫‪‬‬
‫ومع التطور التقني تتطور سرعة األداء ويصبح الحاسوب قادرا على‬
‫إجراء عمليات أكثر تعقيدا‪ ,‬لهذا وجب تحديد تعريف مستقل عن‬
‫التقنية‪ ,‬مرتبط فقط بالخوارزميات‬
‫إذن نعرف الزمن هنا على أنه عدد العمليات األولية التي يحتاجها‬ ‫‪‬‬
‫برنامج (خوارزمية) إلجراء العمليات‬
‫إستخدام موارد الحاسب في تنفيذ البرنامج‬

‫يتطلب تنفيذ خوارزمية على حاسوب إستخدام الموارد‬ ‫‪‬‬


‫(المعالج‪ ,‬الذاكرة المركزية‪ ,‬الذاكرة المحيطية)‪ .‬و يعتمد‬
‫تنفيذ خوارزمية على عامليين أساسيين‪:‬‬
‫زمن التنفيذ هو الزمن الالزم لتنتهي الخوارزمية من إنجاز كافة‬ ‫⚫‬
‫التعليمات (و يهمنا هنا كم عدد الخطوات أو ما يقابلها من الزمن‬
‫الالزم لحل المسألة)‪.‬‬
‫حجم الذاكرة الالزمة لتخزين البرامج و المعطيات التي يعالجها‬ ‫⚫‬
‫(حجم الذاكرة الالزمة لحل المسألة)‪.‬‬
‫مثال على حساب حساب متوسط عدد‬
‫‪ ‬إليجاد تابع التعقيد للمعادلة‬
‫‪ f(n)=4n+5‬نجد أن هذا التابع تابع من الدرجة األولى‬
‫‪ ‬التعيقد المقارب ‪Complexity Asymptotic‬‬
‫نجد أن ‪f(n)=n‬هي التعقيد على إعتبار (على اعتبار عدد‬
‫المعطيات ‪ n‬كبيرا ً نهمل الحدود الصغيرة ونهتم فقط بالحد‬
‫األعلى‪ ،‬كما نهمل الثوابت الضربية للحد األعلى(‬
‫‪ f(n)=5n3 + 6n +1‬التعقيد المقارب هو ‪n3‬‬
‫(بشكل عام نهتم فقط بإيجاد التعقيد المقارب )‬
 The number of steps an algorithm
requires to solve a specific problem
is denoted as the running time of
the algorithm. The notion of a step
refers to an underlying machine
model. The machine must be able
to execute a single step in constant
time.
‫‪‬‬
‫;‪int sum = 0‬‬
‫( ‪for ( int i = 1; i =< n;++ i‬‬
‫;‪sum =+ i‬‬

‫تنفذ مرة واحدة‪sum = 0, i = 1.‬نالحظ أن كل من العمليات‬


‫مرة‪ n‬فتنفذ ‪i =< n, i++, sum += i‬أما العمليات‬
‫وبالتالي تابع التعقيد لهذه الخوارزمية هو‬
‫‪f(n) = 3n + 2‬‬

You might also like