<< العودة English

رحلة مع الخوارزميات: من الغابة المظلمة إلى النور الساطع!

هل تساءلت يومًا كيف تُصمم برامجنا ليُشغلها الحاسوب بسرعة وكفاءة، وكيف يُمكننا ضمان عملها بشكلٍ سليم؟

تخيّل أنك تائه في غابة مظلمة، تُحاول إيجاد الطريق للخروج. تُحاول أن تتذكر كل منعطفٍ، كل شجرةٍ، كل صخرةٍ، لتُحاول رسم خريطة ذهنية للوصول إلى وجهتك.

هنا يأتي دور الخوارزميات، تلك الأدوات العجيبة التي تُمكننا من "رسم" المسارات في عالم البرامج، والتي تجعل رحلتنا عبر الغابة الإلكترونية سهلةً وسريعة.

مفهوم التّعقيد:

تُصنف الخوارزميات حسب التّعقيد الزّمني و التّعقيد المكاني.

الوقتُ كنزٌ ثمين:

تُشبه الخوارزميات السريعة قطارًا سريعًا يقطع المسافة في دقائق، بينما تُشبه الخوارزميات البطيئة سفينةً تُحمل بكميةٍ هائلة من البضائع و لكنّها تُسافر ببطء شديد.

يُمكننا تصنيف الخوارزميات حسب وقت تنفيذها إلى:

التّعقيد المكاني: حدودُ الذاكرة:

تُشبه الذاكرة في الحاسوب خزانةً تحتوي على مساحةٍ محدّدةٍ لوضع البيانات فيها. تُحدّد الخوارزمياتُ كمية الذاكرة التي تُحتاجها، و تُصنفُ حسب قدرتها على تخزين البيانات إلى:

إضاءةٌ جديدة:

تُساعدنا معرفةُ تعقيد الخوارزميات على اختيارِ أفضلِ الحلولِ لمشكلاتنا. فمثلاً، عند تصميمِ تطبيقٍ لألعابِ الموبايل، نُختارُ خوارزمياتٍ سريعةً لتقديمِ تجربةِ لعبٍ سلسةٍ، و نُختارُ خوارزمياتٍ ذاتِ ذاكرةٍ محدّدةٍ لتقليلِ حجمِ التطبيقِ.

رحلةٌ مستمرةٌ:

تُعدّ رحلةُ تعلمِ الخوارزمياتِ رحلهٌ ممتعةٌ وتُثري فهمنا للعالمِ الرقميّ. من خلالِ دراسةِ التّعقيدِ الزّمنيّ و التّعقيدِ المكانيّ، نُصبحُ أكثرَ وعيًا بكيفيةِ عملِ البرامجِ و نُصبحُ أقدرَ على تصميمِ تطبيقاتٍ أكثرَ كفاءةً.

شاركَ في رحلتنا!

انضمّ إلينا في رحلةِ اكتشافِ عالمِ الخوارزمياتِ!

بعض الأمثلة العملية:

1. الخوارزمية الخطّية:

# إيجاد أصغر عدد في قائمة 
def find_smallest(numbers):
    smallest = numbers[0] # نفرض أن العنصر الأول هو الأصغر
    for number in numbers: # نمر على جميع العناصر في القائمة
        if number < smallest: # اذا وجدنا عدد أصغر
            smallest = number # نحدث أصغر عدد 
    return smallest # نعيد أصغر عدد 

numbers = [5, 2, 8, 1, 9]
print(find_smallest(numbers)) # يطبع 1 

في هذه الخوارزمية نمر على جميع العناصر في القائمة، مما يجعلها خطية.

2. الخوارزمية اللوغاريتمية:

# البحث عن عنصر في قائمة مرتبة
def binary_search(numbers, target):
    low = 0
    high = len(numbers) - 1
    while low <= high:
        mid = (low + high) // 2
        if numbers[mid] == target:
            return mid
        elif numbers[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1 

numbers = [1, 3, 5, 7, 9]
target = 7
print(binary_search(numbers, target)) # يطبع 3 

هذه الخوارزمية تعمل على تقليل نصف مساحة البحث في كل تكرار، مما يجعلها لوغاريتمية.

3. الخوارزمية الأسيّة:

#  حساب  n!
def factorial(n):
    if n == 0: #  نسبة القاعدة
        return 1
    else:
        return n * factorial(n-1) # تكرار 

print(factorial(5)) # يطبع 120

هذه الخوارزمية تتكرر n مرات، مما يجعلها أسيّة.

الخلاصة:

يُعتبر تعلمُ الخوارزمياتِ من أهمّ الأسسِ لبناءِ تطبيقاتٍ ناجحةٍ، و تعرفُ التّعقيدِ الزّمنيّ و التّعقيدِ المكانيّ يُمكننا من اختيارِ الخوارزمياتِ المناسبةِ للمشكلاتِ التي نُواجهُها.