سوالی که ماکسیمم را در مدل CRCW میخواست: n^2 پردازنده داریم که هر کدام مقدار i ام و j ام را مقایسه میکند و اگر اولی کمتر بود درایهی متناظر آن را صفر میکند. عنصری که درایهی متناظر آن ۱ است جواب است. میتوانیم فرض کنیم مرحله بعد n پردازنده بیت متناظر را میخوانند و اگر ۱ بود جواب را در محل جواب مینویسند. که کل این کار O(1) زمان میبرد.
سوال بعدی در مورد این بود که الگوریتمی داده شده بود و قرار بود ثابت کنیم 2n/p عنصر حداکثر عناصر هر پردازنده خواهد بود. دلیل آن این است که هر کدام از جداکنندههای اولیه n/p2 عنصر را جدا میکردند و میدانیم در بدترین حالت میتواند جداکننده نهایی طوری با بقیه اختلاف داشته باشد که قبل از میانه بعدی باشد اما همهی عددهای بین را شامل شود. در این حالت p*n/p2 عنصر بیشتر از کران پایین (که n/p است) داریم پس حداکثر تعداد عناصر 2n/p میشود.
*مسألهی سیلوستر: تعدادی نقطه در صفحه داریم میشود همیشه خطی پیدا کرد که دقیقاً از ۲ تا نقطه بگذرد؟ (فرض کنید همه روی یک خط نیستند)
بله، اثبات: برهان خلف:
به ازای هر سه نقطه غیر هم خط فاصلهی یکی را از دو نقطهی دیگر در نظر میگیریم و مینیمم این مجموعه را نقطه r و پارهخط pq مینامیم. نقطهی دیگری که روی خط گذرنده از p و q است را s مینامیم. (چون میدانیم هر خطی طبق فرض خلف از دقیقاً دو نقطه نمیگذرد و اینجا p و q روی خط هستند پس از حداقل ۳ نقطه میگذرد.)
اگر پای عمود رسم شده از r روی pq بیفتد طبق نامساوی مثلث فاصلهی رأس نزدیکتر به s از rs کمتر از فاصلهی مینیمم است که این تناقض است.
اگر پای عمود رسم شده از r بیرون pq بیفتد طبق نامساوی مثلث فاصلهی رأس نزدیکتر به s از خط گذرنده از r و نقطهی دورتر به s کمتر از فاصلهی مینیمم است که تناقض است.
*مسألهی هاپکرافت: n نقطه و n خط داریم، حداکثر تعداد incidence ها چندتا است؟ (یعنی نقطه روی خط بیفتد و اگر یک نقطه روی تقاطع چند خط باشد چند بار شمرده میشود.)
کران ساده: خطوط را به m دستهی n/m تایی تقسیم کنیم و در هر کدام میدانیم تعداد تقاطعها حداکثر تعداد خطها به توان ۲ است. از اینجا m طوری به دست میآید که O(n^3/2) وقوع (incidence) داریم. از روی جمع درجات=تعداد یالها*۲ میفهمیم چون هر وقوع معادل عبور یک خط از یک نقطه است که درجه آن نقطه را ۲ تا زیاد میکند.
کران بهتر:
O(n+x) که x تعداد تقاطعها است. طبق crossing lemma (لم تقاطع) تعداد یالهای O(n+n^2/3 x^1/3) است. با جایگذاری O(n^4/3) به دست میآید.
*مسألهی اردوش: n نقطه داریم چند تا فاصلهشان از هم دقیقاً ۱ است؟
دور هر نقطه دایره به شعاع ۱ میزنیم. همان اثبات مسألهی هاپکرافت را میتوانیم برای این مسأله به کار ببریم چون از خط بودن هیچ استفادهای نکردهایم.
دیدم کتابش را برداشتم گفتم حالا چند مورد را از روی کتاب بگویم اتفاقی نمیافتد... :) اینها بیشتر قسمتهایی است که خودم دوست داشتم! :)
نزول نامتناهی: ایده مربوط به زمان فیثاغورث است که میگه اگر فرض کنیم یک مسأله در اعداد طبیعی جواب داشته باشه و از روی این جواب بشه نتیجه گرفت برای اعداد کوچکتری هم مسأله در اعداد طبیعی جواب دارد یعنی کلاً جواب ندارد چون اعداد طبیعی از پائین کراندار اند! :) یک جوری مثل شهود استقرا توی یه حالت خاصه ولی فکر کنم اون موقع هنوز استقرا نیومده بوده! :)
ناوردایی: مسأله مشخصاتی داره که با یک عمل ثابت میمونه. برای حل مسأله دو جور میشه از این استفاده کرد یکی اینکه بگیم ویژگی توی حالتهای مجاز مسأله هست که توی حالت جواب نیست پس هیچ وقت به جواب نمیرسه. حالت دیگه اینه که بگیم مثلاً رشد تابع هدف مسأله ثابته. اگر مسأله هدفش یک تابع صعودی /نزولی باشه یعنی هر بار مقدارش زیاد/کم بشه. مثلاً تابع هدف میتونه تعداد حالتهای مسأله باشه که محدوده یا هزینهی مسأله باشه که کرانداره چون همهاش داره کم/زیاد میشه حداکثر به اندازهی تعداد حالتها (کران) تقسیم بر تغییری که هر بار میکنه تکرار برای رسیدن به جواب لازمه.
http://en.wikipedia.org/wiki/Invariant_(mathematics)
نظریه بازیها: حالتهای مسأله به دو دستهی برد و باخت تقسیم میشوند که با یک گراف میشه نشون داد که با هر حرکت مثلاً از مجموعه برد به باخت میریم یا توی برد میمونیم. شبیه اتوماتاست بیشتر به نظرم (از این نظر که روی گرافش داریم مینویسیم که چه کاری باید انجام بشه).
رنگآمیزی: من قبلاً با این مسأله حل کردم توی همین وبلاگ ولی اشاره به اسمش نکردم. یک سری ویژگی توی مسأله هستند که هر کدام را با یک رنگ مشخص میکنیم و بعد وقتی مسأله را حل میکنیم میتوانیم با نگه داشتن هزینهی هر کدام از رنگها (ویژگیها) بدانیم اوضاع چطوریه! :) این را با اسم پارامتر ثابت میشناسند که هر کدام از رنگها یک پارامتر اند و تعداد اشیای هر رنگ مقدار آن پارامتر است.
*حالا اینها شاید خیلی هم درست نباشن و ادامه هم میدونم دارن ولی حالا دیگه این چیزی بود که من بلد بودم.
این موضوع درس جبر خطی عددی بود و من هر چقدر گشتم که صفحهی اصلی درس را پیدا کنم نتوانستم. اما چندتا را که یادم بود:
زنجیره مارکوف
simplex
حل رابطه بازگشتی با ماتریس (مثل فیبوناچی، فکر کنم قبلاً توضیح دادم.)
نظریه بازیها: مثال در لینک زیر!
http://mathworld.wolfram.com/LightsOutPuzzle.html
یک پروژهی پردازش تصویر هم داشتیم.
بقیهاش هم یادم نمیاد! :)
The extreme principle (or extremal principle) is a problem-solving technique that involves looking at objects with extreme properties, such as the largest or smallest element.
http://www.artofproblemsolving.com/Wiki/index.php/Extreme_principle
میخواستم بیشتر بنویسم دیدم خود کتاب بهتر گفته و توی این استراتژیهای حل مسأله اصلاً خوب نگفته. :)
۱- الف) الگوریتم ادغام دو آرایه در مدل PRAM را بنویسید و نوع مدل آن را بگویید و تحلیل کنید.
ب) الگوریتم merge sort را در مدل PRAM بنویسید و نوع مدل آن را بگویید و تحلیل کنید.
۲- یک مدار systolic برای ضرب دو عدد بنویسید. از مدل کلمهای استفاده کردید یا بیتی؟ روش را توضیح بدهید.
۳- یک لیست پیوندی داده شده است که در آرایه ذخیره شده است. تعداد دورهای آن را پیدا کنید. *
۴- الف) ثابت کنید الگوریتمی که در مراحل متوالی سطرها و ستونها را در یک جهت مرتب میکند نمیتواند دادهها را به صورت مارپیچی مرتب کند. (روی مش)
ب) نشان دهید اگر به مش لینکهایی از پردازنده آخر سطر قبل به سطر بعد وصل کنیم میتوان الگوریتم قسمت الف را طوری اصلاح کرد که اعداد را مرتب کند.
۵- یک الگوریتم برای مسألهی ترافیک (پیدا کردن مسیر که ماکسیمم وزن یالهای آن مینیمم باشد برای هر دو رأس) بدهید و مدار تپنده (systolic) متناظر آن را بکشید.
* در مورد سوال ۳ من پرسیدم که دورها یال تکراری دارند یا نه و گفتند که لیست تکرار ندارد و یک مثال هم گفتند که A-->B-->C-->B داریم. این نتیجه میدهد که دورها یال تکراری نداشته باشند.
Next two questions are on PRAM. (Linearly ordered means any two elements are comparable and they can be oredered from smaller to bigger)
Problem 6: Let A=(a_1,a_2,...,a_n) be an array of elements drawn from a linearly ordered set. The suffix-minima problem is to compute for each i, where 1 <= i <= n, the minimum element among {a_i,a_{i+1},...,a_n}. Develop an O(log n) time algorithm to compute suffix minima of A using a total of O(n) operations.
Problem 7: Given an array A=(a_1,a_2,...,a_n) where the elements come from a linearly ordered set S, and given two elements x,y in S, show how to store all the elements a_i from A that are between x and y in consecutive memory locations.
Your algorithm should run in O(log n) time using O(n) operations.