กรณีที่เลวร้ายที่สุดของอัลกอริธึมการหาตำแหน่งแบบสามเหลี่ยม delaunay ที่เพิ่มขึ้นแบบสุ่มคืออะไร


9

ฉันรู้ว่ารันไทม์กรณีเลวร้ายที่สุดที่คาดหวังของอัลกอริทึม triangulation delaunay ที่เพิ่มขึ้นแบบสุ่ม (ตามที่ระบุในComputational Geometry ) คือO(nlogn). มีแบบฝึกหัดซึ่งแสดงถึง runtime-case ที่แย่ที่สุดคือΩ(n2). ฉันพยายามสร้างตัวอย่างซึ่งเป็นจริงในกรณีนี้ แต่ยังไม่ประสบความสำเร็จ

หนึ่งในความพยายามเหล่านั้นคือการจัดเรียงและสั่งซื้อจุดที่กำหนดในลักษณะเช่นนั้นเมื่อเพิ่มจุด pr ในขั้นตอน rประมาณ r1 ขอบถูกสร้างขึ้น

วิธีการอื่นอาจเกี่ยวข้องกับโครงสร้างตำแหน่งจุด: พยายามจัดเรียงจุดต่าง ๆ เช่นเส้นทางที่ใช้ในโครงสร้างตำแหน่งจุดเพื่อค้นหาตำแหน่ง pr ในขั้นตอน r นานที่สุด

ถึงกระนั้นฉันไม่แน่ใจว่าวิธีการใดในสองวิธีนี้ถูกต้อง (ถ้าเลย) และจะดีใจสำหรับคำแนะนำบางอย่าง


3
ลองวางจุดทั้งหมดบนเส้นโค้ง y=xr สำหรับบางอย่างที่เลือก r.
Peter Shor

คำตอบ:


9

วิธีแรกสามารถทำเป็นระเบียบได้ดังนี้

ปล่อย P เป็นชุดโดยพลการของ n คะแนนในสาขาบวกของพาราโบลา y=x2; นั่นคือ,

P={(t1,t12),(t2,t22),,(tn,tn2)}
สำหรับจำนวนจริงที่เป็นบวก t1,t2,,tn. โดยไม่สูญเสียความคิดทั่วไปถือว่าคะแนนเหล่านี้ได้รับการจัดทำดัชนีตามลำดับที่เพิ่มขึ้น:0<t1<t2<<tn.

อ้างสิทธิ์: ในรูปสามเหลี่ยมของ DelaunayPจุดซ้ายสุด (t1,t12) เป็นเพื่อนบ้านของทุก ๆ จุด P.

การอ้างสิทธิ์นี้แสดงถึงการเพิ่มจุดใหม่ (t0,t02) ถึง P กับ 0<t0<t1 เพิ่ม nขอบใหม่ของการหาสามเหลี่ยม Delaunay ดังนั้นถ้าเราทำสัญญาแบบสามเหลี่ยม Delaunay ของPโดยการใส่จุดตามลำดับจากขวาไปซ้ายจำนวนรวมของ Delaunay edge ที่สร้างขึ้นคือΩ(n2).


เราสามารถพิสูจน์ข้อเรียกร้องได้ดังนี้ สำหรับคุณค่าที่แท้จริงใด ๆ0<a<b<c, ปล่อย C(a,b,c) แสดงถึงวงกลมที่ไม่ซ้ำกันผ่านจุด (a,a2),(b,b2),(c,c2).

แทรก: C(a,b,c) ไม่มีจุดใด ๆ (t,t2) ที่ไหน a<t<b หรือ c<t.

พิสูจน์:จำได้ว่าสี่คะแนน(a,b),(c,d),(e,f),(g,h) เป็น cocircular ถ้าและเฉพาะในกรณีที่

|1aba2+b21cdc2+d21efe2+f21ghg2+h2|=0
ดังนั้นประเด็น (t,t2) อยู่บนวงกลม C(a,b,c) ถ้าและเพียงถ้า
|1aa2a2+a41bb2b2+b41cc2c2+c41tt2t2+t4|=0
มันไม่ยาก (เช่นขอให้ Wolfram Alpha) ขยายและแยกตัวประกอบ 4×4 ปัจจัยในรูปแบบต่อไปนี้:
()(ab)(ac)(bc)(at)(bt)(ct)(a+b+c+t)=0
ดังนั้น, (t,t2) ตั้งอยู่บน C(a,b,c) ถ้าและเพียงถ้า t=a, t=b, t=c, หรือ t=abc<0. ยิ่งกว่านั้นเพราะ0<a<b<cรากทั้งสี่นี้แตกต่างอย่างชัดเจนซึ่งหมายความว่าพาราโบลาข้ามจริง ๆ C(a,b,c)ที่จุดสี่เหล่านั้น มันติดตามว่า(t,t2)อยู่ข้างใน C(a,b,c) ถ้าและเพียงถ้า abc<t<a หรือ b<t<c.

ขอบคุณแม้ว่าฉันจริง ๆ แล้วต้องการเพียงคำใบ้ (โดยไม่มีข้อพิสูจน์);
Tedil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.