الگوریتم امروز

وبلاگ تخصصی الگوریتم

الگوریتم امروز

وبلاگ تخصصی الگوریتم

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

بایگانی

سوال و جواب امتحان هندسه محاسباتی پیشرفته (میان ترم)

چهارشنبه, ۲۷ فروردين ۱۳۹۳، ۰۸:۵۵ ق.ظ

۱- یک الگوریتم ساده بدهید که در زمان خطی تقریبی از بزرگترین مثلث ساخته شده با رئوس نقاط P بدهد.

راهنمایی: نقطه p و دورترین نقطه از آن q را در نظر بگیرید.

جواب: نقطه r را که دورترین نقطه نسبت به pq است در نظر می‌گیریم. می‌دانیم pq یک ۲-تقریب از قطر نقاط است و r یک ۴-تقریب از عرض نقاط است. مساحت مثلث pqr بر حسب قطر و عرض نقاط به دست می‌آید. حالا باید مساحت مثلث بهینه را بر حسب قطر و عرض نقاط به دست بیاوریم. بدیهی است که مساحت هر مثلث (از جمله مثلث بهینه) در رابطه زیر صدق می‌کند:

1/2*width^2 < S < 1/2*diamter^2

(یکی از بچه‌ها اینجا نتیجه گرفته بود که width=diameter بدترین حالت است و مثلث متساوی الاضلاع گرفته بود اما من باز هم نتوانستم طرف کمتر قضیه را اثبات کنم در نتیجه فعلاً جواب درست را نمی‌دانم. دیروز به نظرم این جواب درست بود.)

۲- الگوریتمی داریم که در زمان O(n log n) برای یک چندضلعی (نه لزوما محدب) بزرگترین مربع محاطی که اضلاع آن موازی محورهای مختصات است را به دست می‌آورد. یک ۱+اپسیلون تقریب برای بزرگترین مربع محاطی در جهت دلخواه بدهید.

جواب: تعدادی بردار جهتی را در نظر می‌گیریم و جواب را در جهت آنها حساب می‌کنیم (رند کردن جهتی) می‌دانیم با تغییر زاویه به اندازه دلتا اندازه ضلع حداکثر به اندازه‌ی ۱-کسینوس دلتا تغییر می‌کند که از مرتبه‌ی دلتا به توان دو است که اگر اپسیلون را این مقدار قرار دهیم جواب به دست می‌آید.

۳- روش merge and reduce را بنویسید و ثابت کنید.

جواب: به جزوه مراجعه کنید. فقط قسمتی که من در جزوه‌ی خودم ننوشته بودم:

دلیل اینکه اپسیلون از مرتبه لگاریتمی تغییر می‌کند این است که هر بار یک اپسیلون با آن جمع می‌شود؛ چون تقریب قبلی مثلاً 2epsilon است (مرحله merge) و وقتی از آن اپسیلون تقریب می‌گیریم epsilon+2epsilon می‌شود (مرحله reduce).

۴- مسأله‌ی k-center را با فرض داشتن یک الگوریتم ۲-تقریبی برای آن با تقریب ۱+اپسیلون حل کنید. یک هسته با اندازه‌ی O(k/epsilon^d) بدهید که این مسأله را حل کند.

راهنمایی: ابتدا الگوریتم ۲-تقریب را اجرا کنید سپس آن را با توری به ا+اپسیلون تقریب تبدیل کنید.

جواب: برای هر کدام از توپ‌ها یک توری می‌سازیم که اندازه آن 2r و هر خانه‌ی آن r*epsilon/sqrt(d) است که چون قطر هر خانه sqrt(d) برابر ضلع آن است فاصله هر نقطه حداکثر انقدر است. یعنی اگر نقاط را به نزدیک‌ترین رأس توری رند کنیم حداکثر خطای ما این مقدار خواهد بود.

۵- مسأله‌ای که در وبلاگ هم آمده است و سوال ۱۴.۱۰ کتاب de-berge است.

لینک

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

*در مورد سوال ۱ به شدت پذیرای حل‌های شما دوستان عزیز هستیم!

موافقین ۰ مخالفین ۰ ۹۳/۰۱/۲۷
سپیده آقاملائی

نظرات  (۱)

۱۲ آذر ۰۲ ، ۱۱:۱۴ مینا اخوان

حل مسئله جستجو در درخت kd

Q (n)={1 

2Q (n/4)+2

ifn=1,

otherwise.

 

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی