أهم أقسام المدونة

الصفحات

الثلاثاء، 26 أكتوبر 2010

9- برنامج لرسم الموناليزا بالصدفة!

أبدع حاسب وأبدع نظام تشغيل
9- برنامج لرسم الموناليزا بالصدفة!

دعنا نتعامل مع القضية كمبرمجين:
افترض أن لدينا شاشة حاسب بأقل دقة ممكنة، وهي 480 × 640 نقطة.
هذا يعني أنّ هذه الشاشة تحتوي على 307200 نقطة.
الآن، نريد كتابة برنامج بسيط لرسم الموناليزا عشوائيا على هذه الشاشة!
لن نقول لك إنّنا سنستخدم 256 لونا، ولا حتى 16 لونا.. بل سنكتفي بالأبيض والأسود فقط.
عليك أن تعرف أنّ بين أن تكون كلّ نقاط الشاشة بيضاء، وأن تكون كلها سوداء، عدد من التباديل يساوي عدد الأرقام الثنائية التي يمكن وضعها في 307200 خانة، أي:
2 أس 307200 = 10 أس (92 ألفا)!!
في الواقع لو نجحنا في تجربة كلّ هذه الاحتمالات، فسنحصل بالأبيض والأسود على جميع اللوحات التي رُسمت أو لم ترسم بعد، وجميع صور الأشياء والأشخاص التي نتخيلها أو لا نتخيلها!
لكنّ المشكلة في هذا الأمر، أنّ تجربة هذه الاحتمالات يحتاج إلى عمر يفوق عمر الكون بمليارات مليارات المرات!!
سنفترض أنّ لدينا حاسبا يستطيع رسم كلّ احتمال من هذه الاحتمالات في جزء من مليار جزء من الثانية (وهو مستحيل عمليا بأجهزة اليوم، لكن سنفترضه).. هذا يعني أنه يستطيع أن يرسم في عام واحد:
مليار × 60 ثانية × 60 دقيقة × 24 ساعة × 365 يوما = 22118400 مليار لوحة في العام، وهو ما يساوي تقريبا: 10 أس 18.
وهذا يعني أننا نحتاج لكي نرسم كلّ اللوحات الممكنة، إلى عدد من الأعوام يساوي: 10 أس (92 ألف) / 10 أس 18
أنت تعرف من الرياضيات أن قسمة الأساسات طرح للأسس.. في الواقع، طرح 18 من 92 ألفا لا معنى له!
دعنا نفترض أنّنا نستخدم مليار حاسب (10 أس 9).. هذا سيعطينا (10 أس 18) × (10 أس 9) = 10 أس 27 لوحة في العام.
ما زال الرقم تافها!
دعنا نفترض أنّ هناك مليار كوكب مثل الأرض على كلّ منها مليار حاسب تشارك في العملية.. هذا سيرفع العدد إلى (10 أس 36) لوحة في العام!
ما زال الرقم تافها!!
هذا سيعني أننا نحتاج في سبيل رسم كلّ اللوحات إلى زمن يساوي:
10 أس (92 ألفا - 36) من السنوات!!
أيّ حوالي مليار مضروبا في نفسه 10 آلاف مرّة من السنوات!!
أما لو حاولنا رسم صور ملونة باستخدام 256 لونا فقط، فسنحتاج في سبيل رسم كلّ اللوحات إلى زمن يساوي:
256 أس 307200 = 10 أس 739811 أو تقريبا 10 أس 700000!!
أي أنه يساوي الرقم 1 موضوعا على يساره 700 ألف صفر!
طيب: حتى لا يظنّ البعض أنّ 480 × 640 هي أبعاد كبيرة للشاشة، دعنا نفترض أنّ دقة الشاشة هي 80 × 80 نقطة فقط!.. هذا سيجعلنا ننتظر 10 أس 2000 من السنوات!!
فلنقلص الشاشة إذن إلى: 20 × 20 نقطة، أي حوالي 5% فقط من أبعاد شاشة الحاسب العادية، أي شاشة قطرها أقلّ من بوصة!!.. طبعا هذا غير كاف لرسم لوحة واضحة المعالم والتفاصيل، لكن سنفرضه!!.. هذا يعني 2 أس 400 = 10 أس 120، وهو ما يحتاج إلى أكثر من (10 أس 80) عاما لتجربتها، أي مليار مليار مليار مليار مليار مليار مليار مليار مليار سنة!!
طيب.. سنفترض أنّ لكلّ لوحة مليار نسخة مقاربة، ناتجة عن اختلاف مواضع بعض النقاط، بحيث يمكن مطابقتها بالصورة الحقيقيّة باختلافات طفيفة.. هذا مستحيل مع لوحة حجمها 20×20 نقطة لكن سنفرضه!!.. هذا لن يغيّر شيئا يذكر في الأرقام المذكورة!!.. سننتظر 10 أس 71 عاما، بدلا من 10 أس 80 عاما!!
فليكن: دعنا نكن أسخياء، ونفترض أنّ لكلّ لوحة مليار مليار احتمال.. هذا سيجعلنا ننتظر 10 أس 62 عاما!!
حسنا.. دعنا نكن عمليين ونجرب.. لقد رأينا كيف نكتب البيانات في صورة Bmp بالأبيض والأسود في الفصل 25.. عدل الجزء الخاص بكتابة بيانات الصورة ليرسم في الصورة نقاطا عشوائية كالتالي:
' كتابة النقاط
Dim Buf As New BitBuffer(Bmp, CByte(255))
Randomize( )
For Y As Integer = 0 To ImgHight - 1
       Dim Y1 As Integer = Int(Y * W / L)
       For X As Integer = 0 To ImgWidth - 1
              If Rnd( ) < 0.5 Then
                  Buf.Add(0)
              Else
                  Buf.Add(1)
              End If
       Next
       If Buf.Possition > 0 Then Buf.Flush( )
       If PadZeros > 0 Then Bmp.Write(RowEnd, 0, PadZeros)
Next
Bmp.Close( )
ويمكنك أن تضع كود كتابة هذه الصور العشوائية في دالة، وترسل إليها اسم الملف الذي تريد حفظ الصورة فيه، وتستدعيها لأي عدد تشاء من المرات وتنظر كيف ستكون النتائج.
الآن علينا أن نسأل:
لو شغلنا برنامجنا العشوائي لرسم اللوحات بدون توقف (بافتراض أنه لن يكرر أيّة لوحة وهذا لن يحدث)، فما هو احتمال أن نحصل على اللوحات الموجودة في متحف اللوفر بفرنسا؟!.. أو حتى على لوحة الموناليزا فقط؟
وماذا سيكون رأي دافنشي لو قال له أحد إن الموناليزا يمكن رسمها ببرنامج حاسب عشوائي تافه؟!
لو جربت البرنامج السابق، فلن تحصل إلا على فوضى من النقاط البيضاء والسوداء كما في الصورة التالية:

    

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

طيب: دعونا نقل التالي لإخوان داروين:
عدد أنواع الأحياء على سطح الأرض يقدّر بنحو 9 مليون نوع.. ما هو احتمال أن نحصل على مجرّد لوحات مسطحة بالأبيض والأسود لأيّ من هذه الأحياء، لو شغلنا برنامجنا للرسم العشوائي؟!
هذا الاحتمال سيساوي 9 مليون / (10 أس 120) = 1 / (10 أس 113)!!!
دعنا نفترض أنّ لكلّ لوحة مليار مليار نسخة مقاربة.. هذا سيجعل الاحتمال 1 / (10 أس 96)!!
أعتقد أنّ كمّ الاستحالات التي تريها لنا الأرقام، يظهر عبثية من يؤمنون بالصدفة المبدعة!
هذا ونحن نتكلّم عن لوحة بحجم صغير (20 نقطة × 20 نقطة) وثنائيّة البعد (مسطحة) بالأبيض والأسود فقط!
فما بالنا عندما نتكلم عن مجسمات ثلاثية البعد؟!
وما بالنا لو لم تكن هذه المجسمات مجرّد رسوم، بل كائنات حيّة من لحم ودم تحمل تركيبا تقنيا معقدا، يستغرق الكلام عنه آلاف المجلدات من حصيلة بحوث العلماء عبر القرون؟!
أريد عاقلا يشرح لي: عن أيّ صدفة نتحدّث بالضبط؟!
من كل الحسابات السابقة نصل إلى هذه الاستنتاجات:
1- فكرة رسم كل الصور عشوائيا فكرة مستحيلة عمليا، حتى لو كانت صورا مصغرة بالأبيض والأسود فقط.
2- الصدفة والتجريب العشوائي، غير قادرين عمليا على ابتكار أي شيء.. وكما لا يمكن بأي حال أن يرسم السحاب لوحة الموناليزا على صفحة السماء، أو ترسمها الرياح على رمال الصحراء، فإنه لا يمكن بأي حال أن يكون هذا الكون وهذه المخلوقات قد ظهرت للوجود بدون تخطيط وتدبير من لدن حكيم خبير، خالق كل شيء، بديع السماوات والأرض، سبحانه وتعالى عما يشركون.
3- علينا الآن أن نزداد إعجابا وتقديرا بكل موهوب رسم لنا لوحة جميلة، أو أبدع لنا قصة مبتكرة، فمن حسابات الصدفة التي رأيناها، يتضح لنا تماما أن هؤلاء المبدعين قد وفروا على البشرية أعمارا هائلة من التجريب العبثي في محيط هائل من القبح والفوضى والعشوائية للحصول على بعض اللوحات أو الكلمات الجميلة!
4- هناك إعجاز حقيقي في امتلاك الإنسان للخيال والابتكار والإبداع، وهو عائق سيظل يعجز أمامه كل من يحاولون صنع إنسان آلي ذي ذكاء صناعي، فالإرادة والمشاعر والخيال والابتكار والإبداع كلها أمور غير خاضعة لمعادلات رياضية، وفكرة برمجة إنسان آلي رسام يجرب كل احتمالات الصور ليحصل على لوحة مبدعة ستجعله يقف مشلولا أمام لوحة بيضاء إلى يوم القيامة!
إننا نتكلم عن إبداع مذهل للخالق سبحانه، الذي منح الإنسان الخيال، والمشاعر التي تعمل كالمرشح لهذه الخيالات فيما نسميه باسم الذوق، والحواس التي تلتقط جمال الكون وجمال المخلوقات لتستقي منها أجمل الإبداعات.. فكيف لإنسان آلي أن يصل إلى هذا مهما احتوى من برمجيات؟
هذا يرد على فكرة فيلم IRobot، فالفيلم يتصور أن بعض الأخطاء العشوائية في برمجة أحد الروبوات ولدت لديه الإحساس والإرادة والذكاء!.. لكن كما رأينا: الصدفة والعشوائية لا توصلان إلى أي شيء على الإطلاق!

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.