CourseProject.pdf

‫پروژه ی آمار و احتمال‬
‫مقدمه‬
‫در این پروژه قصد داریم یک شبکه اجتماعی را با یک گراف جهت دار مدل کنیم و انتشار اخبار در این شبکه را بررسی‬
‫کنیم‪ .‬مدل ما به این شکل است که هر راس نشانگر یک شخص در آن شبکه اجتماعی می باشد و وجود یالی از ‪ a‬به ‪ b‬به معنی‬
‫این است که ‪ a‬صفحه ‪ b‬را نگاه می کند‪.‬‬
‫برای بررسی انتشار اخبار‪ ,‬شرایط اولیه ای به شبکه می دهیم‪ ,‬به این معنی که یک سری از راس ها از آن خبر مطلع می شوند‪ .‬این‬
‫راسها به عنوان مبدا آن خبر هستند‪ .‬سپس بصورت دوره ای )‪ (turn based‬راس ها را بروز رسانی میکنیم‪.‬‬
‫جزییات‬
‫هر یال در این گراف وزنی دارد‪ .‬وزن آن پارامتری است که مشخص میکند شخص مبدا طبق چه فرآیندی صفحه شخص‬
‫مقصد را می بیند‪ .‬برای مدل کردن این فرآیند باید فرض کنید دیدن صفحه یک فرآیند برنولی است و پارامتر ‪ p‬همان وزن یال‬
‫است‪ .‬یعنی در هر دوره با احتمال ‪ p‬صفحه مقصد را نگاه می کند‪( .‬اگر فرآیند را با فرآیند پواسون مدل کنید‪ ,‬نمره اضافی دارد) ‪.‬‬
‫خبرها نیز انواع مختلفی دارند‪ .‬تفاوت خبرها در نرخ انتشار آنهاست‪ .‬به این معنی که اشخاص مختلف پس از مشاهده‬
‫خبرهای از نوعهای مختلف‪ ،‬آنها را با احتماالت متفاوتی به اشتراک میگذارند‪ .‬به این معنی که هر شخص در هر دوره‪ ,‬به صفحاتی‬
‫رجوع خواهد کرد (البته ممکن است در بعضی دور ها اصال رجوع نکند)‪ .‬اگر آن شخص تا به حال از خبر مطلع نشده باشد و به صفحه‬
‫ای رجوع کرد که آن صفحه آن خبر را به اشتراک گذاشته است ( دقت کنید که دانستن کافی نیست‪ ,‬یعنی شخصی که به آن رجوع‬
‫شده‪ ,‬باید هم بداند خبر را و هم آنرا به اشتراک گذاشته باشد) او هم از آن خبر مطلع خواهد شد‪ .‬حال که از آن خبر مطلع شد‪ ,‬با‬
‫احتمال ‪ rate_i‬آن خبر را در دور بعدی به اشتراک خواهد گذاشت‪ .‬که اینجا ‪ i‬نشان دهنده نوع خبر است‪ .‬در این پروژه ‪ 4‬نوع‬
‫خبر خواهیم داشت و از این رو هر راس‪ 4 ,‬فیلد از نوع ‪ double‬دارد که نشاندهنده احتمال بازنشر خبرهای از انواع مختلف توسط‬
‫آن کاربر است‪ .‬توجه کنید که هر کاربر تنها در اولین دفعهای که یک خبر را مشاهده میکند در مورد بازنشر آن تصمیم میگیرد و‬
‫اگر تصمیم به عدم نشر آن خبر گرفت در دفعات بعد که آن خبر را در صفحات دیگران میبیند نیز آن خبر را بازنشر نمیدهد‪.‬‬
‫فرمت ورودی‬
‫ورودی هایی که به شما داده می شود‪ ,‬متشکل از ‪ 3‬فایل متنی به نام های ‪ Edges‬و ‪ Nodes‬و ‪ Seed‬می باشد‪ .‬دو‬
‫فایل اول مدلی که برای شبکه اجتماعی در نظر داریم را مشخص میکنند و فایل سوم شرایط اولیه انتشار یک خبر را مشخص‬
‫میسازد‪.‬‬
‫در فایل راس ها‪ ,‬هر خط یک راس را تعریف میکند‪ .‬به این شکل که ‪:‬‬
‫‪NodeIndex NodeClass Rate1 Rate2 Rate3 Rate4‬‬
‫دقت کنید که اندیس راس یک متغیر از نوع ‪ int‬هست و کالس راس )‪ ) Node Class‬از نوع ‪ String‬می باشد و‬
‫شما فقط کافی است در پیاده سازی تان فیلدی جهت ذخیره آن تعبیه کنید‪ .‬کاربرد آن این است که بتوانیم دسته خاصی از‬
‫راسها را بطور مجزا تحلیل کنیم‪.‬‬
‫در فایل یالها‪ ,‬هر خط یک یال را تعریف میکند‪ .‬به این شکل که‪:‬‬
‫‪SrcIndex DestIndex EdgeParameter‬‬
‫پارامتر یال (وزن یال) همان احتمال رجوع در هر دور است‪( .‬اگر رجوع کردن را با پواسون مدل کردید‪ ,‬این پارامتر فرآیند‬
‫پواسونتان خواهد بود)و در فایل ‪: Seed‬‬
‫‪NewsType Node1Index Node2Index ... NodeKIndex‬‬
‫این فایل فقط یک خط دارد و در آن ابتدا نوع خبر (عددی صحیح بین ‪ 1‬تا ‪ ) 4‬و سپس تعدادی عدد می آید که هر کدام‬
‫اندیس یک راس است‪ .‬این راس ها مبدا خبر خواهند بود‪.‬‬
‫خروجی‬
‫برنامه شما باید نهایتن به عنوان خروجی‪ ,‬نمودار تعداد راس هایی که از خبر اطالع یافته اند را بر حسب زمان رسم کند‪.‬‬
‫همچنین باید بتواند بطور همزمان برای ‪ Class‬های مختلف از راس ها ( اگر یادتان باشد گفتیم برای هر راس یک کمیت از جنس‬
‫رشته بعنوان ‪ Class‬در ورودی به شما داده می شود‪ ).‬تعداد باخبر ها بر حسب زمان را روی یک نمودار رسم کند (با رنگ های‬
‫مختلف)‪ .‬با این کار میتوانیم سرعت انتشار خبر را برای دسته های مختلف از کاربران مقایسه کنیم‪ .‬این افراز کاربران مثلن می تواند‬
‫بر اساس رده سنی‪ ,‬یا میزان تحصیالت‪ ,‬یا ملیت باشد‪.‬‬
‫دقت کنید که بخش رسم نمودارتان می تواند با یک برنامه دیگر باشد‪ .‬مثلن میتوانی کد اصلی تان را با جاوا بزنید و برنامه‬
‫جاوا شما داده ها (یعنی تعداد بر حسب زمان‪ ).‬را بشکل متنی در یک فایل ‪ txt‬ذخیره کند‪ ,‬و برنامه دیگری به متلب یا پایتون آماده‬
‫کنید که فایل داده ها را بعنوان ورودی بگیرد و نمودار ها را رسم کند‪.‬‬
‫درصد امتیاز هر بخش‬
‫پیاده سازی کلی شبکه (بدون خروجی) ‪02 :‬‬
‫داشتن خروجی به شکل متن ‪02 :‬‬
‫رسم نمودار تعداد کل با خبر ها بر حسب زمان‪02 :‬‬
‫رسم تعداد باخبر ها بر حسب زمان برای دسته های مختلف روی یک نمودار‪42 :‬‬
‫کار های اضافه (مثل پیاده سازی مشاهده صفحات با فرآیند پواسون) ‪+02 :‬‬