[مكتبة أجابة] ما هي الخوارزميات ؟ وما علاقة البرمجة بها ؟

1 229 3 5

معلومات واسئلة نخبة ابداعية

من أهم المواضيع

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



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



أنواع الخوارزميات
يوجد عدد كبير من أنواع الخوازميّات، حيث تصف بعض تلك الخوازميّات
المهمّة الخاصّة بها، ويصف البعض الآخر الطريقة التي تُظهر بها تلك المهمّة،
وتختلف اللغة التي تعبّر عن هذه الخوارزميّات من كتابٍ لآخرٍ، ومن شخصٍ لآخرٍ.

بعض اشهر خوارزميات الترتيب هى :

1.Merge Sort
2.Quick Sort
3.Heap Sort
4.Bubble Sort
مثال : الترتيب بحسب السعر أو الشعبيه فى المواقع التجارية.


مبنى البيانات :
في هندسة البرمجيات، فإن بنية البيانات هي طريقة خاصة لتخزين وتنظيم البيانات في الحاسوب بحيث يمكن استخدامها بكفاءة.
تناسب أنواع مختلفة من هياكل البيانات أنواع مختلفة من التطبيقات، وبعضها مخصص بدرجة عالية لبعض المهام المحددة.
على سبيل المثال، الأشجار-ب بشكل خاص مناسبة تماما لتنفيذ قواعد البيانات ، في حين تنفيذ المترجم عادة ما يستخدم
جداول الهاش للبحث عن المعرفات.

وتستخدم هياكل البيانات في كل برنامج تقريبا أو نظام برمجيات. هناك هياكل بيانات محددة تعتبر من المكونات الأساسية
للكثير من الخوارزميات الفعالة، وتجعل من الممكن إدارة كميات ضخمة من البيانات، مثل قواعد البيانات الكبيرة وخدمات الفهرسة
على الانترنت. بعض طرق التصميم الرسمية ولغات البرمجة تأكيد على أهمية هياكل البيانات، بدلا من الخوارزميات، كعامل تنظيم
رئيسي في تصميم البرمجيات.



ان هياكل البيانات تستند عموما على قدرة الكمبيوتر على جلب وتخزين البيانات في أي مكان في الذاكرة، وتحدد بواسطة عنوان -
سلسلة بت من المكن هي نفسها تخزين في الذاكرة وتعالج بواسطة البرنامج. وهكذا فإن السجل ومصفوفة هياكل البيانات تقوم
على حساب عناوين البيانات بواسطة العمليات الحسابية، في حين تستند هياكل البيانات المرتبطة على عناوين تخزين عناصر البيانات
داخل الهيكل نفسه. العديد من هياكل البيانات تستخدم كلا المبدئين جنبا إلى جنب، وفي بعض الأحيان تجمع بطرق غير تافهة
(كما في ربط اكس اور (XOR linking)).



1. Search Algorithms

تقوم هذه الخوارزميه بالبحث عن عنصر معين فى مكان ما ومن اشهر الأمثلة عليها هو ما يعرف بالبحث الثنائى أو
Binary search فهى تقوم بتقسيم العناصر إلى النصف عده مرات الى ان يتم ايجاد العنصر المراد ومن تطبيقاتها
عندما تقوم بالبحث عن اسم ملف مثلا مقطع فيديو معين فهو يقوم بالطريقه السابقه إلى ان يتم أيجاده.





2.Depth/Breadth First Search

تستخدم فى البحث ولكن فى ال Data structure وهى من الدول المفيده والمهم جدا ومن اهم تطبيقاتها
-فى البحث عن المعلومات فى محركات البحث Crawling
-فى الذكاء الاصطناعى فى بناء الروبوتات مثل الروبوت ألذي يلعب شطرنج
-أيجاد اقصر الطرق بين نقطتين وحل المتاهات.




3.Hashing
حاليا من اكثر الخوارزميات المستخدمه فى ايجاد عنصر ما عن طريق المفتاح الخاص به Key/Value pair
يعرف أيضا باسم القاموس أو Dictionary ويقوم بربط كل قيمه تريد حفظها بمفتاح معين لذلك عن البحث عن قيمه
معينه كل ما عليك هو استخدام المفتاح وهى اسرع بكثير من Sort + Search لإيجاد عنصر ما, من اهم التطبيقات
-فى ال router لتسجيل IPs
-للتاكد من وجود قيمه معينه فى List حيث أن ال Linear search سيأخذ وقت كبير يتناسب مع عدد العناصر



4.Dynamic Programming
تستخدم هذه الخوارزمية لحل المشاكل المعقدة عن طريق تكسيرها إلى أجزاء اصغر , نحل المشاكل الصغيرة نتذكر
حلها جيدا ثم نحل المشاكل الأكبر بسرعه مثال :
ما مجموع 1+1+1+1+1 , ستعدها وتقول 5 ولكن إذا قلت لك اضف واحد ماذا يكون العدد ستجاوب على الفور 6
بدون العد مره أخرى كيف فعلتها ؟ انت فقط قمت بإضافة واحد على العدد الذي تتذكره في المشكلة السابقة بدون العد مره
أخرى ال Dynamic Programming تقوم بنفس الطريقة لحل المشكلات الكبيرة .



5.Exponentiation by squaring

اذا اردت ان تحسب 2 اس 32 كل ما ستفعله هو ان تقوم بعمل loop ل 32 مره لإيجاد الحل , ماذا إذا قلت لك انك يمكنك الحصول
على نفس الجواب بعمل loop ل 5 مرت فقط . هذه الخوارزميه تستخدم لايجاد الحل لرقم مرفوع لقوى كبيره فى وقت صغير جدا
O(log N)



6.String Matching and Parsing
واحده من اهم الخوارزميات تستخدم للبحث عن مقطع معين فى نص ضخم , فعندما تستخدم Ctrl +F فانك تقوم بالبحث عن نص ضخم
في الملف باستخدام هذه الخوارزمية , الجدير بالذكر هو أن هذه الخوارزمية تستخدم أيضا خوارزمية ال Hashing لتسريع عمليه البحث .



7.Primality Testing Algorithms
تستخدم لتحديد إذا ما كان رقم معين اولى ام لا من اهم تطبيقاتها
التشفير
تستخدم أيضا في ال Hashing



خوارزميات انتقاء التقسيم
في الحالات حيث تكون ثقوب الذاكرة المعتمدة كبيرة بما يكفي لاحتواء عملية,
يتعين على نظام التشغيل استخدام خوارزمية لانتقاء الثقب الذي سوف تحمل العملية فيه.
وفيما يلي أنواع متعددة من الخوارزميات


1.أول الثقوب ملائمة:
ينظر نظام التشغيل في جميع قطاعات الذاكرة الحرة. تخصص العملية لأول ثقب
يوجد انه اكبر من حجم العملية. وما لم يكن حجم العملية يتطابق مع حجم الثقب
, سيظل الثقب موجودا لكن ينخفض حجمه بفعل حجم العملية.



2.ثاني الثقوب ملائمة:
في حالة أول الثقوب ملائمة, حيث كل البحوث تبدأ عند بداية الذاكرة,
يجري التركيز على الثقوب التي في بداية الذاكرة لأجل التخصيص أكثر منه في نهايتها.
أما خوارزمية ثاني الثقوب ملائمة فتسعى إلى تحسين الأداء بتوزيع البحث بشكل أكثر تساويا
على حيز الذاكرة بكامله. وهو يقوم بذلك من خلال اقتفاء الثقب الذي خصص أخر مرة.والبحث
التالي يبدأ عند ذلك الثقب, لا عند بداية الذاكرة.

3.الثقب الأفضل ملائمة:
يبحث في لائحة الثقوب بكاملها عن الثقب الأصغر الذي يزيد حجمه عن حجم العملية أو يتساوى معه.

4..الثقب الاسوا ملائمة:
في الحالات حيث تجد خوارزمية الأفضل ملائمة المكافئ الأكثر تطابقا , يكون الثقب المتبقي عديم النفع
فعليا لأنه صغير جدا. للحؤول دون نشوء هذه الثقوب عديمة النفع, تعمل خوارزمية الثقب الاسوا ملائمة
بطريقة معاكسة تماما لخوارزمية الأفضل ملائمة, فينتقي دوما الثقب المتبقي الأكبر حجما.







السر العلاقة بين البرمجة والخوارزمية

هل تعلم أن الخوارزميات لها أثر كبير في سرعة تطور مجال البرمجيات و إحداث طفره كبيرة فيه؟ فاليوم
تستطيع البحث في مليارات الملفات في ثوانٍ معدودة وتستطيع حساب كل العمولات البنكية أيضاً في ثوانِ
وهذا يرجع للتقدم الكبير في علم الخوارزميات. و أقربُ مثال لهذا التقدُّم هو الصراف الآلي، هل تذكر تلك
الصُّفوف الطويلة من أجل صرف مبلغ بسيط؟!! قديماً كانت مسألة صرف المرتبات فقط تستهلكُ الكثير من
الوقت والقوى العاملة والأوراق التي تُعبأ يدوياً مع إحتمال وقوع الأخطاء البشرية. لكن اليوم وبفضل الله
ثم الخوارزميات أصبحت عدة ضغطات بالأزرار فتستطع السّحب من حسابك في البنك ويُخصم المبلغ من
رصيدك في ثوان فقط. و لْتعلم أيضاً ان عتاد الحاسب تطور تطوراً كبيراً في السّنوات القليلة الماضية على
عكس البرمجيات التي تتناسب معها. هذا التطور صَنع إهتماماً و توجهاً لتطوير الخوارزميات لتتماشى مع
هذا التطور في العتاد.



، إذا أردت أن تحل مسألة معينة وتقوم بالتعبير عنها بلغة البرمجة التي تريدها، ماذا تفعل؟ إنك ستضع خُطواتٍ للحل أولاً في رأسك،
هذه الخطوات هي الخوارزمية التي تبني عليها الحل الخاص بك، يمكنك التعبير عن هذه الخطوات عن طريق اللغة التي تريدها
وبكلمات بسيطة تفهمها أنت أو يمكنك التعبير عنها عن طريق الأشكال المتوافق عليها لتُسهيل العمل عليك، مثل ما يحدث عند
الحوادث المرورية – حفظك الله – يقوم شُرطي المرور برسم خوارزمية الحادث وفق شكل متفق عليه و هو كروكي الحادث، و
لإستخدام الأشكال المتعارف عليها في علم الخوارزميات عليك أولاً وضع خُطة الحل والأشياء التي تُساعدك على الحل والناتج
المتوقع.





اعضاء الاعزاء
مواضيع مكتبة أجابة جائت كي تساعد اعضاء اجابة على اضافة معلومات لقواميسهم
وكمحاولة مني في ترقية اجابة وجعله قطار سهل لزوار اجابة الباحثين عن اجابة ,
اجعل موضوعي مميزًا بتعليق دعم منك , وكتقيم مميز مثلك , وقراءة الموضوع :
https://ejaaba.com/كيف-نرتقي-بمواضيعنا-في-اجابه

لا تنسوا قراءة مكتبتي اجابة تحت اعمال النخبة الابداعية في ملفي الشخصي :
https://ejaaba.com/u/Saeed.agha

اتمنى لكم التوفيق والنجاح يا اخوتي وقد حان الوقت لكي نرقي اجابة للافضل والافضل
وشكر خاص لمشرف اجابة على دعمه لي من خلال تثبيته في اهم المواضيع , واعده امام
الاعضاء ان استمر واستمر في ترقية اجابة للافضل .................................................!


هذا العمل مقدم من النخبة الابداعية (فريق الابداع) لاعضاء اجابة وزواره :
ملحق #1
اختي الكريمة
المعلومات قمت بجلبها من ويكيبيديا , موضوع , ومواقع من الكلية الاكاديمية التي تعلمت بها . سارفقها ولا يهمك
شكرا على الطرح الجميل والملخص