Category Archives: دانش

چه طور چند نفر یک چیز رو پیش‌بینی کنیم، بدون این که از پیش‌بینی هم با خبر باشیم

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

فرض کنین که چند نفریم و می‌خواهیم در مورد یک اتفاق در آینده پیش‌بینی‌هامون رو ثبت کنیم. مهمه که:

۱. از پیش‌بینی‌های همدیگه باخبر نشیم، چون روی پیش‌بینی‌مون تاثیر می‌گذاره و ممکنه به نوعی ایده بگیریم و ناخواسته تقلب کنیم. یعنی پیش‌بینی‌ها محرمانه بمونن.

۲. همه قبل از رخ دادن اتفاق، پیش‌بینی‌شون رو کرده باشن و ثبت کرده باشن و نتونن تغییر بدن (برای مثال بدونیم که هرکس در چه زمانی پیش‌بینی کرده، بدون این که از متن‌اش خبردار بشیم).

می‌شه هرکس متن پیش‌بینی‌اش رو در باکس موجود در این لینک وارد کنه، دکمه رو بزنه و اون عدد ۶۴ رقمی رو که بهش می‌دن به همه نشون بده (این عدد، خروجی «تابع درهم‌سازی» یا به انگلیسی hash function نوشته‌ی اصلی است). بعدتر که اتفاق مورد نظر افتاد، هرکس می‌تونه پیش‌بینی‌اش رو رو کنه. برای این که ببینیم حرف کسی عوض نشده باشه، کافیه که متن پیش‌بینی هرکس رو در این الگوریتم وارد کنیم و کد ۶۴ حرفی رو بگیریم که ببینیم آیا با اون کدی که قبل از اتفاق به همه داده بود یکی هست یا نه.

نکته‌ی مهم این تابع درهم سازی اینه که با دونستن عدد، در عمل ناممکنه که بتونیم متن اصلی رو پیدا کنیم (مگر این که تمام نوشته‌های ممکن رو امتحان کنیم). از طرف دیگه با دونستن متن اصلی، می‌تونیم به سرعت بررسی کنیم که آیا خروجی برابر با اون عدد از قبل اعلام شده می‌شه یا نه. هم خروجی سریع محاسبه می‌شه و هم این که خروجی یک نوشته‌ی ثابت همیشه همین یک عدد خواهد بود.

یک خاصیت این روش اینه که از «من از اولش هم می‌دونستم»های احتمالی جلوگیری می‌کنیم!

یک معمای ساده: مهره‌های دومینو در صفحه‌ی شطرنج

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

یک جواب ساده اینه که در هر ستون چهار مهره به صورت عمودی می‌گذاریم و به همین ترتیب با هشت ستون به این شکل، تمام سطرها رو پر می‌کنیم (به شکل‌های دیگه هم ممکنه). با این ترتیب با سی و دو مهره‌ی دومینو، صفحه‌ی شطرنج پر می‌شه.

حالا فرض کنین دو خونه‌ی گوشه‌ی مقابل هم رو از صفحه‌ی شطرنج حذف کنیم – برای مثال مربع پایین سمت چپ و مربع بالا سمت راست. حالا چه طور می‌تونین مهره‌های دومینو رو روی این صفحه‌ی جدید بچینین، چنان که تمام صفحه پوشونده بشه و مهره‌ها هم از صفحه بیرون نزنن؟ (با توجه به این که دو مربع از صفحه‌ی جدید حذف شده‌اند، باید از سی و یک مهره‌ی دومینو استفاده کنین تا این صفحه رو بپوشونین) پیشنهاد می‌کنم قبل از خوندن جواب، کمی در مورد مساله فکر کنین.

این مساله جواب نداره. اما چه طور می‌تونیم ثابت کنیم؟

فرض کنین هر مهره‌ی دومینو از یک مربع سیاه و یک مربع سفید تشکیل شده باشه (این فرض لطمه‌ای به مساله نمی‌زنه). وقتی در صفحه‌ی شطرنج بالا دو خونه رو حذف کردیم، تعداد خونه‌های سیاه به سی تا رسید در حالی که تعداد خونه‌های سفید هم‌چنان سی و دو تا باقی موند (البته رنگ خونه‌ها هم در درستی استدلال تاثیری نداره). شما به هیچ شکل نمی‌تونین با سی و یک مهره‌ی دومینو (که خود به خود شامل سی و یک مربع سیاه و سی و یک مربع سفیداند) صفحه‌ی شطرنجی رو بپوشونین که سی و دو خونه‌ی سفید داره و سی خونه‌ی سیاه. پس هیچ راهی نداره که این صفحه‌ی جدید رو با مهره‌های دومینو بپوشونین!

این متن برگرفته از صحبت‌های «ایان استوارت» بود؛ گفت که این یک اثبات قشنگ بود که تحسین شنونده رو به همراه می‌یاره. شاید یک نفر می‌رفت و یک برنامه‌ی کامپیوتری می‌نوشت و تمام حالت‌های ممکن رو امتحان می‌کرد و نتیجه می‌گرفت که نمی‌شه صفحه‌ی جدید شطرنج رو با مهره‌های دومینو پوشوند. اون هم یک اثباته، اما اون جور اثباتی قشنگ نیست.

به نظر «استیون استروگاتز»، اگر شما با شنیدن این استدلال لبخند به لب‌تون اومد یا حس خوش‌حالی یا شگفتی بهتون دست داد، شما یک لحظه‌ی ریاضیاتی (mathematical moment) رو تجربه کرده‌این.

تهیه‌ی غذا بدون حرارت

پروتئین‌ها تا می‌شوند (که به اصطلاح به این فرایند protein folding گفته می‌شود) و این تا شدن تاثیر مهمی در عمل‌کرد پروتئین در موجود زنده دارد. اگر پروتئین به شکل مناسب تا نشود یا حتا پروتئین تا شده شکلش را از دست بدهد موجب مشکل‌های بعدی می‌شود، مثل بیماری  که نمونه‌ای از آن فراموشی (آلزایمر) است. پروتئین بر اثر بعضی عوامل محیطی مثل میزان اسیدی-قلیایی بودن محیط یا دما تغییر شکل می‌دهد که به این وضعیت دِناتوره شدن (denaturation) یا واسرشتن می‌گویند. همین اثر دما بر تاشدگی پروتئین یکی از دلایلی است که موجودات زنده تنها در یک بازه‌ی محدود دمایی زنده می‌مانند و در دماهای کم‌تر یا بیش‌تر از بین می‌روند.

واسرشتن یکی از دلایلی است که مواد غذایی با پختن تغییر شکل می‌دهند. به این عمل واسرشتن حرارتی (thermal denaturation) می‌گویند. یک راه دیگر واسرشتن، تغییر شیمیایی محیط است که به واسرشتن سرد (cold denaturation) معروف است. نمونه‌ای از آن، تهیه‌ی غذایی به نام «سِویش» «سویچه» است که در ناحیه‌های ساحلی آمریکای مرکزی و جنوبی رایج است.

سویش سویچه غذایی دریایی است که معمولن از ماهی خام تازه‌ای درست می‌شود که در آب لیمو به همراه ادویه خوابیده باشد. از آن‌جا که این غذا نمی‌پزد، مهم است که ماهی تازه باشد تا از مسمومیت غذایی تا حد ممکن جلوگیری شود. در ضمن واسرشتن معمولن، و نه همیشه، برگشت ناپذیر است.

بخشی از این متن برگرفته از کتاب Spin Glasses and Complexity بود. اطلاعات زیست‌شناسی من محدود است و ممکن است اشتباه کرده باشم؛ لطفن اصلاح کنید.

پس‌نوشت: با تشکر از بهار که تلفظ درست غذا رو یادآوری کردن.

سیستم‌های پیچیده – پنجاه و یک – پیدا کردن دو سهم متضاد کار ساده‌ای نیست

Stocks

با خودتون می‌گین که بذار سبد سهامی درست کنم که با بالا و پایین رفتن‌های بازار تغییر عمده‌ای نداشته باشه. نصف سهام‌تون رو از سهامی می‌خرین که با قیمت نفت رابطه مستقیم داشته باشن و نصف دیگه رو از شرکت‌های هواپیمایی. اگر قیمت نفت بالا بره، سهام نفت‌تون بالا می‌رن و از اون طرف سهام شرکت هواپیمایی‌تون به خاطر قیمت نفت پایین میان. اگر قیمت نفت پایین بره، سهام نفت پایین میان، سهام شرکت هواپیمایی بالا می‌رن و به این ترتیب تعادل برقرار می‌شه؛ سبد سهام شما نسبت به تغییرات بیرونی به نسبت مقاوم می‌مونه.

اما با همین خرید هم‌زمان این سهام، به نوعی دارین این دو گروه سهم رو به هم پیوند می‌دین. تصور کنین که دیگران هم همین کار رو بکنن: یعنی سهم‌های به ظاهر متضاد رو با هم بخرن؛ به این ترتیب دو گروه مختلف سهم به هم وصل می‌شن. در این مثال، سهام نفتی و شرکت هواپیمایی به هم وصل می‌شن؛ بنا بوده بر خلاف هم تغییر کنن، اما بعد از این بیش‌تر با هم بالا می‌رن و با هم پایین میان. به عبارت دیگه، با این خرید هم‌زمان، به هم‌زمانی یا synchronization این دو سهم کمک کردین.

متن بالا برداشت شده از صحبت‌های «حمید بن‌براهیم» بود. ممکنه دقیق نقل نکرده باشم یا در نقل قول اشتباه داشته باشم که در اون صورت لطفن اصلاح کنین.

سیستم‌های پیچیده – پنجاه – چه گونه توییت‌ها ضربان قلب نیویورک را نشان می‌دهند

twitter and New York City

Image from New England Complex Systems Institute

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

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

Video from New England Complex Systems Institute

شروع اولیه‌ی این تحقیق اتفاقی بود. ما توییت‌ها رو به طور زنده می‌گرفتیم و هر پونزده دقیقه یک بار در یک فایل ذخیره می‌کردیم، فایل رو می‌بستیم و بعد فایل جدیدی برای توییت‌های پونزده دقیقه‌ی آینده باز می‌کردیم. یک روز به فهرست فایل‌ها نگاه کردم ببینم حجم فایل‌ها از الگویی پیروی می‌کنه یا نه (و به عبارت دیگه آیا تعداد توییت‌ها در زمان از الگویی پیروی می‌کنه یا نه). با دستور ls -ltr لیست فایل‌ها رو بر اساس تاریخ گرفتم و حجم فایل‌ها رو در زمان رسم کردم. دیدم بله، حجم فایل‌ها از یک الگوی متناوب پیروی می‌کنه (که سینوسی نیست) و دوره‌ی تناوب‌اش بیست و چهار ساعته. همین شروعی شد برای این که به دینامیک داده‌ی موجود نگاهی بندازیم و به دنبال این باشیم که ازش الگو در بیاریم.

متوقف کردن توربین‌های بادی

تصویر از ویکی‌پدیا

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

سوال خودتون رو پیدا کنین

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

جمله‌ی بالا از «دانکن واتز» در یک نوشته با عنوان «آیا باید تحصیلاتم را ادامه دهم؟» بود. جای خوشحالی داشت؛ مدت‌هاست سوالی دارم و هیچ وقت نتونستم بیان کنم که چرا این سوال جالبه و برای همین هم تقریبن کنارش گذاشتم. الان می‌بینم که شاید اون سوال، «سوال من» بوده!

چرا اندازه‌ی هر عدد محدود از هر عدد تصادفی‌ای کوچک‌تره؟

در پست پیش از یک تاس ده رقمی نوشتم که احتمال اومدن هر کدوم از رقم‌های ۰ تا ۹ اش برابره. برای این که یک عدد کاملن تصادفی تولید کنیم (یعنی عدد در بازه‌ی صفر تا مثبت بی‌نهایت باشه)، روش زیر رو پیشنهاد می‌کنم: برای رقم یکان، تاس رو بندازین و هر عددی اومد، اون رو به عنوان رقم یکان بگذارین. برای رقم دهگان هم تاس بندازین و رقم دهگان عدد رو بسازین و به همین ترتیب به سراغ رقم صدگان و بعد هزارگان و… به همین ترتیب برین و این کار رو بی‌نهایت بار انجام بدین. با این ترتیب یک عدد صحیح کاملن تصادفی در بازه‌ی صفر تا مثبت بی‌نهایت دارین.

سوال: احتمال این که عدد تصادفی تولید شده از یک عدد دل‌خواه شما (برای مثال ۱۷۸۰۲۵۰۰۳۶۴۹۰۴۲۳۳۱۸۹۵۶۶۱۹۲۰۳) کوچک‌تر باشه چه قدره؟

– صفر! به عبارت دیگه، امکان نداره شما عددی انتخاب کنین و عدد تصادفی تولید شده از اون عدد انتخابی شما کوچیک‌تر باشه! (جالب نیست؟)

برای نمونه فرض کنین عدد مورد نظر شما صد رقمیه. در این صورت در تولید عدد تصادفی، تقریبن صد رقم اول رو در نظر نمی‌گیریم (نه این که مهم نباشن، اما می‌تونیم برای سادگی محاسبه، از صد رقم اول چشم‌پوشی کنیم). اما باید دقت کنیم که در عدد تصادفی، رقم صد و یکم (از سمت راست) باید صفر باشه (اگر صفر نباشه، پس عدد تصادفی‌ای که تولید می‌شه، از عدد انتخابی ما بزرگ‌تره). احتمال صفر بودن رقم صد و یکم ده درصده. رقم صد و دوم هم باید صفر باشه و به همین ترتیب رقم صد و سوم و تا بی‌نهایت همه باید صفر باشن و احتمال صفر بودن همه‌ی این‌ها می‌شه یک دهم به توان بی‌نهایت، یعنی صفر. به عبارت دیگه، اگر یک عدد دل‌خواه محدود (finite) انتخاب کنین، عدد تصادفی تولید شده از اون عدد بزرگ‌تره.

برای این که بازه‌ی عددهای حقیقی رو پوشش بدیم (و محدود به عددهای صحیح نباشیم)، کافیه یک عدد تصادفی بین صفر و یک تولید کنیم و به عدد تولید شده اضافه کنیم. روش تولیدش رو در پست قبل نوشتم که به همین روش گفته شده شبیهه.

در تولید عدد تصادفی، عددهای منفی رو در نظر نگرفتیم. شاید بشه یک بار اضافه تاس انداخت؛ اگر عددش زوج بود که هیچی، اگر فرد بود، عدد تصادفی تولید شده رو منفی کنیم. با این ترتیب عددهای تصادفی ما بازه‌ی منفی بی‌نهایت تا مثبت بی‌نهایت رو به طور یک‌نواخت پوشش می‌دن.

نمی‌دونم چه قدر دقیق خواهد بود که بگیم عددهای تصادفی یا مثبت بی‌نهایت هستن یا منفی بی‌نهایت و به هر حال هیچ کدوم محدود نیستن (احتمالن به تعریف «بی‌نهایت» بستگی داره).

پس‌پس‌نوشت: این‌ها رو هم از خودم گفته‌ام و جایی نخونده‌ام؛ احتمال داره اشتباه کرده باشم یا گفته‌هام دقیق نباشن. اگر نظری دارین، لطفن در میون بگذارین.

چرا هیچ عدد تصادفی‌ای برابر با عدد انتخاب‌شده‌ی ما نیست؟

سوال: می‌خواهیم با یک تاس ده رقمی، که در هر بار انداختن یکی از عددهای صفر تا نه رو با احتمال‌های برابر نشون می‌ده، یک عدد واقعن تصادفی تولید کنیم. چه کار کنیم؟

– برای ساده شدن مساله، فرض کنیم بناست که عدد تصادفی، عددی بین صفر و یک باشه. با این ترتیب شروع می‌کنیم به ساختن عدد: اول یک صفر و ممیز می‌نویسیم، یعنی ۰٫ و بعد رقم‌های پشت ممیز رو پر می‌کنیم. تاس رو می‌اندازیم و هر عددی نشون داد، پشت ممیز می‌گذاریم، مثل ۰٫۶ و بعد به سراغ رقم بعدی عدد تصادفی‌مون می‌ریم و به همین ترتیب با انداختن تاس، رقم دوم بعد از ممیز رو می‌سازیم، مثل ۰٫۶۸ و به دنبالش رقم سوم مثل ۰٫۶۸۲ و به همین ترتیب جلو می‌ریم. عدد ساخته شده وقتی صددرصد تصادفیه که این کار رو تا بی‌نهایت انجام داده باشیم؛ به عبارت دیگه، وقتی هر بی‌نهایت رقم بعد از ممیز رو به این شکل پر کردیم، می‌تونیم ادعا کنیم که عدد کاملن تصادفی‌ای در بازه‌ی صفر و یک تولید کرده‌ایم چنان که تمام عددهای بازه‌ی صفر و یک شانس برابر برای انتخاب شدن داشته‌اند.

سوال: یک عدد به خصوص در نظر داریم، برای مثال ۰٫۷۴ رو در نظر بگیریم. احتمال این که یک عدد تصادفی انتخاب کنیم و برابر با عدد انتخابی ما باشه چنده؟

– صفر! به عبارت دیگه اگر یک عدد دل‌خواه انتخاب کنین، هیچ وقت امکان نداره که یک عدد تصادفی برابر با عدد انتخاب‌شده‌ی شما باشه، هیچ وقت! (جالب نیست؟) بیایین احتمالش رو حساب کنیم: برای این که عدد تصادفی برابر با عدد انتخاب شده‌ی شما باشه، لازمه که در عدد تصادفی، رقم اول بعد از ممیز ۷ باشه، یعنی احتمال ده درصد. بعد لازمه که رقم دوم ۴ باشه که این هم احتمالش ده درصده، لازمه رقم سوم صفر باشه که این هم احتمالش ده درصده و رقم چهارم هم صفر باشه و به همین ترتیب. اگر تمام این ده درصدها رو در هم ضرب کنین، احتمال برابری عدد تصادفی با عدد انتخابی شما می‌شه ۰٫۱ به توان بی‌نهایت (به خاطر بی‌نهایت رقم) که این احتمال برابر با صفره.

سوال: آیا امکان داره که یک عدد تصادفی داخل بازه‌ای باشه که ما انتخاب کرده‌ایم؟

بله! فرض کنین که بازه‌ی انتخابی ما عددهای بین ۰٫۷۴ و ۰٫۷۵ باشه. برای این که عدد تصادفی در این بازه قرار بگیره، لازمه رقم اولش ۷ باشه (یعنی ده درصد) و رقم دومش هم ۴ باشه (یعنی ده درصد) و رقم سوم و چهارم و بقیه هم مهم نیستن. بنابراین به احتمال ۰٫۱ × ۰٫۱ یعنی ۰٫۰۱ عدد تصادفی در بازه‌ی بین عددهای ۰٫۷۴ و ۰٫۷۵ خواهد بود.

پس‌نوشت: فرض کردم که تاس عدد تصادفی تولید می‌کنه. قبول دارم که عددش چندان هم تصادفی نیست و اگر معادله‌ی حرکتش و تمام عوامل مکانیکی تاثیرگذار روی تاس رو داشته باشیم و شرایط اولیه رو به دقت بدونیم، می‌تونیم با اطمینان نتیجه‌ی پرتاب تاس رو پیش‌بینی کنیم.

پس‌پس‌نوشت: این‌ها رو از خودم گفته‌ام و جایی نخونده‌ام؛ احتمال داره اشتباه کرده باشم یا گفته‌هام دقیق نباشن. اگر نظری دارین، لطفن در میون بگذارین.

چه زمانی وصلت دو خویشاوند پذیرفته نیست؟

آیا امروز در جایی از دنیا فرهنگی هست که وصلت خواهر و برادر رو بپذیره؟ خواهر و برادر نیمی از ژن‌هاشون مشترکه و از نظر زیستی (یا به عبارت دقیق‌تر فرگشتی)، طبیعیه که چنین وصلتی پسندیده نباشه. اما پسرعمو دختر عمو، پسردایی دختر عمه و… (یا در زبون انگلیسی cousin ها) چه طور؟ چه تعداد از مردم دنیا چنین وصلتی رو می‌پذیرن؟

اگر با وصلت پسرعمو دخترعمو مشکلی ندارین، فرض کنین دو برادر دوقلوی هم‌سان، با دو خواهر دوقلوی هم‌سان وصلت کنن. با وصلت بچه‌های این‌ها مشکلی دارین؟ خوبه بدونین بچه‌های این‌ها (یعنی همین عموزاده‌ها و خاله‌زاده‌ها) از نظر ژنتیکی دقیقن مثل خواهر و برادر می‌مونن: هریکی‌شون با هرکدوم دیگه نصف ژن‌هاشون مشترکه. شاید در این مورد خاص وصلت عموزاده‌ها درست نباشه.

دو برادر دوقلوی هم‌سان رو تصور کنین که بچه‌دار شده‌ان (همسرهای این دو برادر نسبتی با هم ندارن). آیا وصلت بچه‌های این دو برادر اشکال داره؟ این رو بگم که اون دخترعمو و پسرعمو یک چهارم ژن‌هاشون مشترکه، به همون اندازه که یک نفر با خاله، عمو و… ژن مشترک داره.

پس بگیم قضیه در مورد پسرعمو دخترعموی معمولی فرق می‌کنه: اون‌ها فقط یک هشتم ژن‌هاشون با هم مشترکه و در نتیجه وصلت‌شون اشکالی نداره. به عبارت دیگه قبول کنیم که اگر یک هشتم یا کم‌تر اشتراک ژن بین دو نفر وجود داشته باشه، وصلت اشکالی نداره. در اون صورت، بین یک دختر و پدر پدربزرگش هم یک هشتم ژن‌ها مشترک هستن. یک پسر با خاله‌ی پدرش هم تنها یک هشتم ژن مشترک دارن. آیا چنین وصلت‌هایی پذیرفته‌ان؟