قد نفشل أحيانًا عند استعمال الطّريقة المألوفة في تقريب عددٍ ما إلى عددٍ قريبٍ له في القيمة. قد توفّر لنا طريقة أخرى نتائج أفضل- إذا استُخدِمت بالشّكل الصّحيح
تُساعد عمليّةُ تقريب الأعداد في إظهار هذه الأعداد بطريقةٍ أكثر تبسيطًا، كما يُسهّل التقريبُ حِفظَها في الذاكرة، والقيام بعمليّاتٍ حسابيّة بشكلٍ أسرع. هذا الأمر صحيحٌ ليس لنا بني البشر فحسب، وإنّما أيضًا بالنّسبة لبرامج الحاسوب. تكمن المشكلة في فقدان بعض المعلومات في هذه العمليّة؛ ما يؤدّي إلى أخطاءٍ في العمليّة الحسابيّة. التّقريب الصحيح والذّكيّ يقلّل من هذه الأخطاء قدر الإمكان.
تَفحص دراسة نُشِرت مؤخّرًا في المجلّة العلميّة Royal Society Open Science طريقةً بديلةً لِتقريب الأعداد في أجهزة الحاسوب، وتعرضُ تطبيقاتٍ تكون فيها أكثر نجاعةً من الطّريقة التقليديّة.
في بعض الأحيان لا يوجد خيار غير التّقريب، نظرًا لوجود أعداد لا حصر لها من الخانات بعد الفاصلة العشريّة، مثل الباي (ط) | رسم توضيحيّ: Mykola Mazuryk, Shutterstock
تسعيرات وتسريبات
الطريقة التقليديّة والمعروفة جدًّا للتقريب هي التقريب إلى أقربِ عددٍ صحيح، أو إلى العدد الّذي يحوي كسرًا عشريًّا بالدّقة المطلوبة - هنا للتّبسيط نتعامل فقط مع الأعداد الصحيحة. هذه الطّريقة جيّدة في معظم الحالات، لكنّها قد تؤدّي إلى الخطأ عند التّعامل مع مجموعةٍ من الأعداد ذات خصائص معيّنة.
تتمثّل إحدى نقاط الضّعف في الطّريقة التقليديّة في الحالات الّتي يكون فيها الانحراف عن القيمة الصحيحةِ في اتجاهٍ واحد بشكلٍ مُمنهَج. على سبيل المثال، تكون أسعار المنتجات أحيانًا عبارة عن أعداد مثل 39.90 ليرة أو أيّة عملة أخرى، ولكن نادرًا ما نجد سعر منتجٍ ما 40.10. في مثل هذه الحالات، فإنّ المبالغ الّتي تمّ إهمالها جرّاء التقريب تتراكم وتسبّب نتيجةً مُنحازة بشكل كبير. مثال على ذلك، إذا قمنا بتقريب أسعار العديد من المنتجات بهذه الطريقة ومن ثمّ حسبنا ثمن سلّة المشتريات، فسنحصل على نتيجة أغلى من السعر الفعليّ لسلّة المشتريات. من السهل التعايش مع هذا الخطأ في الحياة اليوميّة، لكنّه يمكن أن يسبّب ضررًا حقيقيًّا في التّطبيقات الّتي تحتاج إلى دقّة عالية.
تتمثّل نقطة ضعف أخرى لهذه الطّريقة في عمليّات التحديث الدّقيقة والمتعدّدة لقيمة كبيرة. لنأخذ مثالًا على ذلك خزّانًا كبيرًا يَدخل ويَخرج الماء منه عن طريق أنبوبٍ وحيد. يقيس المجسّ كميّة الماء الّتي تمرّ من هذا الأنبوب وينقل هذه المعلومة إلى العدّاد الّذي يشير إلى كميّة الماء الكليّة في هذا الخزّان. لنفترض الآن وجود تسرّبٍ وأنّ الماء يخرج بوتيرة بطيئة عبر هذا الأنبوب. العدّاد غير دقيقٍ بما يكفي لحساب كمّيّات الماء القليلة، لذلك كلّما أشار المجسّ إلى خروج كميّةٍ قليلةٍ من الماء، يتجاهل العدّاد عمليّة التصحيح ويقرّب العدد مرّة أخرى إلى الأعلى. في هذه الحالة، حتّى عندما يكون الخزّان فارغًا تمامًا، سيُظهر العدّاد الكميّة الأوليّة من الماء.
دائرة شبه عشوائيّة
طريقةٌ أخرى أكثر تقدّمًا، هي تلك الّتي قام بمراجعتها كاتِبو المقال، وتُدعى طريقة التقريب التصادفيّ (stochastic rounding). في هذا السّياق يمكن فهم كلمة "تصادفيّة" على أنّها "احتماليّة". وفي هذه الطّريقة أيضًا يتمّ تقريب كلّ عدد إلى إحدى قيمتَي الأعداد الصحيحة الأقرب إليه من الأعلى أو الأسفل. الفرق هنا أن التّقريب يتمّ بشكلٍ عشوائيّ: عندما تكون الاحتماليّة للتقريب لكلّ عدد صحيح نسبةً للقرب منه. على سبيل المثال، سيتمّ تقريب العدد 1.7 إلى الأعلى إلى العدد 2 مع احتماليّة 70%، وإلى العدد 1 مع احتماليّة 30%.
هذه الطّريقة بمأمنٍ من المشاكل المذكورة أعلاه؛ لأنّه حتّى في حالة التحيّز المُمنهَج للبيانات مقارنةً بأقرب عدد صحيح، كما في مثال سعر المُنتجات، سيتمّ تقريب العدد للاتجاه المعاكس مرّة واحدة لِكلّ بضع عمليّات تحديث، بالضبط وفقًا للتردّد المناسب من أجل إلغاء التحيّز المُمنهَج. هذه الميزة مهمّة في العديد من الاستخدامات المختلفة، من ضمنها تعلّم الآلة، والحسابات العدديّة مع مجموعةٍ كبيرة من المعطيات، وكذلك للبرامج الّتي تفحص دقّة برامج الحساب العدديّ، وهو حساب تقريبيّ يتمّ حدوثه في الحاسوب في الحالات الّتي يكون فيها الحساب الدّقيق معقّدًا جدًّا، أو لا تُعرَف كيفيّة تنفيذه.
ومع ذلك، حتّى هذه الطريقة ليست مثاليّة. وأبرز مثال على ذلك هو عدم اتّساقها وتوافقها: إذ لن يتمّ تقريب نفس العدد دائمًا بنفس الطّريقة، وقد تكون النّتيجة مختلفة عند القيام بنفس الحساب عدّة مرّات. لذلك، لا داعي للتّسرّع في تحديث جميع أجهزة الحاسوب- لكلّ تطبيقٍ احتياجاتُه الخاصّة والطرق المناسبة له.