خوارزمية

الخوارزميةهي مجموعة من الخطواتالرياضيةوالمنطقيةوالمتسلسلة اللازمة لحل مسألة ما. وسميت الخوارزمية بهذا الاسم نسبة إلى العالم أبو جعفرمحمد بن موسى الخوارزميالذي ابتكرها في القرن التاسع الميلادي. الكلمة المنتشرة فياللغات اللاتينيةوالأوروبية هي «algorithm» وفي الأصل كان معناها يقتصر على خوارزمية لتراكيب ثلاثة فقط وهي:التسلسلوالاختياروالتكرار.
وقد أثُبت أنه لا حاجة إلى تراكيب إضافية. استخدام هذه التراكيب الثلاث يسهل فهم الخوارزميةواكتشاف الأخطاءالواردة فيها وتغييرها.
على الرغم من عدم وجود إجماع رسمي على تعريف مناسب للـ «خوارزمية»، فمن الممكن صياغة تعريف غير رسمي لها عن طريق اعتبارها «مجموعة من القواعد التي تعبر عن سلسلة محددة من العمليات»التي من شأنها أن تشمل جميع برامج الكمبيوتر، بما في ذلك البرامج التي لا تُجرى بها عمليات حسابية رقمية. وبالنسبة لبعض الناس، فإن أي برنامج هو خوارزمية إلا إذا كان يتوقف في نهاية المطاف.بالنسبة للآخرين، فإن البرنامج هو فقط خوارزمية إذا كان ينفذ عددا من الخطوات الحسابية.
وهناك مثال نمطى لخوارزمية هوخوارزمية إقليدسلتحديد الحد الأقصى للقاسم المشترك لعددين؛ وكمثال (هناك أمثلة أخرى) موضحة من قبلالرسم البيانيأعلاه وكمثال في جزء لاحق.
Boolos & Jeffrey (1974, 1999)تقدم معنى رسميا للكلمة في الاقتباس التالي:
مصطلح «قابل للتعداد بلا حدود» يعني معدود باستخدام الأعداد الصحيحة ربما تمتد إلى ما لا نهاية«. وبالتالي، فإن Boolos وجيفري يقولون إن الخوارزمية تعني تعليمات لعملية» خلق«الأعداد الصحيحة الإخراج من عدد صحيح من مدخلات اعتباطية أو الأعداد الصحيحة التي من الناحية النظرية، يمكن اختيارها من 0 إلى ما لا نهاية. وبالتالي خوارزمية يمكن أن تكون معادلة جبرية مثلص = م + ناثنان — إعتباطى» متغيرات المدخلاتمنوالتي تنتج ناتجذ. لكن مختلف المؤلفين حاولوا تعريف مفهوم يشير إلى أن الكلمة تعني أكثر من ذلك بكثير، وهو أمر بناء على أمر من (للمثال بالإضافة إلى ذلك):
ويستخدم مفهوم الخوارزمية أيضا في تعريف مفهومقدرة إتخاذ القرار. هذه الفكرة هي مركزية لشرح كيفيةالنظام الرسميتأتي إلى حيز الوجود بدءا من مجموعة صغيرة منالبديهياتوالقواعد. فيالمنطق، في وقت لا يمكن قياسه، الذي يتطلبه لإكمال خوارزمية كما أنه لا يرتبط على ما يبدو مع البعد المادي العرفي الذي نألفه. من هذه الشكوك، التي تميز العمل الجاري، ينبع عدم توفر تعريف الخوارزمية التي يناسب كلا من الاستخدام المحدد (بمعنى ما) والاستخدام المجرد لهذا المصطلح.
الخوارزميات ضرورية كى تقوم أجهزة الكمبيوتر بتفعيل البيانات بطريقة عملية. كثير منبرنامج الكمبيوترتحتوي على الخوارزميات التي تقوم بتفصيل تعليمات محددة للكمبيوتر التي ينبغي أن تؤدي (في ترتيب معين) للاضطلاع بمهمة محددة، مثل حساب رواتب الموظفين أو طباعة بطاقات تقارير الطلاب، وبالتالي، يمكن اعتبار الخوارزميات أن تكون أي تسلسل من العمليات التي يمكن محاكاتها من قبل نظامتكامل تورنغ. الكتاب الذين يؤكدون هذه الأطروحة يشملونمنسكي(1967)،سافاج(1987)وجورفيتش(2000):
عادة، عندما تترافق أي خوارزمية مع معلومات المعالجة، تُقْرَأُ البيانات من مصدر المدخلات، وتكتب إلى جهاز إخراج، و / أو تُخزَّن لمزيد من المعالجة. وتعتبر البيانات المخزنة جزءا من الحالة الداخلية للكيان الذي يقوم بأداء الخوارزمية. في الممارسة العملية، تُخزَّن حالة النظام في واحدة أو أكثر منبنية البيانات.
لبعض هذه العملية الحسابية، الخوارزمية يجب تعريف الخوارزمية بطريقة صارمة: محددا الطريقة التي تطبق في جميع الظروف الممكنة التي يمكن أن تنشأ. وهذا هو، فإن أي خطوات مشروطة يجب التعامل معها بمنهجية، كل حالة على حدة؛ وإن معايير كل حالة يجب أن تكون واضحة (ومحسوب).
لأن الخوارزمية هي قائمة دقيقة لخطوات دقيقة، إن ترتيب الحوسبة يعد أمرا بالغ الأهمية لأداء الخوارزمية دائما. وعادة ما يفترض أن التعليمات تكون مدرجة بشكل صريح، وتوصف بأنها تبدأ من «أعلى» والذهاب إلى «أسفل»، وهي الفكرة التي توصف رسميا من قبل أكثرتدفق عناصر التحكم.
حتى الآن، وقد أدت هذه المناقشة لإضفاء الطابع الرسمي على الخوارزمية قد افترضت بناءبرمجة أمرية. هذا هو المفهوم الأكثر شيوعا، ومحاولات وصف المهمة في وسائل منفصلة، «ميكانيكية». فريدة من نوعها لهذا المفهوم من الخوارزميات رسميا هوتعيين (علوم الحاسوب)، وتحديد قيمة المتغير. أنه مستمد من الحدس من «الذاكرة» باعتبارها scratchpad. هناك على سبيل المثال أدناه مثل هذا التعيين بالأسفل.
لبعض المفاهيم البديلة لما يشكل الخوارزمية انظرالبرمجة الوظيفيةوالبرمجة منطقية.
ويمكن التعبير عن الخوارزميات في العديد من أنواع التدوينات، بما في ذلكاللغة الطبيعيةوأشباه الكود،المخططات الانسيابية،دراكون-الرسم البيانيولغات البرمجةأوجداول التحكم(التي تُعالج بواسطةالمترجمين الفوريين).
1-خرائط الانسياب: هو تمثيل مصور للخوارزمية يوضح خطواتحل المشكلةمن البداية إلى النهاية مع إخفاء التفاصيل لإعطاء الصورة العامة للحل.
و يمكن تصنيفها إلى أصناف أربعة هي:
2-الشفرة الوصفية (Pseudocode): وصف الخوارزمية بلغات البشر كالإنجليزية أو الفرنسية أو العربية بطريقة مشابهه للغات البرمجة ولكن بدون أي انتماء لها. البعض يستخدم الكثير من التفاصيل (لتصبح قريبة من لغات البرمجة) والبعض الآخر يستخدم القليل (أي أقرب للغة البشر)... فلا قاعدة معينة لكتابة هذا النوع من الشفرات.
في أنظمةالحاسوب، تمثل الخوارزميات في الأساس صورة منمنطقأعيد كتابته بواسطة (برمجيات) ليصبح أكثر فعالية يمكن استغلاله في الحواسيب والحصول على النتائج (مخرجات) من بيانات معطاة (مدخلات).
هناك أربعة طرق يستعان بها في الخوارزم البرمجي هي:
مثال لحساب 2 أس 50.
وتمكننا من ادخال معادلات معقدة للحاسوب ليقوم بمعالجتها بطريقة آلية.
فائدة هذة الخاصية تظهر خاصة في ترتيب اعداد بطريقة تنازلية أو العكس.
تتابع الاوامر حيث ينفذها جهاز الحاسوب حسب الترتيب.
يُعدّ البحث عن العدد الأكبر في قائمة (غير مرتبة) من الأعداد أحد أبسط الخوارزميات. يتطلب الحل فحص كل عدد في القائمة، بحيث يُفحص عدد واحد في كل خطوة. يمكن صياغة هذه الخوارزمية البسيطة بلغة برمجية عليا كما يلي:وصف عالي المستوى:
تظهر خوارزمية إقليدس في المسألة الثانية من كتابه («نظرية الأعداد الأساسية»).يعرض إقليدس المسألة: «إذا كان لدينا عددان أوليان فيما بينهما، لإيجاد قياسهما المشترك الأكبر». يقوم بتعريف «العدد [بأنه] متعدد مؤلف من وحدات»:، عدد حسابي، عدد موجب لا يتضمن الصفر. ومن أجل «القياس» فيعني أن نضع قطعة قياس طوليةsبشكل متعاقب (qمن المرات) على طول القطعة الأطولlحتى يتبقى الجزءrأقل من القطعة الأقصرs.في العبارات الحديثة نقول، الباقيr = l - q*s،qهي حاصل القسمة،r«باقي القسمة», الجزء الكسري المتبقي بعد إجراء القسمة.
المثال التالي بلغة بيسك يمثل برنامجاً بسيطاً ينفذ خوارزمية إقليدس:
من المهم كثيرا أن نعرف كم من مورد معين (مثلالوقتأوالتخزين) مطلوب نظريا لخوارزمية معينة. وقد وضعت طرق لتحليل الخوارزميات للحصول على هذه الإجابات الكمية (تقديرات)، على سبيل المثال، خوارزمية الترتيب أعلاه لتقدير الوقت الذي قد تستغرقه في عملية التنفيذ نعبر عنه ب O(n) ، وذلك باستخدام O تدوين كبيرة مع n يمثل طول القائمة (Array). في جميع تعليمات هذه الخوارزمية تحتاج فقط إلى تذكر متغيرين: العدد الأكبر الذي عثرت عليه الى حد الآن، وموقعها الحالي في قائمة المدخلات. لذلك يجب أن نعبر عنها عبر(O(1، أي المساحة المطلوبة لتخزين أرقام المدخلات لا تحصى.
قد تقوم عدة خوارزميات بتنفيذ المهمة نفسها من خلال مجموعة مختلفة من التعليمات في وقت أقل أو أكثر، مساحة، أو جهد من غيرها. على سبيل المثال، خوارزمية البحث الثنائي (binary search) عادة ما تكون أكثر كفاءة وسرعة من البحث المتتابع (linear search) عندما تستخدم لعمليات البحث على القوائم التي رتبت من قبل.
لإضفاء التحسينات الممكنة حتى في بعض الخوارزميات «المبنية بشكل جيد»، وهذاابتكارهام يتعلق بخوارزميات الإف إف تي (التي تستخدم بشكل كبير جدا في مجالمعالجة الصور)، قد تمكن من خفض عدد مرات المعالجة بمعامل يصل إلى 10000 مرة. أثر هذا التسريع إلى تمكينالأجهزة الحاسوبيةالمحمولة (فضلا عن غيرها من الأجهزة) من استهلاك طاقة أقل.