Alpha-BITs
Engineering Tutorials and Talks.
30/07/2022
جزء أساسي من عمل مهندس البرمجيات في أي مجال بما فيهم الإمبديد هو حل المسائل، و دا من الحاجات اللي بتميز مهندس البرمجيات، إنه مش بس قادر يكتب كود يقوم بوظيفة معينة، لا هو كمان قادر يلاقي الطريقة الأمثل للقيام بالوظيفة دي، أو كما يسميها أغلب الناس "خوارزميات".
.
المسائل في العادة بيكون ليها أكتر من طريقة أو خوارزمية للحل، والخوارزميات دي مش زي بعضها في الأداء، هنا يظهر سؤال مهم وهو "إزاي نعرف نفاضل ما بين الخوارزميات ونطلع بأفضل واحدة بينهم؟"
.
والاجابة ببساطة إننا بنقيس أداء الخوارزمية على محكين: الزمن ومساحة الذاكرة، وببساطة الخوازمية اللي بتاخد وقت أقل بتكون أفضل في السرعة، والخوارزمية اللي بتستهلك مساحة أقل بتكون أفضل في التوفير، وعلى حسب انا محتاج سرعة ولا محتاج توفير بأقدر أقرر هاخد مين..
.
بردو عشان تكون عارف المصطلحات، تقييم السرعة بيتم من خلال حاجة اسمها time complexity.
وبيتم تقييم استخدام المساحة عن طريق space complexity.
.
دا كان مقدمة للي عاوز اتكلم عنها انهاردة، ألا وهي الطريقة البدائية لحل المسائل، يعني أول طريقة حل بتيجي على بالك لما تقابل مسألة، وغالبا الطريقة دي بتديك أسوأ حل ممكن بس بردو في بعض الأحيان بتديك الحل الوحيد الممكن..
.
الـ bruteforcing
أو بالعربي "القوة الغاشمة" هو ببساطة إنك تتغاشم على المسألة لحد ما توصل للي انت عاوزه،
مثال:
لو إديتك مجموعة أرقام وقولتلك عاوز أكبر ناتج ضرب عن أي رقمين في المجموعة، الحل الغشيم هو إنك ببساطة تمسك كل رقم وتضربه ف كل الأرقام الباقية وتحتفظ بناتج الضرب عن كل عملية وبعدين تشوف انهي ناتج هو الأكبر، دا مثال واضح جدا على طريقة الحل الغشيمة.
.
بالرغم من عيوب حلول القوة الغاشمة اللي بيكون أداءها ضعيف لكنها بتمثل مداخل كويسة جدا لحلول أذكى وأفضل وبتنقلنا لمرحلة الحلول الغاشمة المطورة
Optimized Brute Force
.
قياسا على المثال السابق، واحد من الحلول المطورة هو إنك تستخرج أكبر رقمين، وأكيد لما أضربهم ف بعض هيدوني أكبر حاصل ضرب ممكن، كدا بكون وفرت على نفسي عمليات ضرب كتير ملهاش لازمة ومكلفة
دا اللي ممكن نتكلم عليه أكتر في منشورات قادمة إن شاء الله
29/10/2021
تاعتي 🥺🥺❤️
Click here to claim your Sponsored Listing.
Category
Contact the school
Website
Address
Alexandria