بازی زندگی کانوی (Conway's Game Of Life)

شنبه, ۱۹ شهریور ۱۴۰۱، ۱۱:۲۴ ق.ظ

جان هورتون کانوی (John Horton Conway) ریاضی دانی بود که ایده یک بازی zero player جالب به اسم بازی زندگی رو داد . شاید سوال پیش بیاد بازی zero player چیه ؟‌

 

بازی های zero player بازی هایی هستند که هیچکس اونارو بازی نمیکنه . یعنی هیچ پلیری ندارن . به محض اجرای بازی خود بازی تکمیل میشه و میره جلو و تعاملی با کاربر نداره . این بازیا اکثرا وابسته به وضعیت ابتداییشون هستند . یعنی وضعیت ابتدایی در شروع مشخص میکنه که بازی چجوری پیش بره .

 

بازی زندگی یه شبیه سازی از یه دنیاس . اولین بار با ویدیو های جادی با این ایده آشنا شدم . خیلیامون قطعا یه زمانایی به فکر شبیه سازی و ساخت یه جهان بودیم . اینکه اصلا ممکنه بشه اینکارو کرد یا نه ؟‌ 

 

در بازی زندگی آقای کانوی ، ما یه جهان دو بعدی رو شبیه سازی میکنیم . یعنی کل جهانمون مثل یه جدول n در n میمونه . 

هر خونه جدول میتونه نماینده یک سلول یا واحد از این جهانمونه . هر سلول یا خونه جدول میتونه دو حالت متقاوت داشته باشه : ۱ - زنده   ۲- مرده 

شکل زیر :

خونه های زنده رو با رنگ سیاه نشون میدیم و برعکس اونایی که سلولای مرده ان با رنگ سفیدن یعنی تو خالی ان .در واقع در تصویر بالا ، جدولی که میبینیم مثالی از یه جهان در سبک این بازیه که یه سری زنده و یه سری مرده توش هستن .

 

در ابتدا این ماییم که مشخص میکنیم این بازی با چه حالت ابتدایی اجرا بشه . یعنی کدوم خونه ها در ابتدا زنده و کدوما مرده باشن . بعدش دیگه بازی طبق یه سری قوانینی و با توجه به این وضعیت ابتدایی رشد میکنه و تا ابد ادامه پیدا میکنه . به عبارتی جهانی که شبیهسازی کردیم شروع به کار میکنه . 

هر خونه در جهان دو بعدیمون 8 تا همسایه داره . در واقع همسایه های هر خونه اون خونه هایی از جدول هستند که بهش چسبیدن یا دورشو گرفتن . (خونه بالاو پایینش . چپ و راستش و چهار خونه گوشه های چسبیده بهش) . تصویر بالا این موضوع رو مشخص میکنه .

 

۴ تا قانون اصلی برای این بازی هست :‌

  1.  هر سلول زنده ای که بیش از ۳ تا همسایه زنده داره به علت ازدحام جمعیت میمیره .
  2.  هر سلول زنده ای که کم تر از ۲ تا همسایه زنده داره به علت کمبود جمعیت میمیره .
  3.  هر سلول زنده که دقیقا ۲ یا ۳ همسایه زنده داره زنده میمونه و به نسل بعد میره .
  4. هر سلول مرده که دقیقا ۳ تا همسایه زنده داره در نسل بعدی زنده خواهد شد (بازتولید) .

 

حالا یه بار این بازیو از طریق سایت زیر خودتون آنلاین انجامش بدید تا این قوانین رو ببینید چجوریه . بعد ادامه پست رو میریم که باحال تر میشه جریان :

یه سایت آنلاین برای بازی کانوی :‌ 

https://playgameoflife.com/

وارد سایت که شدید به صورت دلخواه با زدن رو یه سری از خونه ها سلول های زنده ابتدایی رو قبل از شروع بازی مشخص کنید . سلول هایی بسازید که همسایه هم دیگن . چون اگه از هم دور باشن و همسایه نداشته باشن میمیرن زرتی طبق قوانین . به شکل پیشفرضشم توجه نکنید . سعی کنید صفحه رو شلوغ کنید یا هرجور میخواید بچینیدش . بعد روی دکمه start سایت که بزنید بازی اجرا میشه و میبینید جهان شروع به کار میکنه و طبق قوانینش پیش میره . 

 

حالا بعد از بازی کردنش درک بهتری نسبت بهش پیدا کردید . 

خب این جهانم مثل جهان خودمون قوانین خودشو داره که واحد های زنده و مرده داخلش طبق این قوانین تغییر میکنن . 

با توجه به  قوانین حاکم بر بازی زندگی ، یه سری از الگو های زنده تو این جهان کشف شدن که کارای خاصی میکنن . 

 

شکل های زیر الگو های ثابت هستند (یعنی اگه اینا رو تو سایتی که معرفی کردیم بچینید اینا هیچ تغییری نمیکنن تو بازی) :

 

یه سری از الگو ها نوسانگر هستند . یعنی هی بین چند تا حالت نوسان میکنن و برمیگردن سر حالت اولیشون :

1 - Blinker (تناوب :‌۲)

2 - Toad (تناوب : ۲)

3 - Beacon (تناوب : ۲)

4 - Plusar (تناوب‌ : ۳)

5 - Pentadecathlon (تناوب : ۱۵)

 

و اما الگو هایی که من عاشقشونم . الگو های فضاپیما (spaceship) . اینا الگو هایی هستند که مثل فضاپیما  داخل این جهان حرکت میکنن و میرن جلو هی :

1 - Glider ( خیلی معروف و کاربردی اسمشو یادتون بمونه)

2 - Light weight spaceship (LWSS)

3 - Middle weight spaceship (MWSS)

4 - Heavy weight spaceship (HWSS)

 

این شکلا رو خودتون پیاده سازی کنید ببینید . فک کنم شکل پیشفرض اون سایته که اول رفتید توش یه گلایدر بود . برامن همینجور بود . 

 

موضوع اینه که آقای کانوی حدس زده بودن که احتمالا هیچ الگویی نیست که به صورت بینهایت رشد کنه . یعنی هر الگویی داخل این بازی بالاخره یه جا یی متوقف میشه و تا ابد رشد نمیکنه داخل جهان . برای همین کانوی اومد یه جایزه گذاشت . برای اولین کسی که بتونه این حدس رو اثبات یا نقض کنه . این جایزه توسط یه آقایی برده شد به اسم بیل گاسپر (Bill Gosper) . بیل گاسپر برای اولین بار الگوی بسیار وحشتناک باحالی رو درآورد تو این بازی . اسم این الگو (Gosper glider gun) هستش . اون گلایدره رو یادتونه ؟ جزو فضاپیماها بود ؟ این الگوی اقای گاسپر گلایدر تولید و شلیک میکنه !! :) . درواقع تفنگ گلایدره . به طور بینهایت گلایدر شلیک میکنه . این الگو اولین گلایدرش رو در پونزدهمین تناوب خودش شلیک میکنه و بقیه گلایدر ها رو در سی امین تناوب هر دور . 

شکل این الگو :‌ 

نحوه کارکرد الگو رو ببینید :

همینطور که میبینید از سمت جنوب شرقی گلایدر شلیک میشه هی .

برای سال های زیادی تفنگ گلایدر آقای گاسپر کوچیکترین تفنگ گلایدری بود که شناخته شده بود . اما در سال ۲۰۱۵ یه تفنگ گلایدر دیگه به اسم "Simkin glider gun" شناخته شد که در ۱۲۰ امین تناوب هر دور یه گلایدر شلیک میکنه . شکل این تفنگ : 

یک سری دیگه از الگو ها هم هستند که بهشون میگن Methuselah . این الگو ها وقتی شروع به کار میکنن نسبتا زمان زیادی میبرن تا از بین برن یا به شکل ثابتی برسن . اولین این نوع الگو  که کشف شد اسمش R-pentomino هستش :

نمونه های دیگه ای هم از این الگو وجود داره :

 

الگوی Diehard بعد از ۱۳۰ نسل حرکت ناپدید میشه

الگوی Acorn بعد از 5206 نسل حرکت ، 633 تا سلول زنده باقی میزاره و همچنین ۱۳ گلایدر شلیک میکنه .

 

اما در کنار این ها الگوهایی هم هستند که تا بینهایت رشد میکنند :‌

 

الگوهای دیگه ای وجود دارن به اسم puffer trains . اینا مثل قطار میمونن . در جهان شروع به حرکت به سمت جلو میکنند و پشت سرشون هم یه سری پسماند جا میزارن : 

 

الگو بعدی که معرفی میکنیم rake ها هستند . glider gun هارو یادتون ؟ گلایدر تولید میکردن . rake ها علاوه بر اینکه حرکت میکنند گلایدر هم شلیک میکنند برخلاف glider gun های قبلی که ثابت بودن :

 

یه الگوی وحشتناک دیگه وجود داره بهش میگن breeder که بازم آقای گاسپر که تفنگ گلایدری رو ساخته بودن تولیدش کردن . این الگو همینجور که حرکت میکنه تفنگ گلایدر میسازه میره :||‌! قبلیا گلایدر شلیک میکردن این خود تفنگشو هی میسازه :

 

اینا یه سری الگو از این بازی بودن که بررسی کردیم . اما معجزه این بازی به همینا ختم نمیشه . شاید عجیب به نظر برسه ولی بر پایه همین بازی زندگی میشه یه کامپیوتر ساخت !‌

داخل بازی زندگی میشه گیت های NOT , OR , AND  رو شبیه سازی کرد . چجوری ؟‌از طریق برخورد گلایدر ها بهم دیگه . در واقع اینجوری میشه مدار های منطقی مختلف رو از طریق بازی زندگی شبیه سازی کرد. همون تفنگ گلایدری گاسپر رو فرض کنید . یه جریانی از گلایدر ها رو شلیک میکرد . این جریان گلایدر ها رو میتونیم جریان الکتریکی در نظر بگیریم . وجود جریان گلایدر رو معادل بیت ۱ منطقی و نبودش رو معادل بیت صفر منطقی در نظر میگیریم . 

من تو زمینه الکترونیک و مدار های منطقی سررشته ای ندارم ولی اگه به این موضوع علاقه مندید پست زیر رو بهتون پیشنهاد میکنم . در پست زیر یه اقایی اومده توضیح داده چجوری میشه گیت های منطقی رو با بازی زندگی کانوی پیاده سازی کرد و تهش کاری که میخواد بکنه خیلی جالبه . هدف نهایی پست زیر اینه که با بازی زندگی کانوی یه پردازنده intel 4004 رو طراحی کنیم و با استفاده از اون خود بازی زندگی رو شبیه سازی کنیم دوباره :) 

لینک پست : https://nicholas.carlini.com/writing/2020/digital-logic-game-of-life.html 

 

یکی از چیزایی که بازی زندگی کانوی رو باحال میکنه سادگیشه . خیلی راحت میتونید خودتون با یه زبان برنامه نویسی که مد نظرتونه پیاده سازیش کنید . برای ساختن جهانش کافیه یک آرایه دو بعدی در نظر بگیرید . 

جادی تو کانالش این بازی رو به زبان سی نوشته . با هر زبانی دوست دارید میتونید طراحیش کنید . آموزش هاشم پره تو اینترنت .

 

در آخر هم این فیلم بسیار زیبا که طرح های جالبی رو در بازی زندگی کانوی پیاده کرده رو پیشنهاد میکنم ببینید :

https://www.aparat.com/v/jcXqV

 

منابع استفاده شده :

ویکی پدیا

 

فعلا خدافظ ....

موافقین ۵ مخالفین ۰

عههههه

از یه چیز دو بعدی ساده چه الگوهای پچم ریزونی درست میشه ...

خیلی ساده به نظر میرسه . یه جدول دو بعدیه و ۴ تا قانون فقط . قطعا کار راحتی برای کسی که اولین بار این ایده رو داده نبوده . چقد شگفت زده شده از دیدن نتیجش !

همنطور که خودت هم در انتهای مطلب گفتی، میشه باهاش مدار های دیجیتال هم شبیه سازی کرد، و یکسری عملگر هایی مثل جمع، جمع شرطی و... رو انجام داد، نکته جالب تر اینکه دانشمندی انگلیسی به اسم Alan Turing (که معروف به پدر علوم کامپیوتر مدرن هم هست) اومد گفت هر چیزی که بتونه یکسری عملگر ها در دستورات رو انجام بده، Turing complete هست، به این معنا که هرچیزی رو میتونه محاسبه کنه. بازی زندی کانوی هم Turing complete هست. خیلی از موارد دیگه هم Turing complete هستن حتی اسلاید های پاورپوینت و...
 

شنیده بودم این مطلبو در موردش ولی چون خیلی اطلاعی نداشتم از اینکه Turing Complete به چه معناس حرفی ازش نزدم . جالب شد حتما میرم در موردش میخونم ...
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">