پیدا کردن همسایه یک خانه درخت چهارتایی
حل تمرین از متن کتاب:
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 هم میگذرد. در غیر این صورت یک نقطهی دیگر روی محیط دایره دوم باید باشد تا این دایره کوچکترین دایره محیطی باشد. (حالت دو سر قطر اتفاق نمیافتد.)
این حالتی است که در آن دایره در هر مرحله (اضافه شدن هر نقطه) بزرگتر میشود، یعنی همیشه حالتی اتفاق میافتد که نقاط دو سر قطر دایره محیطی هستند. فقط میماند اثبات اینکه این بدترین حالت است.
جوابی که این الگوریتم میدهد ۳/۲-تقریبی است برای کوچکترین دایره محیطی نقاط و خود الگوریتم هم به این صورت است که به جای اینکه نقطه جدید و نقاط قبلی را در نظر بگیرد نقطه جدید و دایره محیطی قبلی را در نظر میگیرد و کوچکترین توپ محیطی آن را حساب میکند.
مرجع: 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