مباحث الگوریتمی

کامنت خصوصی نگذارید چون من با ایمیل جواب سوال نمی‌دهم. اگر سوالی دارید کامنت بگذارید من همانجا جواب می‌دهم.

۳ مطلب در بهمن ۱۳۹۶ ثبت شده است

مرجع: فیلم کلاس دکتر آبام (مکتب‌خونه گذاشته)
سوال ۱: آلیس و باب هر کدام یک رشته دارند، می‌خواهیم ببینیم اینها با هم مساوی هستند یا نه. دنبال راه حل تصادفی هستیم که کمتر از خطی تبادل داده داشته باشیم. من فکر کردم که یک تعدادی از بیت‌ها را به صورت تصادفی انتخاب کنیم و بفرستیم، مشکل این خواهد بود که فرستادن همان بیت‌ها حجمش زیاد خواهد بود. log n بیت برای اندیس هر کدام لازم است که برای k تا می‌شود k log n. احتمال اینکه درست تشخیص بدهیم هم می‌شود k/n. برای رسیدن به همان احتمال ثابت ۱/۳ هم لازم است که k=n/3 باشد یعنی n/3 log n که از n هم بیشتر می‌شود! پس اینجا معجزه‌ی نظریه اعداد را می‌بینیم که با انتخاب یک عدد اول می‌آید همین کار را با log n بیت انجام می‌دهد.
سوال ۲: اینکه ما یک قسمت از ورودی را می‌دهیم دست آلیس و یک قسمت را دست باب و می‌گوییم الگوریتم را اجرا کنیم و مقدار حافظه‌اش را بفرستیم مثل این است که تا یک زمان از اجرا را به آلیس بدهیم و بقیه را به باب. بعدش هم اینکه بخواهیم کاری کنیم که آن کسی که اندیسش را باب دارد عنصر با بیشتر از n/2 تکرار بشود باید همه‌ی اندیس‌ها را بنویسیم و این اندیس را n/2 بار تکرار کنیم. از روی داده‌ها می‌شود فهمید هر قسمت را باید چه کسی انجام بدهد چون اندیس را فقط آلیس دارد باید n/2 تکرار را آلیس انجام دهد و بقیه را بدهیم به باب.
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ بهمن ۹۶ ، ۲۲:۴۶
سپیده آقاملائی

https://www.cs.utah.edu/~jeffp/papers/chap48-coreset+sketch.pdf

مجموعه‌ی هسته (coreset) یک مجموعه‌ی داده‌ی کاهش داده شده است که می‌توان همان الگوریتم را روی آن اجرا کرد. در اکثر موارد زیرمجموعه‌ای از ورودی است.

مجموعه‌ی هسته‌ی وزن‌دار (weighted coreset) یک مجموعه‌ی هسته است که به نقاط وزن داده شده است که می‌تواند با وزن اولیه آنها متفاوت باشد.

مجموعه‌ی هسته‌ی ضعیف (weak coreset) برای یک مجموعه از پرسه‌ها (query) تعریف می‌شود که یک شرط را تقریباً برای بعضی از پرسه‌ها بهینه می‌کند.

مجموعه‌ی هسته‌ی قوی (strong coreset) برای همه‌ی پرسه‌های یک مجموعه‌ی داده شرط را بهینه می‌کند.

----------

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

خلاصه خطی (linear sketch) خلاصه‌ای است که تصویر داده‌ها تابعی خطی از هر داده است، در نتیجه اضافه، حذف و تغییر را ساده‌تر می‌کند.

--------

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

۰ نظر موافقین ۰ مخالفین ۰ ۱۳ بهمن ۹۶ ، ۱۹:۴۹
سپیده آقاملائی
این سوال در الگوریتم میکاوا برای انحصار متقابل توزیع شده و در الگوریتم محاسبه‌ی فرکانس هست.
https://cseweb.ucsd.edu/classes/wi09/cse223a/p145-maekawa.pdf
https://ac.els-cdn.com/S0022000097915452/1-s2.0-S0022000097915452-main.pdf?_tid=17567bfe-0830-11e8-98fd-00000aab0f02&acdnat=1517586508_dc4612d9ce69164d6268953577dd6e24
راه‌حلی که به نظر من می‌رسد این است که اول تعداد حالت‌های اشتراک مجموعه‌ها را بسازیم، بعد عناصر را توی آنها بچینیم.
کلاً شمارش آن تا وقتی دو تا مجموعه باشد خیلی سخت نیست، مشکل از وقتی شروع می‌شود که اشتراک سه تا مجموعه که توی سوال برایش هیچ شرطی گذاشته نشده چه چیزی باید باشد.
خب توی خود مقاله نوشته است که در نظریه کدگذاری این بحث شده.
این داستان ادامه دارد...
۰ نظر موافقین ۰ مخالفین ۰ ۱۳ بهمن ۹۶ ، ۱۹:۲۵
سپیده آقاملائی