الرياضيات التي أستخدمها



في الآونة الأخيرة ، تم طرح سؤال في منتدى على الإنترنت: كم هو مطلوب من الرياضيات في ظل ظروف المبرمج الحقيقي ، وكم مرة يستخدمه وما هي مجالاته؟ وهنا جوابي.

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

علاوة على ذلك ، غالبًا ما أشارك في تحليل تعقيد الخوارزميات. أبعاد مجموعات البيانات التي يتم معالجتها هذه الأيام هائلة. قال إيريك شميدت في مؤتمر التكنولوجيا لعام 2010 ، إن حجم البيانات التي أنشأتها البشرية اليوم في يومين فقط يساوي حجم جميع البيانات الموجودة في العالم اعتبارًا من عام 2003. من المهم بالنسبة لي أن أتمكن من معالجة أجزاء كبيرة من هذه المجلدات والاستفادة منها. وبهذا المعنى ، فإن فهم التعقيد المكاني والزمني للعمليات التي نطبقها على البيانات هو المفتاح لتحديد ما إذا كانت حسابات معينة ممكنة من حيث المبدأ. على عكس الأنواع الأكثر تقليدية من تحليل O أو تحليل ثيتا ، فإن العوامل الثابتة على هذه المقاييس لها تأثير كبير: العامل 2 لا يغير التعقيد الزمني المقارب للخوارزمية ، ولكنه يتطلب زيادة في عدد المعالجات من 10 آلاف إلى 20 ألفًا ، ومثل هذا الاختلاف في الاستهلاك ستكون الموارد ملموسة. ونتيجة لذلك ، تصبح الحسابات أكثر تعقيدًا. أمثلة: هل يمكنني أخذ بعض الحسابات الخطية واختزالها إلى حساب لوغاريتمي؟ هل من الممكن تقليل استهلاك الذاكرة ثلاث مرات؟ وهكذا دواليك.

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

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

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

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

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

مثال رائع ومناسب هو MathJax . أو Gmail . ينطوي فهم كيفية عملها على مستوى معين من المعرفة بالحوسبة الرمزية والتحليل الدلالي لعناصر الصفحة. احتاج مؤلفو MathJax إلى كتابة برنامج قادر على اجتياز الشجرة التي تم إنشاؤها على أساس نموذج كائن المستند ، والعثور على العناصر الرياضية ، و " استيفائها " واستبدالها ديناميكيًا بعناصر جديدة مرسومة. ربما بعض المستخدمين الذين يرون فقط كيف يعمل لن يكون مثيرًا للإعجاب للغاية ، ولكن تحدث أشياء معقدة للغاية تحت غطاء المحرك. لا يلزمني عادةً القيام بشيء مماثل (لا أعمل مع الواجهة الأمامية) ، ولكن طوال الوقت أقوم بأشياء مماثلة في Lisp . يرجى ملاحظة أن Lisp تم شحذها في الأصل من خلال المعالجة الرياضية للمعلومات الرمزية: تغطي وحدات الماكرو الخاصة بها بشكل كامل قضايا معالجة التعبيرات الرمزية.

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

أعمل كثيرًا مع تحليل البيانات الإحصائية ، ليس فقط لتحديد خصائص الأداء ، ولكن أيضًا لفهم البيانات على هذا النحو. بالإضافة إلى البحث في شجرة DOM المذكورة أعلاه عن البيانات الوصفية الدلالية (على سبيل المثال ، microdata وتنسيقات microformat و RDF وبيانات XML الأخرى مع بعض المخططات المحددة) ، أحاول أيضًا فهم البيانات غير المنظمة . ما احتمال أن يكون هذا النص عنوان شارع؟ أم أنها إحداثيات بيانية ؟ في أي سياق يظهر؟ هل هو بريد مزعج ؟ هل يعقل حتى؟ هل تبدو نتيجة لمولد نص قائم على سلاسل ماركوف ؟ ربما هذه سلسلة من الاقتباسات من بعض الأعمال الأدبية المعروفة؟ أو جزء من مناقشة أدبية؟ أو ربما هذا نقاش حول البريد العشوائي الذي يحتوي على جزء أدبي؟ ما زلت أضحك في كل مرة أفكر في عقاقير الإعلان عن البريد الإلكتروني العشوائي ملفوفة في جزء من "ماستر ومارجريتا" في بولجاكوف.

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

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

ومع ذلك ، كيف يمكنك توزيع الحمل من حساب كبير بين مراكز البيانات الموجودة في أجزاء مختلفة من العالم؟ هنا ستحتاج أيضًا إلى بعض المعرفة بالفيزياء: على نطاق الإنترنت ، تتحول سرعة الضوء إلى "اختناق". إن تبديد الحرارة والكثافة الحالية لكل وحدة مساحة والمزيد هي أمثلة لما يجب على المبرمجين مراعاته عند العمل مع المهام الواقعية. هل يجب أن أستضيف مركز بيانات في أيسلندا؟ تخلق مصادر التبريد الرخيصة والطاقة الحرارية الأرضية ظروفًا جذابة ، ولكن ماذا عن الحد الأدنى من التأخير للمستخدمين الذين قد يكونون مهتمين باستئجار معدات في مركز البيانات هذا؟ ما هي المسافة على طول قوس دائرة كبيرة بين ، على سبيل المثال ، أيسلندا ولندن ، أو برلين وأمستردام؟ حساب كل هذا بسيط للغاية ، ولكن من الضروري أن يكون لديك معرفة رياضية معينة. هل يمكننا إرسال الألياف من أيسلندا إلى مركز آخر؟ ما هو متوسط ​​التأخير؟ ما هو احتمال تمزق الكبل البحري في بحر الشمال خلال 12 شهرًا من التشغيل؟ ولمدة 48 شهرًا؟

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

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

إذا كنت بحاجة إلى كتابة خوارزمية النسب العودية الخاصة بي لبعض القواعد غير العادية ولا يمكن أن تتطابق مع LALR (1) (لذلك لا يمكنني فقط استخدام yacc أو bison ) ، فأنا بحاجة إلى توخي الحذر أو الاحتفاظ بمكدس الحالة منفصل عن العودية الإجرائية. هذا الفهم ضروري أيضًا إذا ذهبت حول شجرة DOM (أو أي بنية بيانات محددة بشكل متكرر). تعتبر بعض لغات البرمجة هذه صعوبة في عمل المبرمج وتتحايل عليه باستخدام مكدسات مقسمة . بالطبع ، سيكون من الرائع أن أتمكن من تحديد مجموعتي لبعض الموارد التي تم تحليلها في شكل دالة (بالمعنى الرياضي). وكم سيكون الأمر رائعًا إذا كان الأمر يتعلق فقط بنوع من مشكلة تحسين البرمجة الخطية ؟

يرجى ملاحظة أن أيا من المذكور أعلاه ليس أي معرفة باطنية. كل هذا يعتمد على الخبرة في المهام والبيانات الواقعية. بالطبع ، لا أفعل كل هذا كل يوم ، ولكن معظم هذه المعرفة التي أتقدم بها بانتظام ، وبعضها فقط - من وقت لآخر. ربما يكون للملاحظة والخبرة والاستدلال تأثير أكبر على العملية أكثر مما ينبغي (النماذج الإرشادية غالبًا ما تكون غير مكتملة وغير دقيقة). هل لدي ما يكفي من المعرفة الرياضية لحساب متوسط الخطأ بين الواقع ونموذجي التجريبي؟

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

(بالمناسبة ، أنا لست خبيرًا في علوم الكمبيوتر. درست الرياضيات البحتة ، ومهني المهني أقرب كثيرًا إلى الهندسة.)

الصورة

Source: https://habr.com/ru/post/ar411731/


All Articles