ما معنى الخوارزمية؟
الفكرة الأساسية
الخوارزمية طريقة محددة لحل نوع من المسائل، بخطوات وشروط تصل من مدخلات مسموحة إلى النتيجة المطلوبة. الكود هو أحد أشكال تنفيذ هذه الطريقة بلغة برمجة.
الوصف المفيد يحدد المدخلات والمخرجات والافتراضات وقاعدة التوقف. عبارة «اعثر على الإجابة» هدف، لكنها ليست طريقة حل.
حدد المسألة
عندنا قائمة محدودة غير فارغة من أعداد يمكن مقارنتها، ونريد أكبر قيمة. المثال 7 و3 و9 و2، والنتيجة المتوقعة 9.
شرط «غير فارغة» مهم. القائمة الفارغة لا تحتوي أكبر عنصر وفق هذا التعريف؛ يجب رفضها أو تعريف سياسة منفصلة بدل اختراع قيمة بصمت.
اكتب الخطوات قبل اللغة
- اجعل أكبر قيمة حالية مساوية لأول عنصر.
- مر على بقية العناصر.
- إذا كان العنصر أكبر، حدّث القيمة الحالية.
- بعد آخر عنصر، أعد أكبر قيمة وصلت إليها.
| العنصر الذي راجعناه | الأكبر حتى الآن |
|---|---|
| 7 | 7 |
| 3 | 7 |
| 9 | 9 |
| 2 | 9 |
البداية من أول عنصر تجعل الحل مناسبًا لقيم كلها سالبة أيضًا. البداية من صفر لن تعطي نتيجة صحيحة في تلك الحالة.
لماذا تعمل الخطوات؟
بعد كل خطوة، القيمة الحالية هي الأكبر بين العناصر التي مررنا عليها. هذه خاصية ثابتة أثناء التقدم تسمى invariant.
تصح بعد العنصر الأول. وكل مقارنة إما تحافظ على الأكبر أو تستبدله بقيمة أكبر، فتظل الخاصية صحيحة. وعندما تنتهي القائمة، تكون راجعت جميع عناصرها.
هذا شرح أقوى من «جربت المثال واشتغل»، لأنه يربط خطوات الحل بالنتيجة المطلوبة.
الصحة غير السرعة
لو عدد العناصر n، فبعد التهيئة نحتاج n - 1 مقارنة، مع مساحة إضافية ثابتة للقيمة الحالية. هذه ملاحظات عن الطريقة، وليست قياسًا بالثواني على جهاز معين.
مسألة أخرى مثل البحث داخل بيانات مرتبة قد تسمح بطريقة مختلفة. اختر الطريقة بحسب شروط السؤال.
ميّز المفاهيم
الأرقام هي البيانات، وطريقة تمثيل القائمة تخص هيكل البيانات، وإجراءات المقارنة هي الخوارزمية، وبرنامج C أو C++ هو التنفيذ.
يتطلب كورس الخوارزميات في جمال تك هياكل البيانات. قبل التقدم، جرّب عنصرًا واحدًا وقيمًا متساوية وقيمًا سالبة، واشرح سبب توقف الحل وصحة نتيجته.
مراجع وتفاصيل الكورسات
المراجع التالية تساعد على متابعة التعلم. الأمثلة والتمارين في هذا المقال تعليمية، وتفاصيل الكورسات تُراجع من الكتالوج.