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

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

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

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

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

بایگانی

پیدا کردن همسایه یک خانه درخت چهارتایی

حل تمرین از متن کتاب:

14.4 Let P be a set of point in 3-dimensional space. Describe an algorithm to

construct an octree on P. (An octree is the 3-dimensional variant of the

quadtree.)

جواب:

هر بار مکعب قبلی را به ۸ قسمت (از هر ضلع نصف) تقسیم می‌کنیم و نقاط درون هر قسمت را به دست می‌آوریم و به صورت بازگشتی برای آنها درخت را می‌سازیم. شرط خاتمه این است که تعداد نقاط کمتر مساوی ۱ باشد.


14.10 A quadtree can also be used to store a subdivision for efficient point lo-

cation. The idea is to keep splitting a bounding square of the subdivision

until all leaf nodes correspond to squares that contain at most one vertex

and only edges incident to that vertex, or no vertex and at most one edge.

a. Since a vertex can be incident to many edges, we need an additional

data structure at the quadtree leaves storing vertices. Which data

structure would you use?

b. Describe the algorithm for constructing the point location data struc-

ture in detail, and analyze its running time.

c. Describe the query algorithm in detail, and analyze its running time.


جواب:

hash table که هر برگ درخت را به رئوس متناظر آن ببرد.

راه حل اول (بدون هش): خانه‌ی شامل نقطه کوئری را پیدا می‌کنیم و در آن point location انجام می‌دهیم. در این صورت زمان ما از مرتبه تعداد رأس‌های درون خانه شامل نقطه کوئری خواهد بود.

راه حل دوم: برای هر خانه مجدداً تقسیم بندی مشابه درخت چهارتایی را انجام بدهیم با این تفاوت که هر خانه را به رأس متناظر آن هش کنیم. در این صورت با تقسیم مختصات نقطه کوئری و جزء صحیح گرفتن از آن به خانه‌ی جدول هش می‌رسیم و ناحیه متناظر آن را گزارش می‌کنیم. برای پیدا کردن برگ شامل نقطه کوئری از جستجوی دودویی استفاده می‌کنیم تا نیاز نباشد کل عمق درخت را برویم.

14.13 Quadtrees can be used to perform range queries. Describe an algorithm

for querying a quadtree on a set P of points with a query region R.

Analyze the worst-case query time for the case where R is a rectangle,

and for the case where R is a half-plane bounded by a vertical line.

برای کوئری نیم صفحه قسمت خط عمودی که ساده است و برای قسمت خط مورب باید همه‌ی خانه‌هایی که این ضلع آنها را قطع می‌کند و همه‌ی خانه‌های بین دو خط را چک کنیم.

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

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۱۷:۰۶
سپیده آقاملائی

(مقاله دکتر ضرابی زاده)

حالتی که در پست قبلی در این مورد نوشته بودم به این دلیل در تحلیل آمده است که بدترین حالت مسأله است و بدیهی است که همیشه برقرار نیست.

در شکل بالا همیشه اگر از p3 به نقطه مماس وصل کنیم، چون شعاع در نقطه تماس بر خط مماس عمود است اگر از c1 بگذرد از c2 هم می‌گذرد. در غیر این صورت یک نقطه‌ی دیگر روی محیط دایره دوم باید باشد تا این دایره کوچکترین دایره محیطی باشد. (حالت دو سر قطر اتفاق نمی‌افتد.)

این حالتی است که در آن دایره در هر مرحله (اضافه شدن هر نقطه) بزرگ‌تر می‌شود، یعنی همیشه حالتی اتفاق می‌افتد که نقاط دو سر قطر دایره محیطی هستند. فقط می‌ماند اثبات اینکه این بدترین حالت است.

جوابی که این الگوریتم می‌دهد ۳/۲-تقریبی است برای کوچکترین دایره محیطی نقاط و خود الگوریتم هم به این صورت است که به جای اینکه نقطه جدید و نقاط قبلی را در نظر بگیرد نقطه جدید و دایره محیطی قبلی را در نظر می‌گیرد و کوچکترین توپ محیطی آن را حساب می‌کند.


۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۱۱:۵۳
سپیده آقاملائی
کلا ربات ۸ تا سنسور دارد که هر کدام یک بازه‌ی مساوی را می‌بینند. (یک دایره است که به ۸ قسمت تقسیم شده است.)
این ۸ همان مقدار لازم برای همبند بودن تتا گراف است.
به این صورت گراف متناظر آن ساخته می‌شود و بقیه اثبات مثل random walk معمولی است.
۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۰۹:۴۲
سپیده آقاملائی

مرجع: http://www.cs.tau.ac.il/~danha/courses/robotics07.html

دریافت
حجم: 241 کیلوبایت

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۰۹:۱۹
سپیده آقاملائی

بالاخره چیزی که می‌خواستم پیدا کردم:

که وقتی ربات آن را اجرا می‌کند نتیجه این می‌شود:

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۰۹:۰۸
سپیده آقاملائی

سایت درس:

http://gamma.cs.unc.edu/courses/planning-f07/

مرجع درس: LaValle's Book on Planning Algorithms

دانلود کتاب درس و ...

http://planning.cs.uiuc.edu/

ارائه‌ی مورد علاقه‌ی من: Visibility based Motion Planning (Georgi Tsankov , October 10, 2007)

Coverage Planning (Jamie Snape, October 15, 2007)

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۰۹:۰۵
سپیده آقاملائی

http://msl.cs.uiuc.edu/~lavalle/papers/TovMurLav07.pdf

http://en.wikipedia.org/wiki/Motion_planning

http://en.wikipedia.org/wiki/Any-angle_path_planning

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ فروردين ۹۳ ، ۰۷:۴۴
سپیده آقاملائی

ویکیپدیا:

http://en.wikipedia.org/wiki/Motion_planning

الگوریتم‌ها:

http://www.mpi-inf.mpg.de/departments/d1/teaching/ss10/Seminar_CGGC/Slides/06_Bazhenova_RMP.pdf

GNT:

http://www.robotoloco.com/wk/papers/TovGuiLav04.pdf

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ فروردين ۹۳ ، ۱۱:۵۳
سپیده آقاملائی

من برای حل سوال ۳ یک راه حلی مثل این مقاله نوشته بودم (از نظر اینکه فاصله دورترین نقطه تا دایره را گرفتم شبیه‌اند). یعنی گفته بودم که دورترین نقطه از P را در جهتی که قطر فعلی توپ محیطی را به دست آورده‌ایم حساب می‌کنیم و فاصله‌ی این نقطه تا دایره طبق عرض جهتی از اپسیلون برابر در هر جهت کمتره.

۰ نظر موافقین ۰ مخالفین ۰ ۲۳ فروردين ۹۳ ، ۱۷:۲۶
سپیده آقاملائی

*روش دو برابر کردن معمولی

تقریب عرض جهتی:

دو نقطه‌ی اول را s و t می‌نامیم. هر بار یک نقطه جدید می‌آید (p) عرض این سه نقطه را حساب می‌کنیم و اگر نقطه جدید از دو برابر نقطه قبلی دورتر بود نقطه جدید را جایگزین قبلی می‌کنیم.

اثبات آن مشابه اثبات الگوریتمی است که دورترین نقطه از یک نقطه را می‌گرفت و سپس دورترین نقطه را از این پاره‌خط به دست می‌آورد. (تقریب ۳) به جز این از نامساوی مثلث استفاده شده است. هر بار به دلیل دوبرابر کردن تقریب نصف می‌شود پس یک تصاعد هندسی با ضریب ۱/۲ داریم.

*روش قبل را با استفاده از توری و دیاگرام ورونوی گسسته حل می‌کنیم. (مینیمم و ماکسیمم نقاط را نگه می‌داریم.)

در ادامه مقاله ایده‌ی الگوریتم ترکیبی قطر (رند کردن جهتی و توری) هم آمده که با دیاگرام ورونوی گسسته برای محاسبه دورترین نقطه به زمان بهتری برای قطر رسیده است.

با استفاده از این روش یک راه کلی ساختن هسته ارائه داده است که یک الگوریتم افزایشی روی تعداد ابعاد است (مثل دیاگرام ورونوی گسسته)‌ که هر بار با استفاده از توری نقاط را روی راستای دورترین دو نقطه تصویر می‌کند. (یعنی قطر فعلی). حداکثر میزان تغییرات مثل قبل به دلیل نصف شدن محدود است.

*بهبود الگوریتم با روش merge and reduce

(با روش رند کردن جهتی اپسیلون-کرنل ساخته می‌شود.)

۰ نظر موافقین ۰ مخالفین ۰ ۲۳ فروردين ۹۳ ، ۱۵:۰۲
سپیده آقاملائی