- هل يجب على كل مبرمج مبتدئ تعلم الخواريزميات أم أن الخواريزميات هي اشياء غير أساسية؟
هل يجب على كل مبرمج مبتدئ تعلم الخواريزميات؟
الخوارزميات ليست أساسية بشكل عام، إنما تعتمد على طبيعة البرنامج الذي تعمل عليه.
بشكل عام هل علينا تعلم الخوارزميات؟ عليك فهمها بشكل عام حيث أنك تستطيع التمييز بين برنامجين أيهما يقوم بنفس المهمة بشكل أسرع و ايهما يستهلك مواد الذاكرة بشكل اقل و افضل..
لنفرض لديك مصفوفة وهي مكون برمجي يحوي على عدد من العناصر، لنفرض مصفوفة من 1000 عنصر تحوي قيم أعداد عشوائية بين 1 و 100 و نريد البحث عن قيمة متغير ضمنها وليكن 55 فكم عدد الخطوات اللازم للتأكد هل 55 موجود في المصفوقة ام لا.. إن استخدمت خوارزمية بحث خطي ستأخذ 100 محاولة كامبر عدد ممكن قبل معرفة الإجابة. تخيل انه لديك عدد كبير من الاستعلامات و كل منها عن قيمة مختلفة.. ستصبح عدد التعليمات البرمجية اللازمة تقدر ب عدد العناصر والذي هو 1000 مضروبا بعدد الاستعلامات و الذي هو 1000 مثلا لتصبح الخوارزمية تكلف مليون تعليمة برمجية.
نستبدل البحث الخطي بخوارزمية البحث الثنائي binary search فهذه الخوارزمية تقوم بالبحث ضمن مصفوفة مرتبة و بعدد عمليات يحسب ب log n اي لوغاريتم عدد العناصر و log 1000 هو 10 اي اسرع ب 100 مرة من البحث الخطي فقط بحالة 1000 عنصر تخيل لو كان عدد العناصر بالملايين..
البحث الثنائي تقارن العنصر الهدف بالعنصر في منتصف المصفوفة المرتبة ثم تقرر في اي جزء منها سيتم البحث الايمن او الايسر بناءا على قيمة العدد والمقارنة مع العدد في منتصف المصفوفة حيث ان الأعداد في الجزء الايمن أكبر من الأعداد في الجزء الايسر كمثال:
1 4 6 3 7 8 1 3 4 6 7 8
إذا الفرق بين مبرمج يعرف كيف يكتب برنامج و آخر يفهم كيفية كتابة الخوارزمية هو كبير جدا ويؤثر على نوعية البرامج المنجزة لذلك تعلم الخوارزميات إن كنت ترغب بأن تتفوق على المبرمج العادي الذي اكتفى بأساسيات البرمجة.
يوجظ في موسوعة حسوب شروحات عن الخوارزميات يمكنك قرائتها.
التعليقات