لماذا الخوارزميات؟ لأن السرعة تفرق
تخيل أنك تبحث عن اسم في دليل الهاتف:
البحث الخطي (واحد بواحد):
📖 [أحمد] → [باسل] → [جمال] → ... → [يزن]
1 2 3 N خطوة
البحث الثنائي (نصف في كل مرة):
📖 [أحمد ... يزن] → أتجاه النصف الذي يحتوي يزن
كل خطوة تحذف نصف الصفحات!
الفرق بين O(n) و O(log n) هائل عندما n = مليار.
تصوّر O(n) vs O(log n)
n = 1,000,000,000 (مليار)
O(n) — البحث الخطي:
<-------------------------------------------------->
مليار عملية
O(log n) — البحث الثنائي:
<-------->
فقط 30 عملية!
⚠️
O(log n)لا يهتم بحجم المدخلات — يقتلها نصفًا نصفًا.
خوارزميات في حياتك اليومية
Google Maps: تحسب أقصر طريق بين ملايين النقاط في أجزاء من الثانية — تستخدم Dijkstra و A*.
Netflix: توصي بأفلام بناءً على تاريخك — تستخدم تصفية تعاونية (خوارزميات رسم بياني).
محركات البحث: تجيب على استفسارك في 0.5 ثانية — خوارزميات فهرسة وترتيب (PageRank).
التجارة الإلكترونية: تعرض منتجات مشابهة — خوارزميات التجميع (Clustering).
لماذا نقيس الكفاءة؟
بدون تحليل الخوارزميات:
# بطيء جدًا: O(n²) — ١٠٠ عنصر = ١٠٠٠٠ عملية
def find_duplicates_slow(arr):
dups = []
for i in range(len(arr)):
for j in range(len(arr)):
if i != j and arr[i] == arr[j]:
dups.append(arr[i])
return dups
# سريع: O(n) — ١٠٠ عنصر = ١٠٠ عملية
def find_duplicates_fast(arr):
seen = set()
dups = []
for x in arr:
if x in seen:
dups.append(x)
seen.add(x)
return dups
الفرق في الزمن لـ n = 10,000:
O(n²): 100,000,000 عملية → 10 ثوانٍ
O(n): 10,000 عملية → 0.001 ثانية
الخوارزمية مجرد وصفة طبخ
وصفة (خوارزمية) لعمل شاي:
1. املأ الغلاية ماء
2. أشعلها حتى تغلي
3. ضع كيس الشاي في الكوب
4. صب الماء الساخن
5. انتظر 3 دقائق
6. أزل كيس الشاي
نفس الشيء للخوارزمية:
1. استقبل المدخلات
2. نفذ التعليمات خطوة بخطوة
3. أخرج النتيجة في النهاية
الخلاصة
الخوارزميات هي طريقة التفكير قبل أن تكون أكواد. اختر الخوارزمية الصح — وفر وقتًا وذاكرة.
🎯 التالي: الاستدعاء الذاتي (Recursion) — تصوّر وتطبيق.