#خوارزميون
@PrograminLovers
مقدمة في أساسيات تصميم الخوارزميات – خوارزميات القوة الغاشمة:
في هذه السلسلة أتحدث عن أحد أساليب تصميم الخوارزميات وهو ما يعرف بالقوة الغاشمة (Brute force)
@PrograminLovers
مقدمة في أساسيات تصميم الخوارزميات – خوارزميات القوة الغاشمة:
في هذه السلسلة أتحدث عن أحد أساليب تصميم الخوارزميات وهو ما يعرف بالقوة الغاشمة (Brute force)
تتميز عملية تحليل الخوارزميات بآلية واضحة ومحددة لتحديد الكفاءة كدالة في حجم المدخلات. وفي المقابل لا توجد آلية ثابتة لتصميم الخوارزميات، وإنما يعتمد التصميم على نوع المشكلة، وقدرة المصمم على توظيف أساليب التصميم المشهورة، أو ابتكار تصاميم ذكية للحصول على أفضل كفاءة للخوارزمية
١ خوارزميات القوة الغاشمة
٢ خوارزميات الاستدعاء الذاتي
٣ خوارزميات فرق تسد
٤ خوارزميات التخطيط الديناميكي
٥ الخوارزميات الطماعة أو الجشعة
٦ خوارزميات التراجع
٧ خوارزميات التفرع والتقييد
٨ الخوارزميات العشوائية
٩ الخوارزميات التقريبية
٢ خوارزميات الاستدعاء الذاتي
٣ خوارزميات فرق تسد
٤ خوارزميات التخطيط الديناميكي
٥ الخوارزميات الطماعة أو الجشعة
٦ خوارزميات التراجع
٧ خوارزميات التفرع والتقييد
٨ الخوارزميات العشوائية
٩ الخوارزميات التقريبية
تحليل كفاءة الخوارزمية:
كما مر معنا سابقا فإن كفاءة الوقت لهذه الخوارزمية هي
O(n) = n
كما مر معنا سابقا فإن كفاءة الوقت لهذه الخوارزمية هي
O(n) = n
* هل يمكن التوصل إلى حل لهذه المشكلة ضمن هاتين الفئتين؟
* الجواب نعم يمكن حلها في وقت ثابت O(n)=1، ولكن بشرط أن تكون المصفوفة مرتبة من الأصغر إلى الأعلى، وعندها نستطيع إيجاد العنصر الأصغر من خلال اختيار العنصر الأول في المصفوفة
* الجواب نعم يمكن حلها في وقت ثابت O(n)=1، ولكن بشرط أن تكون المصفوفة مرتبة من الأصغر إلى الأعلى، وعندها نستطيع إيجاد العنصر الأصغر من خلال اختيار العنصر الأول في المصفوفة
* لكن هذا الحل يتطلب ترتيب المصفوفة أولا، وأفضل كفاءة ممكنة لخوارزميات الترتيب هي O(n)=n log n كما سنرى لا حقا بإذن الله
* بالتالي يمكن اعتبار أسلوب القوة الغاشمة هو الحل الأفضل لهذه المشكلة
* بالتالي يمكن اعتبار أسلوب القوة الغاشمة هو الحل الأفضل لهذه المشكلة
ما مدى فعالية أسلوب القوة الغاشمة في حل هذه المشكلة؟
لتقييم فعالية أسلوب القوة الغاشمة في حل هذه المشكلة نقارن كفاءة الخوارزمية مع فئات الكفاءة الأساسية.
* كفاءة هذه الخوارزمية تقع ضمن فئة الدرجة الثانية
* هناك ٤ فئات أكثر كفاءة من هذه الفئة
لتقييم فعالية أسلوب القوة الغاشمة في حل هذه المشكلة نقارن كفاءة الخوارزمية مع فئات الكفاءة الأساسية.
* كفاءة هذه الخوارزمية تقع ضمن فئة الدرجة الثانية
* هناك ٤ فئات أكثر كفاءة من هذه الفئة
* هل يمكن التوصل إلى حل لهذه المشكلة ضمن هذه الفئات؟
* الجواب نعم يوجد خوارزميات لحل هذه المشكلة في وقت
O(n)=n log n
باستخدام أساليب أخرى لتصميم الخوارزميات كما سيمر معنا لاحقا
* بالتالي نستنتج أن أسلوب القوة الغاشمة ليس هو الحل الأفضل لهذه المشكلة
* الجواب نعم يوجد خوارزميات لحل هذه المشكلة في وقت
O(n)=n log n
باستخدام أساليب أخرى لتصميم الخوارزميات كما سيمر معنا لاحقا
* بالتالي نستنتج أن أسلوب القوة الغاشمة ليس هو الحل الأفضل لهذه المشكلة
تحليل كفاءة الخوارزمية:
* العملية الأساسية الأكثر تكرارا هي عملية الضرب في السطر ٣
* نحسب عدد مرات تكرار هذه العملية وهو (n) فتكون كفاءة هذه الخوارزمية
O(n) = n
* ولكن كفاءة الخوارزميات تحسب كدالة في حجم المدخلات، وحيث أن (n) هو عدد واحد وليس مصفوفة، فإن حجمه يقاس بعدد البت
* العملية الأساسية الأكثر تكرارا هي عملية الضرب في السطر ٣
* نحسب عدد مرات تكرار هذه العملية وهو (n) فتكون كفاءة هذه الخوارزمية
O(n) = n
* ولكن كفاءة الخوارزميات تحسب كدالة في حجم المدخلات، وحيث أن (n) هو عدد واحد وليس مصفوفة، فإن حجمه يقاس بعدد البت
ما مدى فعالية أسلوب القوة الغاشمة في حل المشكلة؟
لتقييم فعالية أسلوب القوة الغاشمة نقارن كفاءة الخوارزمية مع فئات الكفاءة الأساسية
* كفاءة الخوارزمية تقع ضمن الفئة الأسية وهي غير عملية إطلاقا مع زيادة حجم المدخلات (m)
*هل يمكن التوصل إلى حل لهذه المشكلة ضمن الفئات الأقل تعقيدا؟
لتقييم فعالية أسلوب القوة الغاشمة نقارن كفاءة الخوارزمية مع فئات الكفاءة الأساسية
* كفاءة الخوارزمية تقع ضمن الفئة الأسية وهي غير عملية إطلاقا مع زيادة حجم المدخلات (m)
*هل يمكن التوصل إلى حل لهذه المشكلة ضمن الفئات الأقل تعقيدا؟
* الجواب نعم، ولكن الحل يتطلب تصميم خوارزمية أكثر ذكاء باستخدام التخطيط الديناميكي، الذي سيتم شرحه مستقبلا بإذن الله.
* كفاءة الطريقة الثانية هي (log n)، وهي أفضل من القوة الغاشمة
vimeo.com
* كفاءة الطريقة الثانية هي (log n)، وهي أفضل من القوة الغاشمة
vimeo.com
على الرغم من أنه نادرا ما يكون أسلوب القوة الغاشمة مصدرا للخوارزميات الذكية أو الفعالة، لكن لا ينبغي التغاضي عن هذا الأسلوب كاستراتيجية مهمة لتصميم الخوارزميات وذلك للأسباب التالية
١ على عكس الاستراتيجيات الأخرى، فإن القوة الغاشمة قابلة للتطبيق تقريبا على جميع المشكلات
١ على عكس الاستراتيجيات الأخرى، فإن القوة الغاشمة قابلة للتطبيق تقريبا على جميع المشكلات
٢ بالنسبة لبعض المشكلات (الترتيب والبحث وضرب المصفوفات) ينتج عن القوة الغاشمة خوارزميات بكفاءة عملية مقبولة
٣ تعتبر خوارزميات القوة الغاشمة مفيدة في حل الحالات صغيرة الحجم
٤ تخدم خوارزميات القوة الغاشمة كمقياس يمكن من خلاله الحكم على بدائل أكثر كفاءة لحل المشكلة
٣ تعتبر خوارزميات القوة الغاشمة مفيدة في حل الحالات صغيرة الحجم
٤ تخدم خوارزميات القوة الغاشمة كمقياس يمكن من خلاله الحكم على بدائل أكثر كفاءة لحل المشكلة
جاري تحميل الاقتراحات...