مثلث‌بندی دیلانی: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
Akhajooyee (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱: خط ۱:
{{بدون منبع}}
{{بدون منبع}}
[[پرونده:Delaunay circumcircles vectorial.svg|چپ|بندانگشتی|280px|A Delaunay triangulation in the plane with circumcircles shown]]
[[پرونده:Delaunay circumcircles vectorial.svg|چپ|بندانگشتی|280px|یک نمایش مثلث بندی دیلانی با دوایر محیطی ]]
در [[ریاضیات]] و [[هندسه‌ی محاسباتی]]، یک [[مثلث‌بندی]] دیلانی برای یک مجموعه از نقاط به نام P در یک صفحه، یک مثلث‌بندی به نام (DT(P است به نحوی که هیچ یک از نقاط P درون هیچ‌یک از دایره‌های محیطی مثلثهای (DT(P نباشد. این مثلث‌بندی کمینه‌ی زاویه‌های مثلثها را به بیشترین مقدار ممکن می‌رساند و به این ترتیب از به وجود آمدن مثلث‌های باریک جلوگیری می‌کند. این مثلث‌بندی توسط [[بوریس دیلانی]] در سال ۱۹۳۴ ابداع شد.
در [[ریاضیات]] و [[هندسه‌ی محاسباتی]]، یک [[مثلث‌بندی]] دیلانی برای یک مجموعه از نقاط به نام P در یک صفحه، یک مثلث‌بندی به نام (DT(P است به نحوی که هیچ یک از نقاط P درون هیچ‌یک از دایره‌های محیطی مثلثهای (DT(P نباشد. این مثلث‌بندی کمینه‌ی زاویه‌های مثلثها را به بیشترین مقدار ممکن می‌رساند و به این ترتیب از به وجود آمدن مثلث‌های باریک جلوگیری می‌کند. این مثلث‌بندی توسط [[بوریس دیلانی]] در سال ۱۹۳۴ ابداع شد.<ref name="Delaunay1934">B. Delaunay: ''[http://mi.mathnet.ru/eng/izv4937 Sur la sphère vide], Izvestia Akademii Nauk SSSR, Otdelenie Matematicheskikh i Estestvennykh Nauk, 7:793–800, 1934''</ref>
برای چهار یا تعداد بیشتری نقطه روی یک دایره یکسان (به عنوان مثال راس های یک مستطیل) تثلیث دیلانی یکتا نیست : هر دو تثلیث ممکن که چهار ضلعی را به دو مثلث تقسیم میکند شرط دیلانی ارضا می کند به عنوان مثال فرض اینکه اگر تمام دایره های محیطی مثلث ها درون تهی باشند.
با در نظر گرفتن کره های محاطی ایده ی تثلیث دیلانی به سه یا تعداد بیشتری بعد تعمیم می یابد .تعمیم به سیستم متریک نسبت به سیستم اقلیدسی ترجیح داده می شود ولی در این موارد (اقلیدسی) تثلیث دیلانی الزاما وجود ندارد یا یکتا نیست.
{{ویکی‌انبار-رده|Delaunay triangulation}}
{{ویکی‌انبار-رده|Delaunay triangulation}}
==ارتباط با دیاگرام ورونی==
[[Triangulation (geometry)|تثلیث دیلانی]] در [[فضای گسسته|فضای گسسته]] مجموعه p در [[General position|جنرال پوزیشن]] مربوط به [[Dual graph|گراف های دوگانه]] از [[دیاگرام ورونوی|دیاگرام ورونی]] از مجموعه p.مورد های خاصی که شامل سه نقطه ای که روی یک خط اند و چهار نقطهای که روی یک دایره اند.
<gallery>
File:Delaunay_circumcircles_centers.svg|تثلیث دیلانی با تمام دایره های محیطی و مراکزشان (نقاط قرمز).
Image:Delaunay_Voronoi.svg|با وصل کردن مراکزدوایر محیطی میتوان [[دیاگرام ورونوی|دیاگرام ورونی]] را تشکیل داد (خطوط قرمز).
</gallery>
<!-- Is the reader expected to use a microscope to read this article? Can some people see these circles without looking for them? (Rhetorical question. Obviously not.) -->
=='''دیلانی d بعدی'''==
دیلانی d بعدی برای مجموع نقاط p در فضای [[فضای اقلیدسی| فضای اقلیدسی]] اقلیدسی d بعدی [[Triangulation (geometry)|تثلیث]] دیلانی( DT( p است به طوریکه هیچ نقطهای در P درون [[Circumscribed circle|ابر کره محیطی]] هر [[Simplex|سیمپلکس]] در (DT(P نباشد . اثبات شده<ref name="deBerg"/> که در برای هر p یک تثلیث دیلانی یکتا وجود دارد که p گروهی از نقاط در [[general position|جنرال پوزیشن]] باشند که نتیجه می دهد هیچ زیر [[Flat (geometry)|فضای k بعدی]] آن شامل k + 2 نقطه و یا [[n-sphere|کره k]] بعدی شامل k + 3 نقطه نباشد برای
1&nbsp;≤&nbsp;''k''&nbsp;≤&nbsp;''d''&nbsp;&minus;&nbsp;1 (برای مثال برا ی یک مجموعه نقاط در <big>ℝ</big><sup>3</sup> هیچ سه نقطه ای روی یک خط وجود ندارند ، هیچ چهار نقطه ای روی یک صفحه ، هیچ چهار نقطه ای روی یک دایره و هیچ 5 نقطه ای روی یک کره وجود ندارد)
مسئله پیدا کردن تثلیث دیلانی برای گروهی از نقاط در فضای ی بعدی اقلیدسی قابل تبدیل به مسئله ی یافتن [[پوش محدب|پوش محدب]] برای یک مجموعه نقاط در فضای d + 1 بعدی با دادن مختصات اضافی ''p''|<sup>2</sup>| ، به هر نقطه p و گرفتن گوشه پایین پوش محدب و نگاشتن مجدد به فضای d بعدی با حذف مختصات اخیر است.
چون پوش محدب یکتاست بنابر این تثلیث نیز یکتاست با فرض اینکه تمام اضلاع پوش محدب سیمپلکس هستند . اضلاع غیر سیمپلکس تنها زمانی پدید می آیند که d + 2 تا از نقاط اصلی روی یک [[ابرکره|ابر کره]]ابر کره دی بعدی باشند به عنوان مثال نقاط در جنرال پوزیشن نباشند.
===ویژگی ها:===
[[File:Example steps in Delauney triangularization.png|thumb|قدم های مثال]]
[[File:Delaunay triangulation does not minimize edge length.gif|thumb|انیمیشنی که نشان می دهد تثلیث دیلانی ضلع را کوتاه تر نمیکند حتما.]]
فرض کنید n تعداد نقاط و d تعداد بعد باشد.



== نگارخانه ==
1- اتحاد تمام سیمپلکس ها در تثلیث, پوش محدب تمام نقاط است.


2- تثلیث دیلانی شامل ''O''(''n''<sup>⌈''d''&nbsp;/&nbsp;2⌉</sup>)<br /> مثلث است.<ref>{{cite journal
| last = Seidel
| first = R.
| title = The upper bound theorem for polytopes: an easy proof of its asymptotic version
| journal = Computational Geometry
| volume = 5
| pages = 115–116
| year = 1995
| url = http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYS-3YVD096-C&_user=108429&_coverDate=09%2F30%2F1995&_rdoc=1&_fmt=high&_orig=search&_origin=search&_sort=d&_docanchor=&view=c&_acct=C000059713&_version=1&_urlVersion=0&_userid=108429&md5=70a4159a39ed8ab2c6709025aa77d5de&searchtype=a
| doi = 10.1016/0925-7721(95)00013-Y
| issue = 2 }}</ref>
<br />
3- در صفحه (d =2) اگر b راس در پوش محدب باشند هر تثلیثی از آن نقاط حدااکثر 2n - 2 - b مثلث دارد به علاوه یک وجه بیرونی در صفحه.


4- هر راس حداقل توسط شیش مثلث محاصره شده.


5- در صفحه, تثلیث دیلانی مینمم زاویه را بیشینه میکند در مقایسه با هر تثلیث دیگری ازنقاط کوچکترین زاویه در تثلیث دیلانی حداقل به بزرگی کوچکترین زاویه در بقیه است اما تثلیث دیلانی الزاما ماکسیمم زاویه را کمینه نمیکند تثلیث دیلانی همچنین الزاما طول اضلاع را مینمم نمیکند.


6- دایره ای که بر هر مثلث دیلانی محیط است هیچ نقطه داخلی دیگری درون خود ندارد.


7- اگر یک دایره که از دو تا از نقاط داده شده بگذرد هیچ نقطه دیگری درون خود ندارد بنا بر این بخشی که دو نقطه را به هم متصل میکند یک ضلع تثلیث دیلانی نقاط داده شده است.


8- هر مثلث تثلیث دیلانی برای نقاط فضای d بعدی در یک وجه پوش محدب تصویر نقاط روی [[سهمی‌گون|سهمی وار]] d + 1 بعدی صدق می کند و بلعکس.


9- نزدیک ترین همسایگی b به هر نقطه p روی یک ضلع در تثلیث دیلانی قرار دارد چون [[Nearest neighbor graph|نزدیک ترین گراف همسایه]] یک زیر گراف از تثلیث دیلانی است.


10- تثلیث دیلانی یک [[Geometric spanner|اسپنر هندسی]] است :کوتاه ترین مسیر بین دو راس در طول اضلاع دیلانی بیشتر از <math>\frac{4\pi}{3\sqrt{3}} \approx 2.418</math> برابر فاصله اقلیدسی بین آنها نیست.


=='''تعبیر تصویری دیلانی : چرخاندن'''==
از ویژگی های فوق یک ویژگی بدست می آید .با نگاه کردن به دومثلث ABD و BCD با ضلع مشترک BD اگر زوایای α و γ کوچکتر مساوی 180 شود مثلث ها شرط دیلانی را براورده می کنند.
این یک ویژگی بسیار مهم است چون ما را قادر به استفاده از تکنیک چرخاندن می کند .اگر دو مثلث شرط دیلانی را برآورده نکنند جا به جا کردن ضلع مشترک BD با ضلع مشترک AC دو مثلث تولید میکند که شرط دیلانی را براورده میکند.
<gallery>
<gallery>
Image:Delaunay_geometry.png|این مثلث بندی دیلانی رانمیسازد چون جمع دو زاویه وربرو بالایی و پایینی بیشتر از 180 است.
File:Delaunay_circumcircles_centers.svg|<!--The Delaunay triangulation with all the circumcircles and their centers (in red).-->
Image:Delaunay_before_flip.png|این مثلث بندی دیلانی نیست چون یک دایره محیطی بیش از سه نقطه در بردارد.
Image:Delaunay_Voronoi.png|<!--Connecting the centers of the circumcircles produces the [[Voronoi diagram]] (in red).-->
Image:Delaunay_after_flip.png|چرخاندن ضلع معمول باعث میشود که تثلیث دیلانی تکیل شود.
</gallery>
</gallery>
===الگوریتم ها===
الگوریتمهای زیادی برای محاسبه ی تثلیث دیلانی بر اساس عملیات سریع برای یافتن نقطه ای درون دایره محیطی مثلث و یک داده ساختار کارامد برای ذخیره سای مثلث ها و اضلاع وجود دارد. در دو بعد یک راه برای فهمیدن اینکه آیا نقطه d درون دایره محیطی A و B و C قرار دارد محاسبه [[دترمینان]] این ماتریس به ما نشان می دهد.<ref>{{cite web| author=Guibas, Lenoidas |author2=Stolfi, Jorge |url = http://portal.acm.org/citation.cfm?id=282923 | title = Primitives for the manipulation of general subdivisions and the computation of Voronoi| publisher = ACM | page=107 | date = 1985-04-01| accessdate = 2009-08-01}}</ref> .
: <math>\begin{vmatrix}
A_x & A_y & A_x^2 + A_y^2 & 1\\
B_x & B_y & B_x^2 + B_y^2 & 1\\
C_x & C_y & C_x^2 + C_y^2 & 1\\
D_x & D_y & D_x^2 + D_y^2 & 1
\end{vmatrix} = \begin{vmatrix}
A_x - D_x & A_y - D_y & (A_x^2 - D_x^2) + (A_y^2 - D_y^2) \\
B_x - D_x & B_y - D_y & (B_x^2 - D_x^2) + (B_y^2 - D_y^2) \\
C_x - D_x & C_y - D_y & (C_x^2 - D_x^2) + (C_y^2 - D_y^2)
\end{vmatrix} > 0
</math>
.
وقتی A و B و C به ترتیب پاد ساعت گرد مرتب شوند این دترمینان مثبت است اگر و تنها اگر d درون دایره محیطی باشد .
===الگوریتم چرخاندن===
همان طور که در بالا ذکر شد اگر یک مثلث غیر دیلانی باشد ما می توانیم یکی از ضلع های ان را بچرخانیم کنیم.
این منجر به یک الگوریتم راحت می شود : هر تثلیث از نقاط را بسازید و سپس اضلاع را بچرخانید تا زمانی که هیچ مثلثی غیر دیلانی نباشد. متاسفانه این عملیات ازین (O(''n''<sup>2</sup> چرخاندن ضلع لازم دارد و به سه یا بیش از آن قابل تعمیم نیست.<ref name="deBerg">{{cite book
| last = de Berg
| first = Mark
| authorlink =
|author2=Otfried Cheong |author3=Marc van Kreveld |author4=Mark Overmars
| title = Computational Geometry: Algorithms and Applications
| publisher = Springer-Verlag
| year = 2008
| id =
| url = http://www.cs.uu.nl/geobook/interpolation.pdf
| isbn = 978-3-540-77973-5 }}</ref>.

===افزایشی===
آسان ترین ترین راه برای محاسبه کارامد تثلیث دیلانی افزودن مکرر راس در یک زمان و تثلیث مجدد قسمت های تغییر یافته گراف است.
وقتی یک راس v اضافه می شود ما مثلث شامل v را به سه قسمت تقسیم میکنیم سپس الگوریتم چرخاندن را اعمال می کنیم اگر اینکار به صورت اشتباه انجام شود از (O(n مرتبه زمان میبرد. ما بین تمام مثلث ها جست و جو کرده تا v را پیدا کنیم سپس هر مثلث را یکبار میچرخانیم پس زمان اجرا کلی از اردر (O(''n''<sup>2</sup> است .<br />
اگر ما راس هایی به صورت تصادفی وارد کنیم معلوم میشود (با شواهد پیچیده) که هر ورود به طور متوسط فقط (O(1 مثلث را میچرخاند - با و جود اینکه امکان دارد گاهی اوقات تعداد بیشتری را بچرخاند<ref>{{cite journal
| last = Guibas
| first = L.
| coauthors = D. Knuth; M. Sharir
| title = Randomized incremental construction of Delaunay and Voronoi diagrams
| journal = Algorithmica
| volume = 7
| pages = 381–413
| year = 1992
| url = http://www.springerlink.com/content/p8377h68j82l6860
| doi = 10.1007/BF01758770}}</ref>. این هنوز زمان یافتن مکان نقطه را قابل بهبود می گذارد .ما می توانیم تاریخچه تقسیم ها و چرخاندن های انجام شده را ذخیره کنیم: هر مثلث یک اشاره گر به دو یا سه مثلث که جایگزین آن شده اند را ذخیره می کند .برای یافتن مثلثی که v را در بر دارد ما از مثلث پایه شروع می کنیم و اشاره گری که به مثلث شامل v اشاره می کند را
دنبال می کنیم تا جایی که به مثلثی برسیم که هنوز جایگزین نشده است به طور متوسط این عملیات (O(log n زمان می برد . برای تمام راس ها این عملیات ازین (O(n logn زمان می برد<ref name="deBerg"/> . در حینی که این تکنیک به ابعاد بالا تر تعمیم می یابد (همانطور که توسط ادلزبرونر و شاح ثابت شده<ref>{{cite journal
| last = Edelsbrunner
| first = Herbert
| authorlink = Herbert Edelsbrunner
|author2=Nimish Shah
| title = Incremental Topological Flipping Works for Regular Triangulations
| journal = Algorithmica
| volume = 15
| pages = 223–241
| year = 1996
| url = http://www.springerlink.com/content/4gdja72vx1qmg44x/?p=a74909a339d9498cbff326f08b084b4c&pi=1
| doi = 10.1007/BF01975867
| issue = 3}}</ref>) ) زمان اجرا می تواند نسبت به بعد نمایی رشد کند اگر تثلیث دیلانی نهایی کوچک باشد.<br />
الگوریتم [[Bowyer–Watson algorithm|بویر واتسون]] یک رویکرد ساختار افزایشی دیگر را ارائه می دهد این رویکرد جایگزینی برای ضلع چرخان برای محاسبه ی مثلث های دیلانی شامل یک راس تازه وارد شده می باشد.<br />
===تبدیل به زیر مسئله ها:===
الگوریتم [[الگوریتم تقسیم و حل|تبدیل به زیر مسئله ها]] برای تثلیث ها در ابعاد دو توسط [[لیی]] و [[شاختر]] ابداع شد و توسط [[Leonidas J. Guibas|گی باس]] و [[Jorge Stolfi|استولفی]]<ref>[http://www.geom.uiuc.edu/~samuelp/del_project.html Computing Constrained Delaunay Triangulations]</ref> بهبود داده شد و بعد ها توسط دویر.در این الگوریتم مکررا خطی برای تقسیم راس ها به دو مجموعه رسم میشود.تثلیث دیلانی برای هر مجموعه محاسبه می شود و سپس دو مجموعه در طول خط تقسیم ترکیب می شوند با استفاده چند شگرد هوشمندانه عملیات ترکیب می تواند در زمان (O(n انجام شود بنا بر این زمان اجرا کل این (O(n logn است<ref name="Leach1992">{{cite paper | first = G. | last = Leach | title = ''Improving Worst-Case Optimal Delaunay Triangulation Algorithms.'' | id = {{citeseerx|10.1.1.56.2323}} | month = June | year = 1992 }}</ref>
.
برای گونه خاصی مشخصی از مجموعه نقاط از قبیل توزیع یکنواخت تصادفی با انتخاب هوشمند خطوط تقسیم زمان مورده انتظار می تواند به (O(nlog logn کاهش یابد در حالی که هنوز اجرای بدترین حالت را در اختیار دارد.
الگوریتم تبدیل به زیر مسئله ها برای اجرای یک تثلیث در d بعد در قالب "دی وال : یک الگوریتم سریع تقسیم وغلبه تثلیث دیلانی در E<sup>''d''</sup>"" توسط سیگنونی و منتانی و اسکوپینو ارائه شده است<ref>{{cite journal | last = Cignoni | first = P. | coauthors = C. Montani; R. Scopigno | year = 1998 | title = DeWall: A fast divide and conquer Delaunay triangulation algorithm in E<sup>d</sup> | journal = Computer-Aided Design | volume = 30 | issue = 5 | pages = 333–341 | doi = 10.1016/S0010-4485(97)00082-1 }}</ref>
.<br />
تقسیم و غلبه نشان داده که سریع ترین تکنیک تولید DT است<ref>A Comparison of Sequential Delaunay Triangulation Algorithms http://www.cs.berkeley.edu/~jrs/meshpapers/SuDrysdale.pdf</ref><ref>http://www.cs.cmu.edu/~quake/tripaper/triangle2.html</ref>.
===خط جاروب===
[[الگوریتم فورچون|الگوریتم شانس]] از تکنیک [[الگوریتم پاک‌سازی خطی|خط جاروب]] برای رسیدن به زمان اجرا (O(n logn در حالت صفحه ای استفاده می کنند.
===پوش جاروب===
پوش جاروب<ref>[http://www.s-hull.org/paper/s_hull.pdf S-hull]</ref> یک تکنیک ترکیبی برای تثلیث دیلانی دو بعدی است که از یک جاروب تکثیر شعاعی (به ترتیب بوجود امده از مجموعه نقاط دو بعدی مرتب شده با فرض تثلیث بدون تداخل ) استفاده می کند که با یک قدم چرخاندن مثلث مکرر تزویج شده است .همچنین یک متغیر منطقی صحیح دقیق برای الگوریتم ارائه میشود.
==برنامه ها==
[[Image:Delaunay Triangulation (100 Points).svg|right|thumb|250px|تثلیث دیلانی برای صد نقطه تصادفی در صفحه.]]
<br />

== منابع ==
{{reflist}}

== ارجعات بیرونی ==
* Delaunay triangulation in [[CGAL]], the Computational Geometry Algorithms Library:
** {{cite web
| last = Yvinec | first = Mariette
| title = 2D Triangulation
| url = http://www.cgal.org/Pkg/Triangulation2
| accessdate = April 2010
}}
** {{cite web
| last1 = Pion | first1 = Sylvain
| last2 = Teillaud | first2 = Monique
| title = 3D Triangulations
| url = http://www.cgal.org/Pkg/Triangulation3
| accessdate = April 2010
}}
** {{cite web
| last1 = Hert | first = Susan
| last2 = Seel | first2 = Michael
| title = dD Convex Hulls and Delaunay Triangulations
| url = http://www.cgal.org/Pkg/ConvexHullD
| accessdate = April 2010
}}
* {{cite web
| title = Delaunay triangulation
| publisher = Wolfram MathWorld
| url = http://mathworld.wolfram.com/DelaunayTriangulation.html
| accessdate = April 2010
}}
* {{cite web
| title = Qhull
| url = http://www.qhull.org
| accessdate = April 2010
}} &mdash; Code for Convex Hull, Delaunay Triangulation, Voronoi Diagram, and Halfspace Intersection
* {{cite web
| last = Shewchuk | first = Jonathan Richard
| title = Triangle
| url = http://www.cs.cmu.edu/~quake/triangle.html
| accessdate = April 2010
}} – A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator
* {{cite web
| last1 = Kumar | first1 = Piyush
| last2 = Mohanty | first2 = Somya
| title = Triangle++
| url = http://www.compgeom.com/~piyush/scripts/triangle/
}} – A C++ wrapper on Triangle
* {{cite web
| title = Poly2Tri
| url = http://code.google.com/p/poly2tri/
| publisher = Google Code
| accessdate = April 2010
}} – A sweepline Constrained Delaunay Triangulation (CDT) library, available in ActionScript 3, C, C++, C#, Go, Haxe, Java, Javascript, Python and Ruby


{{DEFAULTSORT:Delaunay Triangulation}}
[[رده:الگوریتم‌های هندسی]]
[[Category:Triangulation (geometry)]]
[[رده:مثلث‌ها]]
[[رده:هندسه گسسته]]

نسخهٔ ‏۲۱ مهٔ ۲۰۱۴، ساعت ۲۰:۱۰

یک نمایش مثلث بندی دیلانی با دوایر محیطی

در ریاضیات و هندسه‌ی محاسباتی، یک مثلث‌بندی دیلانی برای یک مجموعه از نقاط به نام P در یک صفحه، یک مثلث‌بندی به نام (DT(P است به نحوی که هیچ یک از نقاط P درون هیچ‌یک از دایره‌های محیطی مثلثهای (DT(P نباشد. این مثلث‌بندی کمینه‌ی زاویه‌های مثلثها را به بیشترین مقدار ممکن می‌رساند و به این ترتیب از به وجود آمدن مثلث‌های باریک جلوگیری می‌کند. این مثلث‌بندی توسط بوریس دیلانی در سال ۱۹۳۴ ابداع شد.[۱] برای چهار یا تعداد بیشتری نقطه روی یک دایره یکسان (به عنوان مثال راس های یک مستطیل) تثلیث دیلانی یکتا نیست : هر دو تثلیث ممکن که چهار ضلعی را به دو مثلث تقسیم میکند شرط دیلانی ارضا می کند به عنوان مثال فرض اینکه اگر تمام دایره های محیطی مثلث ها درون تهی باشند. با در نظر گرفتن کره های محاطی ایده ی تثلیث دیلانی به سه یا تعداد بیشتری بعد تعمیم می یابد .تعمیم به سیستم متریک نسبت به سیستم اقلیدسی ترجیح داده می شود ولی در این موارد (اقلیدسی) تثلیث دیلانی الزاما وجود ندارد یا یکتا نیست.

ارتباط با دیاگرام ورونی

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

دیلانی d بعدی

دیلانی d بعدی برای مجموع نقاط p در فضای فضای اقلیدسی اقلیدسی d بعدی تثلیث دیلانی( DT( p است به طوریکه هیچ نقطهای در P درون ابر کره محیطی هر سیمپلکس در (DT(P نباشد . اثبات شده[۲] که در برای هر p یک تثلیث دیلانی یکتا وجود دارد که p گروهی از نقاط در جنرال پوزیشن باشند که نتیجه می دهد هیچ زیر فضای k بعدی آن شامل k + 2 نقطه و یا کره k بعدی شامل k + 3 نقطه نباشد برای 1 ≤ k ≤ d − 1 (برای مثال برا ی یک مجموعه نقاط در 3 هیچ سه نقطه ای روی یک خط وجود ندارند ، هیچ چهار نقطه ای روی یک صفحه ، هیچ چهار نقطه ای روی یک دایره و هیچ 5 نقطه ای روی یک کره وجود ندارد) مسئله پیدا کردن تثلیث دیلانی برای گروهی از نقاط در فضای ی بعدی اقلیدسی قابل تبدیل به مسئله ی یافتن پوش محدب برای یک مجموعه نقاط در فضای d + 1 بعدی با دادن مختصات اضافی p|2| ، به هر نقطه p و گرفتن گوشه پایین پوش محدب و نگاشتن مجدد به فضای d بعدی با حذف مختصات اخیر است. چون پوش محدب یکتاست بنابر این تثلیث نیز یکتاست با فرض اینکه تمام اضلاع پوش محدب سیمپلکس هستند . اضلاع غیر سیمپلکس تنها زمانی پدید می آیند که d + 2 تا از نقاط اصلی روی یک ابر کرهابر کره دی بعدی باشند به عنوان مثال نقاط در جنرال پوزیشن نباشند.

ویژگی ها:

قدم های مثال
انیمیشنی که نشان می دهد تثلیث دیلانی ضلع را کوتاه تر نمیکند حتما.

فرض کنید n تعداد نقاط و d تعداد بعد باشد.


1- اتحاد تمام سیمپلکس ها در تثلیث, پوش محدب تمام نقاط است.


2- تثلیث دیلانی شامل O(nd / 2⌉)
مثلث است.[۳]
3- در صفحه (d =2) اگر b راس در پوش محدب باشند هر تثلیثی از آن نقاط حدااکثر 2n - 2 - b مثلث دارد به علاوه یک وجه بیرونی در صفحه.


4- هر راس حداقل توسط شیش مثلث محاصره شده.


5- در صفحه, تثلیث دیلانی مینمم زاویه را بیشینه میکند در مقایسه با هر تثلیث دیگری ازنقاط کوچکترین زاویه در تثلیث دیلانی حداقل به بزرگی کوچکترین زاویه در بقیه است اما تثلیث دیلانی الزاما ماکسیمم زاویه را کمینه نمیکند تثلیث دیلانی همچنین الزاما طول اضلاع را مینمم نمیکند.


6- دایره ای که بر هر مثلث دیلانی محیط است هیچ نقطه داخلی دیگری درون خود ندارد.


7- اگر یک دایره که از دو تا از نقاط داده شده بگذرد هیچ نقطه دیگری درون خود ندارد بنا بر این بخشی که دو نقطه را به هم متصل میکند یک ضلع تثلیث دیلانی نقاط داده شده است.


8- هر مثلث تثلیث دیلانی برای نقاط فضای d بعدی در یک وجه پوش محدب تصویر نقاط روی سهمی وار d + 1 بعدی صدق می کند و بلعکس.


9- نزدیک ترین همسایگی b به هر نقطه p روی یک ضلع در تثلیث دیلانی قرار دارد چون نزدیک ترین گراف همسایه یک زیر گراف از تثلیث دیلانی است.


10- تثلیث دیلانی یک اسپنر هندسی است :کوتاه ترین مسیر بین دو راس در طول اضلاع دیلانی بیشتر از برابر فاصله اقلیدسی بین آنها نیست.


تعبیر تصویری دیلانی : چرخاندن

از ویژگی های فوق یک ویژگی بدست می آید .با نگاه کردن به دومثلث ABD و BCD با ضلع مشترک BD اگر زوایای α و γ کوچکتر مساوی 180 شود مثلث ها شرط دیلانی را براورده می کنند. این یک ویژگی بسیار مهم است چون ما را قادر به استفاده از تکنیک چرخاندن می کند .اگر دو مثلث شرط دیلانی را برآورده نکنند جا به جا کردن ضلع مشترک BD با ضلع مشترک AC دو مثلث تولید میکند که شرط دیلانی را براورده میکند.

الگوریتم ها

الگوریتمهای زیادی برای محاسبه ی تثلیث دیلانی بر اساس عملیات سریع برای یافتن نقطه ای درون دایره محیطی مثلث و یک داده ساختار کارامد برای ذخیره سای مثلث ها و اضلاع وجود دارد. در دو بعد یک راه برای فهمیدن اینکه آیا نقطه d درون دایره محیطی A و B و C قرار دارد محاسبه دترمینان این ماتریس به ما نشان می دهد.[۴] .

. وقتی A و B و C به ترتیب پاد ساعت گرد مرتب شوند این دترمینان مثبت است اگر و تنها اگر d درون دایره محیطی باشد .

الگوریتم چرخاندن

همان طور که در بالا ذکر شد اگر یک مثلث غیر دیلانی باشد ما می توانیم یکی از ضلع های ان را بچرخانیم کنیم. این منجر به یک الگوریتم راحت می شود : هر تثلیث از نقاط را بسازید و سپس اضلاع را بچرخانید تا زمانی که هیچ مثلثی غیر دیلانی نباشد. متاسفانه این عملیات ازین (O(n2 چرخاندن ضلع لازم دارد و به سه یا بیش از آن قابل تعمیم نیست.[۲].

افزایشی

آسان ترین ترین راه برای محاسبه کارامد تثلیث دیلانی افزودن مکرر راس در یک زمان و تثلیث مجدد قسمت های تغییر یافته گراف است. وقتی یک راس v اضافه می شود ما مثلث شامل v را به سه قسمت تقسیم میکنیم سپس الگوریتم چرخاندن را اعمال می کنیم اگر اینکار به صورت اشتباه انجام شود از (O(n مرتبه زمان میبرد. ما بین تمام مثلث ها جست و جو کرده تا v را پیدا کنیم سپس هر مثلث را یکبار میچرخانیم پس زمان اجرا کلی از اردر (O(n2 است .
اگر ما راس هایی به صورت تصادفی وارد کنیم معلوم میشود (با شواهد پیچیده) که هر ورود به طور متوسط فقط (O(1 مثلث را میچرخاند - با و جود اینکه امکان دارد گاهی اوقات تعداد بیشتری را بچرخاند[۵]. این هنوز زمان یافتن مکان نقطه را قابل بهبود می گذارد .ما می توانیم تاریخچه تقسیم ها و چرخاندن های انجام شده را ذخیره کنیم: هر مثلث یک اشاره گر به دو یا سه مثلث که جایگزین آن شده اند را ذخیره می کند .برای یافتن مثلثی که v را در بر دارد ما از مثلث پایه شروع می کنیم و اشاره گری که به مثلث شامل v اشاره می کند را دنبال می کنیم تا جایی که به مثلثی برسیم که هنوز جایگزین نشده است به طور متوسط این عملیات (O(log n زمان می برد . برای تمام راس ها این عملیات ازین (O(n logn زمان می برد[۲] . در حینی که این تکنیک به ابعاد بالا تر تعمیم می یابد (همانطور که توسط ادلزبرونر و شاح ثابت شده[۶]) ) زمان اجرا می تواند نسبت به بعد نمایی رشد کند اگر تثلیث دیلانی نهایی کوچک باشد.
الگوریتم بویر واتسون یک رویکرد ساختار افزایشی دیگر را ارائه می دهد این رویکرد جایگزینی برای ضلع چرخان برای محاسبه ی مثلث های دیلانی شامل یک راس تازه وارد شده می باشد.

تبدیل به زیر مسئله ها:

الگوریتم تبدیل به زیر مسئله ها برای تثلیث ها در ابعاد دو توسط لیی و شاختر ابداع شد و توسط گی باس و استولفی[۷] بهبود داده شد و بعد ها توسط دویر.در این الگوریتم مکررا خطی برای تقسیم راس ها به دو مجموعه رسم میشود.تثلیث دیلانی برای هر مجموعه محاسبه می شود و سپس دو مجموعه در طول خط تقسیم ترکیب می شوند با استفاده چند شگرد هوشمندانه عملیات ترکیب می تواند در زمان (O(n انجام شود بنا بر این زمان اجرا کل این (O(n logn است[۸] . برای گونه خاصی مشخصی از مجموعه نقاط از قبیل توزیع یکنواخت تصادفی با انتخاب هوشمند خطوط تقسیم زمان مورده انتظار می تواند به (O(nlog logn کاهش یابد در حالی که هنوز اجرای بدترین حالت را در اختیار دارد. الگوریتم تبدیل به زیر مسئله ها برای اجرای یک تثلیث در d بعد در قالب "دی وال : یک الگوریتم سریع تقسیم وغلبه تثلیث دیلانی در Ed"" توسط سیگنونی و منتانی و اسکوپینو ارائه شده است[۹] .
تقسیم و غلبه نشان داده که سریع ترین تکنیک تولید DT است[۱۰][۱۱].

خط جاروب

الگوریتم شانس از تکنیک خط جاروب برای رسیدن به زمان اجرا (O(n logn در حالت صفحه ای استفاده می کنند.

پوش جاروب

پوش جاروب[۱۲] یک تکنیک ترکیبی برای تثلیث دیلانی دو بعدی است که از یک جاروب تکثیر شعاعی (به ترتیب بوجود امده از مجموعه نقاط دو بعدی مرتب شده با فرض تثلیث بدون تداخل ) استفاده می کند که با یک قدم چرخاندن مثلث مکرر تزویج شده است .همچنین یک متغیر منطقی صحیح دقیق برای الگوریتم ارائه میشود.

برنامه ها

تثلیث دیلانی برای صد نقطه تصادفی در صفحه.


منابع

  1. B. Delaunay: Sur la sphère vide, Izvestia Akademii Nauk SSSR, Otdelenie Matematicheskikh i Estestvennykh Nauk, 7:793–800, 1934
  2. ۲٫۰ ۲٫۱ ۲٫۲ de Berg, Mark; Otfried Cheong; Marc van Kreveld; Mark Overmars (2008). Computational Geometry: Algorithms and Applications (PDF). Springer-Verlag. ISBN 978-3-540-77973-5.
  3. Seidel, R. (1995). "The upper bound theorem for polytopes: an easy proof of its asymptotic version". Computational Geometry. 5 (2): 115–116. doi:10.1016/0925-7721(95)00013-Y.
  4. Guibas, Lenoidas; Stolfi, Jorge (1985-04-01). "Primitives for the manipulation of general subdivisions and the computation of Voronoi". ACM. p. 107. Retrieved 2009-08-01.
  5. Guibas, L. (1992). "Randomized incremental construction of Delaunay and Voronoi diagrams". Algorithmica. 7: 381–413. doi:10.1007/BF01758770. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  6. Edelsbrunner, Herbert; Nimish Shah (1996). "Incremental Topological Flipping Works for Regular Triangulations". Algorithmica. 15 (3): 223–241. doi:10.1007/BF01975867.
  7. Computing Constrained Delaunay Triangulations
  8. Leach, G. (1992). "Improving Worst-Case Optimal Delaunay Triangulation Algorithms.". CiteSeerX: 10.1.1.56.2323. {{cite journal}}: Cite journal requires |journal= (help); Unknown parameter |month= ignored (help)
  9. Cignoni, P. (1998). "DeWall: A fast divide and conquer Delaunay triangulation algorithm in Ed". Computer-Aided Design. 30 (5): 333–341. doi:10.1016/S0010-4485(97)00082-1. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  10. A Comparison of Sequential Delaunay Triangulation Algorithms http://www.cs.berkeley.edu/~jrs/meshpapers/SuDrysdale.pdf
  11. http://www.cs.cmu.edu/~quake/tripaper/triangle2.html
  12. S-hull

ارجعات بیرونی

  • Delaunay triangulation in CGAL, the Computational Geometry Algorithms Library:
  • "Delaunay triangulation". Wolfram MathWorld. Retrieved April 2010. {{cite web}}: Check date values in: |accessdate= (help)
  • "Qhull". Retrieved April 2010. {{cite web}}: Check date values in: |accessdate= (help) — Code for Convex Hull, Delaunay Triangulation, Voronoi Diagram, and Halfspace Intersection
  • Shewchuk, Jonathan Richard. "Triangle". Retrieved April 2010. {{cite web}}: Check date values in: |accessdate= (help) – A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator
  • Kumar, Piyush; Mohanty, Somya. "Triangle++". – A C++ wrapper on Triangle
  • "Poly2Tri". Google Code. Retrieved April 2010. {{cite web}}: Check date values in: |accessdate= (help) – A sweepline Constrained Delaunay Triangulation (CDT) library, available in ActionScript 3, C, C++, C#, Go, Haxe, Java, Javascript, Python and Ruby