فيديو

جدول المحتويات:

Anonim

خوارزميات البحث هي المكان المثالي للبدء عندما تريد معرفة المزيد عن الخوارزميات وكذلك الذكاء الاصطناعي. لذلك دعونا نبدأ مع أساسيات البحث أول التنفس وبحث العمق الأول لاجتياز مصفوفة.

يرجى ملاحظة أن الرمز لم يتم تحسينه بأي طريقة أخرى. إنه تنفيذ القوة الغاشمة. لذا كن حذرا.


نظرا مصفوفة / مشكلة

الصندوق الأحمر → حيث يوجد 1 لدينا (ما نريد العثور عليه)
المربع الأصفر → الموقع حيث نبدأ البحث

المشكلة بسيطة للغاية بالنظر إلى شبكة مصفوفة n * n ، سيكون هناك عنصر واحد يسمى "1" ونريد أن نجد هذه القيمة ، بمعنى آخر نريد أن نعرف إحداثيات العنصر 1.


عمق أول نهج البحث

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


التنفس خوارزمية البحث الأولى

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


كود التفاعلية

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

للوصول إلى الكود الرجاء الضغط هنا.


الكلمات الأخيرة

لقد استمتعت بتنفيذ هذه الخوارزميات ، في المرة القادمة سأحاول إجراء بحث النجوم.

إذا تم العثور على أي أخطاء ، يرجى إرسال بريد إلكتروني إلي على [email protected] ، إذا كنت ترغب في الاطلاع على قائمة بكل كتاباتي ، يرجى الاطلاع على موقع الويب الخاص بي هنا.

وفي الوقت نفسه ، اتبعني على حساب twitter الخاص بي هنا ، وقم بزيارة موقع الويب الخاص بي ، أو قناة Youtube الخاصة بي لمزيد من المحتوى. فعلت أيضا مقارنة بين الشبكة العصبية Decoupled هنا إذا كنت مهتما.


مرجع

  1. الثعبان؟ ، C. (2018). اختيار أعداد صحيحة عشوائية باستثناء عدد معين لبيثون؟ Stackoverflow.com. تم الاسترجاع في 11 مارس 2018 ، من http://stackoverflow.com/questions/17907213/choosing-random-integers-except-for-a-particular-number-for-python
  2. بيثون؟ ، م. (2018). قياس الوقت المنقضي في بيثون؟ Stackoverflow.com. تم الاسترجاع في 11 مارس 2018 ، من http://stackoverflow.com/questions/7370801/measure-time-elapsed-in-python
  3. 8.10. قائمة الانتظار - فئة قائمة انتظار متزامنة - وثائق Python 2.7.14. (2018). Docs.python.org. تم الاسترجاع في 11 مارس 2018 ، من http://docs.python.org/2/library/queue.html
  4. مكررة ، H. (2018). كيفية التحقق من وجود كائن في قائمة الانتظار قبل دفع كائن جديد. Stackoverflow.com. تم الاسترجاع في 11 مارس 2018 ، من http://stackoverflow.com/questions/27024881/how-to-check-if-object-exists-in-queue-before-pushing-new-object/27025015
  5. إصلاح الخطأ - الوصول إلى أقصى عمق العودية. (2013). نصائح بيثون. تم الاسترجاع في 11 مارس 2018 ، من http://pythontips.com 2013/08/31/fixing-error-maximum-recursion-depth-reached/
  6. P ، J. (2013). sys.setrecursionlimit @ على محمل الجد ، لا تستخدم هذا الرمز !. Seriously.dontusethiscode.com. تم الاسترجاع في 11 مارس 2018 ، من http://seriously.dontusethiscode.com 2013/04/04/setrecursionlimit.html
  7. خوارزمية البحث *. (2018). En.wikipedia.org. تم الاسترجاع في 11 مارس 2018 ، من http://en.wikipedia.org/wiki/A*_search_algorithm
  8. البحث اتساع. (2018). En.wikipedia.org. تم الاسترجاع في 11 مارس 2018 ، من http://en.wikipedia.org/wiki/Breadth-first_search
  9. عمق البحث الأول. (2018). En.wikipedia.org. تم الاسترجاع في 11 مارس 2018 ، من http://en.wikipedia.org/wiki/Depth-first_search
موصى به اختيار المحرر