ماهى الخوارزميات
اذا كنت قد قضيت بعض الوقت مع البرمجه فلابد وانك سمعت عن الخوارزميات فهى عباره عن طريقه حل مشكله ما
فعندما تقوم باعداد كوب من الشاى فانك تقوم بتطبيق خوارزميه , لانك تقوم بوضع اوراق الشاى فى الماء ثم القيام بغليها
ثم وضع السكر فى الكوب واخيرا وضع الشاء فى الكوب .
اذا الخوارزميات هى عباره عن الخطوات المتبعه لحل مشكله ما فى هذا المقال نقوم باستعراض اشهر تلك الخوارزميات.
Sort Algorithms
تعتبر خوارزميه الترتيب هى من اكثر الخوارزميات دراسه و بحث فى مجال علوم الحاسب , الهدف منها هو ترتيب عده
عناصر بترتيب معين . كل لغات البرمجة لديها طريقتها الخاصه فى الترتيب .
بعض اشهر خوارزميات الترتيب هى :
- Merge Sort
- Quick Sort
- Heap Sort
- Bubble Sort
مثال : الترتيب بحسب السعر أو الشعبيه فى المواقع التجارية.
Search Algorithms
تقوم هذه الخوارزميه بالبحث عن عنصر معين فى مكان ما ومن اشهر الأمثلة عليها هو ما يعرف بالبحث الثنائى أو
Binary search فهى تقوم بتقسيم العناصر إلى النصف عده مرات الى ان يتم ايجاد العنصر المراد ومن تطبيقاتها
عندما تقوم بالبحث عن اسم ملف مثلا مقطع فيديو معين فهو يقوم بالطريقه السابقه إلى ان يتم أيجاده.
Depth/Breadth First Search
تستخدم فى البحث ولكن فى ال Data structure وهى من الدول المفيده والمهم جدا ومن اهم تطبيقاتها
- فى البحث عن المعلومات فى محركات البحث Crawling
- فى الذكاء الاصطناعى فى بناء الروبوتات مثل الروبوت ألذي يلعب شطرنج
- أيجاد اقصر الطرق بين نقطتين وحل المتاهات
Hashing
حاليا من اكثر الخوارزميات المستخدمه فى ايجاد عنصر ما عن طريق المفتاح الخاص به Key/Value pair
يعرف أيضا باسم القاموس أو Dictionary ويقوم بربط كل قيمه تريد حفظها بمفتاح معين لذلك عن البحث عن قيمه
معينه كل ما عليك هو استخدام المفتاح وهى اسرع بكثير من Sort + Search لإيجاد عنصر ما, من اهم التطبيقات
- فى ال router لتسجيل IPs
- للتاكد من وجود قيمه معينه فى List حيث أن ال Linear search سيأخذ وقت كبير يتناسب مع عدد العناصر
Dynamic Programming
تستخدم هذه الخوارزمية لحل المشاكل المعقدة عن طريق تكسيرها إلى أجزاء اصغر , نحل المشاكل الصغيرة نتذكر
حلها جيدا ثم نحل المشاكل الأكبر بسرعه مثال :
ما مجموع 1+1+1+1+1 , ستعدها وتقول 5 ولكن إذا قلت لك اضف واحد ماذا يكون العدد ستجاوب على الفور 6
بدون العد مره أخرى كيف فعلتها ؟ انت فقط قمت بإضافة واحد على العدد الذي تتذكره في المشكلة السابقة بدون العد مره
أخرى ال Dynamic Programming تقوم بنفس الطريقة لحل المشكلات الكبيرة .
Exponentiation by squaring
اذا اردت ان تحسب 232 كل ما ستفعله هو ان تقوم بعمل loop ل 32 مره لإيجاد الحل , ماذا إذا قلت لك انك يمكنك الحصول
على نفس الجواب بعمل loop ل 5 مرت فقط . هذه الخوارزميه تستخدم لايجاد الحل لرقم مرفوع لقوى كبيره فى وقت صغير جدا
O(log N) (إذا أردت أن تفهم معنى الوقت السابق هذا الموضوع سيفيدك )
String Matching and Parsing
واحده من اهم الخوارزميات تستخدم للبحث عن مقطع معين فى نص ضخم , فعندما تستخدم Ctrl +F فانك تقوم بالبحث عن نص ضخم
في الملف باستخدام هذه الخوارزمية , الجدير بالذكر هو أن هذه الخوارزمية تستخدم أيضا خوارزمية ال Hashing لتسريع عمليه البحث .
Primality Testing Algorithms
تستخدم لتحديد إذا ما كان رقم معين اولى ام لا من اهم تطبيقاتها
- التشفير
- تستخدم أيضا في ال Hashing