โครงสร้างข้อมูลแบบ quad-edge (Delaunay / Voronoi)


18

2 คำถามสำหรับ geometers หรือพีชคณิตการคำนวณ:

ฉันเพิ่งเริ่มดำน้ำในเรขาคณิตการคำนวณและฉันรักมัน =)

ฉันกำลังพยายามอ่านบทความที่มีชื่อเสียงโดย Guibas และ Stolfi เรียกว่า"Primitives สำหรับการจัดการส่วนย่อยทั่วไปและการคำนวณ Voronoi Diagrams"เพื่อใช้อัลกอริธึมสามเหลี่ยม Delaunay ฉันถูกล่อลวงให้ข้ามสิ่งต่าง ๆ ทางทฤษฎีทั้งหมดและเพียงแค่อ่านคำอธิบายของโครงสร้างข้อมูลสี่ด้านเพื่อประหยัดเวลา อย่างไรก็ตามฉันคิดว่ามันอาจคุ้มค่าที่จะเข้าใจคณิตศาสตร์ทั้งหมดในบทความหากมีการใช้โครงสร้างอย่างกว้างขวางหรือเพียงเพราะมันอาจจะสวยงาม

คณิตศาสตร์มีความหนาแน่นเล็กน้อยสำหรับฉัน ฉันไม่ได้สนใจโทโพโลยีอย่างสมบูรณ์ แต่คำอธิบายของพีชคณิตขอบของพวกเขาต้องการความรู้เกี่ยวกับพีชคณิตนามธรรมที่ฉันไม่มี

คำถามสองข้อของฉันคือ: มีแอปพลิเคชันอื่น ๆ ของโครงสร้างแบบ quad-edge นอกเหนือจากการคำนวณ Delaunay / Voronoi? ดูเหมือนว่าเป็นเครื่องมือที่ทรงพลังอย่างยิ่ง

คำถามที่สอง; พีชคณิตนามธรรมคืออะไร? มันจะดีถ้าคุณสามารถให้ฉันอ้างอิงถึงการแนะนำพีชคณิตนามธรรมเพียงพอเพื่อให้ฉันสามารถเข้าใจส่วนในพีชคณิตขอบของพวกเขา

ขอขอบคุณ!


3
เพียงแค่เติมลงในช่องว่าง: พีชคณิตนามธรรมคือการศึกษาชุดขององค์ประกอบที่เคารพกฎบางอย่าง ในขณะที่คุณอาจเดาได้ว่ากฎเหล่านี้สร้างความพึงพอใจคือคุณสมบัติเช่นการปิดองค์ประกอบของตัวตนการมีอยู่ของผู้รุกรานที่ไม่ซ้ำกันและในฐานะที่เป็นหนึ่งในการสับเปลี่ยนการเชื่อมโยง (ตัวอย่างที่ดีคือการเรียงสับเปลี่ยน)
Ross Snider


ฉันเดาว่าคำถามที่สองของฉันเป็นคำถามที่ไม่ได้รับ ฉันรู้ทฤษฎีกลุ่ม ฉันรู้ว่าแหวนและสนามคืออะไร มันเป็นเพียงว่าในบทความที่พวกเขากำหนดพีชคณิตนามธรรม: "พีชคณิตขอบเป็นพีชคณิตนามธรรม (E, E *, Onext เน่าพลิก) คุณสมบัติที่น่าพอใจ E1-E5 และ F1-F5"
bigmonachus

[... ] และฉันไม่รู้ว่ามันหมายถึงอะไร มันไม่ใช่พีชคณิตเหนือสนามใช่ไหม?
bigmonachus

คำตอบ:


32

ฉันคิดว่าการทำพิธีการ "edge algebra" ของ Guibas และ Stolfi นั้นไม่จำเป็นเลย

สิ่งที่จำเป็นจริงๆคือการจดจำความแตกต่างระหว่างกราฟแรกและกราฟคู่ แต่ละหน้าของกราฟเบื้องต้นมีจุดยอดคู่ที่สอดคล้องกัน ; ขอบแต่ละอันของกราฟเบื้องต้นนั้นมีขอบคู่ที่สอดคล้องกัน ; และแต่ละจุดสุดยอดของกราฟปฐมมีที่สอดคล้องกันคู่หน้า * ขอบปฐมเชื่อมต่อจุดยอดดั้งเดิมและใบหน้าที่แยกต่างหาก ขอบคู่เชื่อมต่อจุดยอดคู่และแยกหน้าคู่ คู่ของสองสิ่งคือสิ่งเดิม ดูรูปที่ 4 ในกระดาษของ Guibas และ Stolfi:f e e v v ffeevv

กราฟแรกและกราฟคู่

Guibas และ Stolfi เสนอความคิดเกี่ยวกับแต่ละขอบ (ไม่ว่าจะเป็นครั้งแรกหรือครั้งที่สอง) เป็นชุดของสี่ขอบกำกับเน้น ; สำหรับความเรียบง่าย, ฉันจะเรียกเหล่านี้ลูกดอก แต่ละลูกดอกคะแนนจากจุดปลายหนึ่งไปยังจุดปลายอีกและแยกใบหน้าสองหน้าและ{E}) ตัวเลือกที่ปลายทางที่จะโทรหาคือทิศทางของโผและตัวเลือกที่จะโทรหาเป็นการวางแนวหาง(e )หัว(e )ซ้าย(e )ขวา(e )หาง(e )ซ้าย(e )eหาง(อี)ศีรษะ(อี)ซ้าย(อี)ขวา(อี)หาง(อี)ซ้าย(อี). (Guibas และ Stolfi ใช้ "Org" และ "Dest" แทน "tail" และ "head" แต่ฉันชอบป้ายที่สั้นกว่าเพราะตัวย่อที่ไม่จำเป็นเป็นสิ่งชั่วร้าย)

สำหรับลูกดอกใด ๆGuibas และ Stolfi เชื่อมโยงลูกดอกสามดอกที่เกี่ยวข้อง:อี

  1. tail ( e ) etailNext(อี) : โผออกต่อไปเพื่อทวนเข็มนาฬิกาหลังจาก{E}หาง(อี)อี
  2. eซ้าย( e ) ขวา(ดีด(อี) : ลูกดอก“ เดียวกัน” เป็นแต่มีและสลับอีซ้าย(อี)ขวา(อี)
  3. หมุน(อี) : โผคู่ที่ได้รับโดยให้หนึ่งในสี่หันทวนเข็มนาฬิการอบจุดกึ่งกลางอี

ต่อท้ายหมุนและพลิก

ฟังก์ชั่นทั้งสามนี้ตอบสนองตัวตนที่น่าอัศจรรย์ทุกประเภทเช่น:

  • ขวา(tailNext(อี))=ซ้าย(อี)
  • ขวา(ดีด(อี))=ซ้าย(อี)
  • ขวา(หมุน(อี))=ศีรษะ(อี)* * * *
  • ดีด(ดีด(อี))=อี
  • หมุน(หมุน(หมุน(หมุน(อี))))=อี
  • tailNext(หมุน(tailNext(หมุน(อี))))=อี

สำหรับรายการทั้งหมดให้ดูหน้า 83 ของกระดาษ (แต่ระวังว่าผู้แต่งใช้เครื่องหมาย postfixน่าจะเป็นเพราะมันใกล้กับรหัสประกาศ) Guibas และ Stolfi เรียกร้องใด ๆ สามของฟังก์ชั่นความพึงพอใจของตัวตนทั้งหมดเหล่านี้พีชคณิตขอบอี Fล.ผมพีe.Flip

ยิ่งไปกว่านั้นด้วยฟังก์ชั่นทั้งสามนี้เราสามารถกำหนดฟังก์ชั่นที่มีประโยชน์อื่น ๆ อีกมากมายเช่น

  • ถอยหลัง(อี)=หมุน(ดีด(หมุน(อี))) - สลับหัวและหางจุดยอด
  • eเหลือ( e )leftNext(อี)=หมุน(tailNext(หมุน(หมุน(หมุน(อี))))) - โผถัดไปหลังจากตามลำดับทวนเข็มนาฬิการอบใบหน้าอีซ้าย(อี)

ในที่สุดการรู้ว่าฟังก์ชั่นเหล่านี้จะบอกคุณทุกอย่างเกี่ยวกับโทโพโลยีของการแบ่งและการแบ่งเหลี่ยมหลายเหลี่ยมของพื้นผิวใด ๆ (ปรับทิศทางได้หรือไม่) สามารถเข้ารหัสได้โดยใช้ฟังก์ชันทั้งสามนี้

โครงสร้างข้อมูลแบบ quad-edge เป็นการแสดงกราฟพื้นผิวที่ให้ความสะดวกในการเข้าถึงฟังก์ชั่นเหล่านี้พร้อมกับการดำเนินการเวลาคงที่อื่น ๆ เช่นการแทรกการลบการทำสัญญาการขยายและการพลิกขอบ แยกหรือรวมจุดยอดหรือใบหน้า; และการเพิ่มหรือลบที่จับหรือข้ามแคป

มีความสุข!


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