زمان الگوریتم تصادفی خودش یک متغیر تصادفی است که به انتخاب تصادفی وابسته است. در نتیجه زمانی که حساب می کنیم، متوسط بدترین زمان بین انتخابهای تصادفی مختلف است. (ما هیچ فرضی روی ورودی و تصادفی بودن آن نمی کنیم)
قضیه Yao's minimax: بدترین ورودی (worst case) را در نظر بگیرید. بهترین الگوریتم قطعی روی این ورودی جوابش همیشه از هر الگوریتم تصادفی بهتره.
این یک کران پایین برای زمان الگوریتم تصادفی میده. برای به دست آوردن این کران یک ورودی بد پیدا می کنیم (کرانی که پیدا می کنیم به بد بودن این ورودی بستگی داره) و ثابت می کنیم که هیچ الگوریتم قطعی نیست که بتونه برای این خوب کار کنه.
همین قضیه از دید نظریه بازی ها: یک بازی جمع صفر بین آلیس و باب، که آلیس هر بار یه الگوریتم قطعی رو بر می داره و باب یه ورودی رو بر می داره و هزینه هم هزینه ی اجرای الگوریتم با اون ورودیه. پس هر الگوریتم تصادفی یک حرکت آلیس میشه. طبق قضیه minimax ون نیومن، باب حتما یه حرکت تصادفی داره که حداقل به خوبی وقتی که آلیس فقط یک الگوریتم رو انجام بده، کار کنه. (یعنی باب می تونه ورودی رو انتخاب کنه که هیچ الگوریتم قطعی نتونه بهتر از این روی این ورودی جواب بده.)
برای سوال حل کردن با این باید به سری ورودی رو با یه احتمالی مشخص کنیم، بعد مینیمم زمان (یا هر هزینه ی دیگه ای که بود) رو به دست میاریم، بعد نتیجه می گیریم که هیچ الگوریتم تصادفی نمی تونه از این بهتر باشه. (برای هر ورودی ای!)
منبع: http://www.cs.nthu.edu.tw/~wkhon/random12/lecture/lecture5.pdf
مساله یه پروسه است که خودش که تموم میشه یه تعداد رندمی از خودش رو شروع می کنه! :))
فرض کنید هر نسخه از این برنامه، n تا نسخه از خودش رو با احتمال p هر کدوم رو شروع می کنه. (دوجمله ای n و p)
تعداد متوسط کپی های ساخته شده توسط یک پروسه چقدره؟
حل:
ایده: (به قول نویسنده اصلی!) نسل ها
در نسل i، پروسه ها توسط پروسه های نسل i-1 ساخته شده اند، متغیر تصادفی yi را تعداد پروسه های نسل i تعریف می کنیم، طبق چیزی که سوال داده توزیع دوجمله ای n و p است.
پس حاصل جمع کل اینها هم یه متغیر با توزیع دوجمله ای است که میانگینش میشه
E(y) = n0p+n1p+n2p+...
ni = تعداد پروسه های نسل i
رابطه ی بین ni ها این طوریه:
ni = np*n(i-1)
(با احتمال شرطی ثابت کرده)
پس اگر np >1 باشه که بینهایت میشه، وگرنه میشه
1/(1-np)
می تونست بگه آزمایش برنولیه:
E(#repeat until success) = 1/p(success)
p(success) = 1-np
p(fail) = np
چون فقط میانگین رو می خواست به دست بیاره، می تونست فقط فکر کنه که np تا پروسه دارن هر بار ساخته میشن!
http://www.cs.nthu.edu.tw/~wkhon/random12/lecture/lecture13.pdf
توپ و ظرف:
m توپ را در n ظرف به صورت یکنواخت و مستقل می اندازیم. می خواهیم به سه سوال زیر جواب بدهیم:
1- توزیع توپ ها چیست؟
2- چند تا ظرف خالی داریم؟
3- بیشترین تعداد توپ در یک ظرف چندتا است؟ (maximum load)
جواب:
3- ماکسیمم لود:
Pr( L > 3 ln(n)/ln(ln(n)) ) < 1/n
2- احتمال خالی بودن هر ظرف: آزمایش برنولی: اگر توپ درون این ظرف افتاد موفقیت و در غیر این صورت شکست
p( success ) = 1/n
p( fail ) = 1-1/n
p(emty bin) = p( fail in all m repeats ) = (1-1/n)^m = e^-(m/n)
1- احتمال اینکه در هر ظرف دقیقا r توپ داشته باشد:
( e^-(m/n) ) * (m/n)^r / r!
که توزیع پواسون است!
توجه: توزیع پواسون با آزمایش پواسون متفاوت است. توزیع پواسون:
Pr(X=r) = e^-(avg) * avg^r / r!
نکته: مجموع متغیرهای پواسون متغیر پواسون با میانگین مجموع آنهاست.
**ارتباط متغیر تصادفی پواسون و نامساوی چرنف:
* می دانیم توزیع توپ ها در هر ظرف یک توزیع دوجمله ای است، که تعداد متغیرهای آن به تعداد ظرفها و احتمال آن 1 تقسیم بر تعداد توپها است.
اگر تعداد تکرار بینهایت باشد، توزیع دوجمله ای به توزیع پواسون تبدیل می شود.
------------------------------------------
گراف رندم
http://www.cs.nthu.edu.tw/~wkhon/random12/lecture/lecture16.pdf
دو نوع گراف رندم داریم:
G(n,p) که در آن احتمال انتخاب هر یال p است و تعداد راسها n است.
G(n,N) که در آن N یال به صورت یکنواخت از یالهای باقیمانده انتخاب و به گراف قبلی اضافه می کنیم. (شروع از گراف تهی)
فرق این دو تا مثل فرق دوجمله ای و پواسونه، یعنی برای N بزرگ مثل هم هستند تقریبا.
گراف رندم، احتمال انتخاب هر یال p است، چون انتخاب یالها مستقل است می توانیم از نامساوی چرنف استفاده کنیم.
(اگر راسها را انتخاب می کردیم انتخاب یالها مستقل نبود و نمی توانستیم از چرنف استفاده کنیم.)
توپ = یالها
ظرف = راسها
هر بار دو توپ پرت می کنیم!