نفس الكود، ولكن 4 مستويات! و4 طرق للتفكير🧠 (جزء جديد)
Вставка
- Опубліковано 25 лип 2024
- إنضم إلينا في رحلة استثنائية إلى أكثر التسلسلات العددية إثارة للاهتمام في عالم الرياضيات. في هذا الفيديو، سنستكشف أربع مستويات من الكود، بدءًا من الأساسيات وانتهاءً بالتقنيات المتقدمة، لنتعلم كيفية رفع كودنا إلى مستوى جديد تمامًا.
*المستوى الأول: الأساسيات*
في البداية، سنبدأ بأبسط كود لمتتالية فيبوناتشي. تتكون متتالية فيبوناتشي من سلسلة من الأرقام حيث يكون كل رقم هو مجموع الرقمين السابقين. يمكن تمثيل هذه المتتالية بالصيغة:
F(n) = F(n-1) + F(n-2)
حيث يمثل F(n) الرقم n في المتتالية. متتالية فيبوناتشي ليست مجرد تسلسل رياضي، بل يمكن رؤيتها في الطبيعة والفن والتصميم والهندسة. لها تطبيقات في مجالات مختلفة، بما في ذلك تحليل الأسواق المالية والاستثمار والتشفير، وحتى التنبؤ بالكوارث.
المستوى الثاني: الإجترار
في المستوى الثاني، سنأخذ خطوة إلى الأمام ونستكشف مفهوم الإجترار. في البرمجة، الإجترار هو تقنية لحل المشكلات من خلال تقسيمها إلى حالات أصغر وأكثر قابلية للإدارة. في حالة متتالية فيبوناتشي، يمكننا استخدام الإجترار لحساب كل رقم في التسلسل بناءً على الرقمين السابقين.
المستوى الثالث: البرمجة الديناميكية
البرمجة الديناميكية هي نهج قوي لحل المشكلات المعقدة. في هذا المستوى، سنستخدم البرمجة الديناميكية لتحسين كودنا. من خلال تخزين النتائج الوسيطة، يمكننا تقليل عدد العمليات الحسابية المطلوبة بشكل كبير. ستساعدنا هذه التقنية على تسريع عملية حساب أرقام فيبوناتشي بشكل كبير.
المستوى الرابع: المضاعفة السريعة
في المستوى الأخير، سنقدم لك تقنية متقدمة تُعرف باسم "المضاعفة السريعة". تعتمد هذه التقنية على هويتين رياضيتين لحساب أرقام فيبوناتشي بكفاءة. من خلال استخدام "فرّق تسُد"، يمكننا حساب أرقام فيبوناتشي الكبيرة بسرعة وسهولة. ستكون هذه التقنية أسرع بكثير من الطرق السابقة وستفتح عينيك على قوة التفكير الخوارزمي.
00:00 المشكلة
00:35 المستوى الأول: الحل الساذج (Naive solution)
02:15 المستوى الثاني: الإجترار (Recursion)
03:37 المستوى الثالث: البرمجة الديناميكية (Dynamic Programming)
05:23 المستوى الرابع: المضاعفة السريعة (Fast Doubling)
09:49 كيف نجعلها أسرع من مليون مرة
انضم إلينا في هذه الرحلة عبر مستويات مختلفة من الكود، حيث سنأخذك من الأساسيات إلى التقنيات المتقدمة. من خلال كل مستوى، ستكتسب فهمًا أعمق لمتتالية فيبوناتشي ومهارات برمجة قوية.
اشترك الآن لتصبح جزءًا من مجتمعنا المتنامي من عشاق البرمجة، وشارك أفكارك وإبداعاتك في قسم التعليقات. معًا، يمكننا استكشاف أعماق البرمجة ورفع مستوى مهاراتنا إلى آفاق جديدة!
رابط الأكواد مع شرحها بالتفصيل :
colab.research.google.com/dri...
لا تنسى الضغط على زر الإعجاب والاشتراك، وضبط الإشعارات حتى لا تفوت أيًا من أحدث الفيديوهات!
--------
👋 حسابنا على باتريون : / pythonation
نتمنى أن تشاركوا الحلقة مع واحدٍ من أصدقائكم على الأقل ، ولا تنسوا متابعتنا في وسائل التواصل :
الفيسبوك : pythonation
إنستقرام: / python.ar
تويتر: / python_ar
تيليجرام: t.me/python4arabs
--------
#برمجة #خوارزميات - Наука та технологія
نريد حلقات اخرى من هذه السلسلة الرائعة بارك الله فيكم ❤❤
بإذن الله
من أفضل ما شاهدت من ناحية المحتوى البرمجي ، المنهجية ،الشرح وطريقة العرض ممتازة !! بارك الله فيكم ونفع بكم .
شكرا جزيلا لكم
جزاك الله خير الجزاء . بس انا عندي طلب لو حضرتك ينفعي تعمل حلقة علي TensorFlow and TensorFlow Lite وازي عملية Training بتاعت ال dataset علي tensorflow ❤❤
جميييييييييييييييييييييييييييييييل
عندي اقتراح
وهو حبذا لو تضع اسم المشكلة في عنوان المقطع؛ لأنه إن شاء الله عندما تصبح هذه سلسلة مستمرة على القناة يستطيع المرة الرجوع إلى الفيديو الذي يريده بسرعة
سلمت يداك، هذا ما نحتاجه بالضبط
حياك الله
👏👏السلسة التي أعشقها .. نطالبك بحلقة كل يوم
و بارك الله فيك و رزقك الجنة الفردوس أنت و من تحب ❤
ءامين واياكم، الله يقدرنا أخي الحبيب
احببت البرمجة بسبب هذه السلسلة ، ننتظر المزيد ❤
جزاك الله كل خير ونفع بك ❤
جزاكم الله خيرا ❤
جــــــــــزاك الله خيرا اسـتاذ
واش هو شعورك كي يقولك الاستاذ عبد الاله "اعتقد اني شرحت الامر اكثر من اللازم" وانت مازال مافهمتش 😂😂
لا تلومو أنفسكم ربما أنا لم أشرح الأمر بطريقة كافية
تختلف مستويات الذكاء والحفظ والتفكير المنطقي من شخص الى آخر ، لذلك حين قال الاستاذ عبد الاله "اعتقد اني شرحت الامر اكثر من اللازم" قد تجد أشخاصا أكدوا قوله ، وقد تجد أشخاصا ظنت أن قوله صحيح ، وقد تجد أشخاصا اعتبرت قوله خاطئا ، لذلك عزيزي لا تلم نفسك فلكل انسان قدراته لكن الاجتهاد والتمرين والمثابرة دائما ما تعادل النتائج بين الأفراد باختلاف مستويات تفوقهم .
بارك الله فيك أخي، فيديوهاتك رائعة ومفيدة ♥
من فضلك حلقات اكثر من هذه السلسلة
تحياتي
حلقة رائعه 🔥
جزاك الله خيرا ،اصبحت الحلقات تحتاج لدورات
وهذه معضلة أخرى ههه
سلسلة جد رائعة ❤❤❤
حلقة رائعة جدا و السلسلة مهمة جدا للمبرمجين . ارجو عمل شرح للبرمجة الديناميكية
بارك الله فيكم
حاول تعمل سلسلة متكاملة من هذة الدروس بحيث تكون مرتبة حسب المواضيع...وتبداء من المفاهيم الاسهل وتنتقل تدريجيا للمفاهيم الاصعب.
شكرا جزيلا على هذا الاقتراح الجميل
يمكن ايضا استخدام ctypes وتحويل الشفرة لكائن مشترك shared object مثل ما يقوم به ايطار العمل الخاص بي.
أو SWIG أيضا
@@PythonArab حسنا هذا ممكن ايضا لكنها لم تعجبني
رائع كما العادة🤩، أحب عندما تعرضون طرق تفكير مختلفة.
شكرا جزيلا 🧡
سلسلة ممتازة رجاءاً استمر
اهم شيء ارجو ان تستمر في ارفاق ال source code
أخي العزيز ، شكرا هلى المجهود ، نحن معك ، تابع ❤، لكن ارجو ان تنشأ قناة اخرى خاصة بأخبار الذكاء الاصطناعي ، و اخرى للتعلم لغات البرمجة ، لأني مهتم فقط بالاخبار ، اما تعلم لغة بنسبة لي ففي وقت اخر مناسب ، اما الاخبار فيمكن لنا تتبعها في اي وقت❤❤❤
اسطوري
انا بعشق السلسله دي من الفيديوهات يريت تعمل من هذه السلسله اكثر جدا و مش توقف خالص منها
شكرا جزيلا، سنستمر فيها ونحسنها لكن نحتاج تشجيعكم
@@PythonArab إنشاء الله بس لمه اقدر انتسب انشاء الله عشان انا كحيان دلوقتي او في الوقت الحالي
حياكم الله و وفقكم
شكرا جزيلا
شكرا يا كرام
العفو
بالمناسبة لديكم مجموعة من الفيديوهات و ال playlist التي ساعدتني شخصيا
منها الماتعة و منها المفيدة
أتذكر مشاهدة سلسلة الخوارزميات بالورقة و القلم (أيام جميلة)
المهم حاولوا الحفاظ على إستمرارية التنزيل و المواد المفيدة (الخفيفة و الدسمة)
بارك الله فيكم
يسعدنا ذلك
الشخص الوحيد اللى حببني في البايثون
أتشرف بكلامك ❤️🌹♥️
وين المبرمجين وين الناس شوفو هالابداع 🧠🔥
شكرا
العفو 🧡
بارك الله فيك على المحتوى الرائع والقيم ، عندي ملاحظة اتمنى ان تاخذها بعين الاعتبار وهي عدم ترجمة المصطلحات البرمجية الى اللغة العربية وقولها كما هي حتى يتسنى لنا البحث عنها ، مصطلحات مثل (الاجترار ، متتالية ...الخ) شكرا لك مجددا
جزاك الله خيراً
عندي سؤال صغير من فضلك : لماذا استخدام ال recursion مع ال dynamic programming كان اسرع من استخدام ال loop
نفسي اتعلم الخورزميات من تحت الصفر علي ايدك
او ترشحلي كورس ابداء بي
بارك الله فيك شرح ممتاز
ملاحظة بس في الدقيقة 3:18 انت ذكرت ان الtime complexity هو 2^n ولكن هو في الحقيقة N فقط
you have only one recursive call not two
تاني واحد ❤
حياك الله
❤
جزاكم الله خيرا
من فضلك كبر حجم الخط
سننتبه لهذا الأمر مستقبلا ، أعتذر
may god bless you
🌹
❤❤
كيف اخلي ثيم فجوال استديو كود مثلك
👍
جعل ال gpu هو المسول عن الحسابات
❤❤❤❤❤❤❤❤
مرحبا
كيف حالكم
اسعد الله اوقاتكم بكل خير ❤❤
حياك الله ،وأسعد اوقاتك
ما هذه الطلاسم 😅😅
❤
🎉🎉🎉🎉
هل يمكنكم عمل خوارزمية لحساب fft?
تحويلات فورييه يصعب على المبتدئين فهمها نوعا ما وبالتالي سيصعب شرحها أيضا، الخوارزمية التي أنصحك بها لنفس الغرض هي split-radix FFT
@@PythonArab
شكرا جزيلا.
استاذي السلام عليم و رحمة الله شكرا على مجهوداتكم ، اريد ان اعرف استادي اين يمكنني ان اتعلم هذه الاشياء انا تعلمت قليلا في البايثون و بعض الاوامر لكن اريد ان احترف هل من مساعدة
وعليكم السلام ورحمة الله، يمكنك تطوير مهاراتك عبر الممارسة، هي مرحلة مهمة جدا للانتقال الى المستوى التالي
One of the commun issues, is trying to look for all sum combinations from a list to get a given target number.
We want all the combinations with all different lengths possible.
Please I will love to see how you can treat this issue and how you can optimize it maximum.
Thank you
Could you provide an example?
@PythonArab sure, like imagine we had a list [1,4,11,3,5,10,2] then the target is 15 so as result should be:
[10,5],[11,4],[10,3,2],[11,3,1],[10,4,1] etc....
Thank you for the answer.
Imagine we had list [1,3,5,11,4,2,10,9] and the target is 15 so the results should be:
[11,4],[10,5],[10,3,2],[11,3,1],[9,5,1],[9,1,2,3] etc..
And as test you can try from 1 to 50 and then get all the combinations for 156, but we can't use gauss or algeb sequences cause the numbers on the list can be random. Not like the example
ماهي حدود قدرات الذكاء الاصطناعي بالرياضيات التطبيقية أو حتى التجريدية؟
الذكاء الاصطناعي محدود جدا في مهارات الاستدلال المنطقي والرياضي، قوي في تطبيق الحلول الموجودة مسبقا
ومع هذا فإننا كل شهر نشهد تطورا كبيرا في مهارات الاستدلال
@@PythonArab أشكرك على فهم ما أعنيه.. لذا أعتقد أن (فيلدز ميدال)ستصمد طويلاً.🎖️
❤❤❤🎉🎉🎉
اكو بعد طريقة للحل باستخدام معادلة رياضية الاتية:
FN = (phi^n - (-phi)^-n)/sqrt(5)
حيث ال phi هو عدد ثابت يمثل النسبة الذهبية (1+sqrt(5))/2
بس على رغم من سرعة هاي الطريقة بس متكدر تتعامل وية الارقام الجبيرة بلبايثون الا باستخدام مكاتب خارجية
وهي أيضا طريقة بطيئة بسبب عمليات الرفع والأسس
انا استصعب فهم التكرار لكني افهم الاجترار بكل سهولة
مع التمرين والممارسة لاشيء سيبقى صعب
عندما يتعلق اللمر بالرياضيات فانا اضيع هها
لماذا طردت شركة جوجل فريق يايثون كاملا ؟.
قامت جوجل بتسريح فريق بايثون، لكنها نفت أن تكون التسريحات على مستوى الشركة. وأوضحت الشركة أن التسريحات كانت جزءًا من عمليات إعادة الهيكلة التي تعد جزءًا طبيعيًا من سير العمل. وسيكون بإمكان الموظفين المتضررين التقدم للوظائف الشاغرة الأخرى في جوجل.
وقد أثار تسريح فريق بايثون صدمة في أوساط مجتمع التكنولوجيا، حيث تكهن البعض بأن القرار كان مدفوعًا بتدابير خفض التكاليف أو محاولة لتوسيع وجود جوجل في أوروبا. وأعرب آخرون عن إحباطهم من حالة الرأسمالية وممارسات التوظيف في الولايات المتحدة.
وقد لعب فريق بايثون دورًا حاسمًا في إدارة مختلف جوانب نظام بايثون البيئي في جوجل، بما في ذلك الحفاظ على نسخة مستقرة من لغة البرمجة، وتحديث حزم الطرف الثالث، وتطوير أدوات أساسية مثل أداة فحص الأنواع. وتألف الفريق من حوالي 10 أفراد، معظمهم لديهم عقود من الخبرة في بايثون.
3:20 كيف قمت بحساب 2^100000 عملية في اقل من ثانية؟
ليس الأمر صعب فالمعالجات تقوم بحساب أكثر من هذا
@@PythonArab مانوع المعالج لديك
التجربة في معالج i7 جيل قديم
استاذي لما لا تسجل لنا دورة مدفوعة الثمن تغطي بها هذه التفاصيل بالإضافة إلى المهارات المطلوبة في سوق العمل خاصة في الذكاء الاصطناعي ويكون لنا صفحة على الديسكورد للإجابة على الاسئلة والمساعدة في تطبيق الكود.
إذا توفر لدينا وقت سنقوم بذلك وسنجعلها مجانية، لكن للأسف معظمنا لديه عمل ونتطوع هنا بعض الوقت فقط
@@PythonArab من اجل ذلك استاذي اقترح ان تكون مدفوعة الثمن لكي يكون الموضوع عبارة عن عمل حقيقي لا مجرد تطوع. كلنا عندنا عوائل ونحتاج الى العمل لذلك العمل التطوعي دائما ما يكون محدود.استاذي العمل في مجال الدورات مجزي جدا خاصة بعد ان تحقق القناة الانتشار وانتم ما شاء الله عليكم لم تحققو مجرد انتشار بل اصبح لكم اتباع ومريدين بعد لابداع الذي لمسناه منكم خلال كل هذه السنين لذلك اظن الانتقال الى الخطوة القادمة اصبح ضرورة
@@PythonArab😅
احسست انك ستقول شي كهذا لان هذا المستوى من الإنتاج و العلم و الجهد الذي تقدمه في فيديوهاتك هو صدقه وليس قناه هدفه الربح و الشهره وحسب بارك الله فيك ونفع بك ❤
@@salem_me فعلا اخي سالم, الاخوة في القناة بمنتهى الكرم لكن انا من واقع تجربتي كصاحب مؤسسة مجتمع مدني اعمل في مجال العمل التطوعي منذ سنين استطيع ان اقلك ان عمر العمل التطوعي قصير مقارنة بالعمل الحقيقي ثم انه محدود بسبب انشغال المتطوعين, ان انتاج كورس احترافي من قبل شخص نثق به سيكون نافع للطرفين لنا كطلبة لاننا نعرف مستوى الاساتذة ولهم ايضا لكي يتمكنو من التفرغ لهذه الدورات
@@isanaser8338
من تجربة شخصية عندما أدفع كورس استفيد أكثر من المحتوى المجاني لعدة أسباب لا يسع ذكرها
يجب ولا بد من ان تضع محتوى مدفوع لفائدة المتعلم أولا و لك ثانيا ..
خوارزمية كارتسوبا قد تكون الافضل في هذه الحالة نظرا لقدرتها على حل المشكلة الاساسية و هي التعامل مع عمليات الضرب الكبيرة جدا بقية الحلول مثل استعمال numpy او cython ستعمل على تخفيف المشكلة لكنها لن تعمل على حلها.
اقترح في المرة القادمة استخدام لغات مثل prolog و التي تعتمد في صلبها على الصيغ العودية لحل هذه المشكلة و مقارنتها بلغة Python
نعم أحسنت، لدينا فضول لتجربة الأمر على mojo
ايضا mojo ستكون خيارا مميزا و خاصة انها اصبحت متاحة للجميع
لي فهم يفهمنا شكلو مسرع و دخل الموضوع بدون مقدمات واضحة
حسيت نفسي غبي جدا 😅😅😅😅😅😅😅😅
أحس قدراتي الإدراكية تراجعت أخر فترة أريد حل صرت أفهم موادي في علم النفس بصعوبة و الخورزميات بصعوبة أيضا أهههه😢😢😢😢
و كأن طريقتي تفكير و نوعي الذكاء يسببان تعارض فيه bugs في عقلي 😂😂😂
كلنا نمر بذلك من فترة الى اخرى، تحتاج القليل من التحفيز فقط
يوجد طريقة أخرى .. ، فيبونانشي هي متتالية معرفة بحدين أوليين
من هذا المنطلق نقوم بحساب المعادلة التي تمثل المتتالية (بإستخدام الرياضيات ، التحليل) و بهذا يصبح الكود عبارة عن سطر واحد
حيث تقدم قيمة n فتقوم الدالة بحساب معادلة و إرجاع القيمة
(لمن لم يفهم يمكن تشبيه الأمر بالمتتاليات الحسابية ، فإذا قدمت لك رقم n و متتالية حسابية ، يمكنك إما حسابها بإحدى الطرق في الفيديو أو إستخراج عبارة المعادلة بقانون جاهز F=Fo+n*r حيث r هو الأساس ، فهنا نفس الفكرة لكن متتالية معرفة بحدين )
لا أعرف إذا كانت طريقة أسرع لكن أحسبها تستحق المحاولة :-)
أتمنى أن تضع لنا الصياغة العامة للطريقة التي ذكرت وسنحاول
@@PythonArab
Def F(n):
If n == 0 :
Return 0
Elif n == 1:
Return 1
Else:
Return (1/✓5)*(((1+✓5)/2)^n)-(1/✓5)*(((1-✓5)/2)^n)
# العبارة الأخيرة تمثال عبارة فيبوناشي ، بالطبع عليك حسابها يدويا
غير اللغة 😒
أكتب بال c او الjava على الاقل
لا نريد التركيز على جانب اللغة كثيرا، تهمنا أكثر مهارات التفكير
@@PythonArab معك حق 🙂
❤
♥️
❤
❤