การทดสอบว่าชุดของจุด n ในเครื่องบินเป็นรูปหลายเหลี่ยมนูน n ในเวลา (nlogn)


13

สมมติว่าคุณได้รับชุดของจุด n ในระนาบและคุณต้องการตรวจสอบว่าพวกเขาเป็นรูปหลายเหลี่ยมนูน n หรือไม่เช่นถ้าพวกเขาทั้งหมดอยู่บนเปลือกนูน ฉันสงสัยว่าใครรู้วิธีการทำในเวลา o (nlogn) คือโดยไม่ต้องคำนวณ CH


คุณสามารถคำนวณฮัลล์นูนในเวลา O (n log n) คุณหมายถึงถ้าเป็นไปได้ที่จะทำในเวลาน้อยกว่าที่?
ต่อ Vognsen

ใช่ฉันเชื่อว่าควรมีขั้นตอนวิธีเชิงเส้นตรงสำหรับปัญหานี้ แต่ฉันไม่รู้ว่าอย่างไร
Babis Tsourakakis

4
เขาเขียน o (nlogn) ไม่ใช่ O (nlogn) ดังนั้นคำถามของเขาจึงถูกต้อง
Shiva Kintali

1
ฉันใช้สัญลักษณ์เล็ก ๆ น้อย ๆ เพื่อให้คำถามยังคงเป็นเช่นนั้น
Babis Tsourakakis

4
มันทำให้ฉันขมวดคิ้วเล็กน้อยเพื่อดูการเรียงลำดับตัวเลข (หรือเปลือกนูนที่เท่ากันของคะแนนคาร์ทีเซียน) ที่ระบุว่าใช้เวลาΘ (n log n) โดยไม่ต้องมีคำชี้แจงที่ชัดเจนเกี่ยวกับรูปแบบการคำนวณที่คุณใช้ การเรียงลำดับการเปรียบเทียบต้องใช้เวลาΘ (n log n) แต่โมเดลการเปรียบเทียบไม่อนุญาตให้คำนวณลำตัวได้เลย พวกเขาทั้งสองยังคงเวลาΘ (n log n) สำหรับต้นไม้ตัดสินใจเกี่ยวกับพีชคณิต (ตามคำตอบที่ยอมรับแสดง) แต่เร็วกว่าในรูปแบบการคำนวณที่ใกล้เคียงกับคอมพิวเตอร์จริงมากขึ้น
David Eppstein

คำตอบ:


17

ดูเหมือนไม่น่าเป็นไปได้อย่างน้อยในแบบจำลองเปรียบเทียบ / พีชคณิต คำจำกัดความแรก:

ชุดจุดอยู่ในตำแหน่งนูนหากไม่สามารถเขียนจุดของPเป็นจุดรวมที่เหลือของPได้PPP

ตอนนี้การตัดสินใจว่าชุดของตัวเลขแตกต่างกันทั้งหมดใช้เวลาΩ ( n log n )เวลา (ซึ่งเรียกว่า UNIQUENESS) เมื่อให้ชุดตัวเลขnจำนวนXให้จับคู่กับชุดของจุด P = { ( x , x 2 ) | x X } หากไม่มีหมายเลขซ้ำแล้วคะแนนจะอยู่ในตำแหน่งนูนnΩ(nlogn)nX

P={(x,x2)|xX}.

หากมีตัวเลขซ้ำจำนวนที่ซ้ำกันนี้จะตรงกับจุดที่สามารถเขียนเป็นจุดรวมที่เหลือของนูนได้ กล่าวคือคะแนนไม่ได้อยู่ในตำแหน่งนูน

กล่าวคือการตัดสินใจว่าจุดที่ตั้งอยู่ในตำแหน่งนูนนั้นยากเท่า UNIQUENESS หรือไม่


12
X[i](X[i],X[i]2+i/n2)

1
@Babis: การลดลงของ Jeff ทำงานเมื่อไม่อนุญาตให้ใช้คะแนนซ้ำ คะแนนที่สร้างขึ้นจากการลดลงนั้นไม่ซ้ำกันไม่ว่าอาร์เรย์เริ่มต้นจะเป็นอะไร
Vinayak Pathak

เราจึงได้ว่าจำนวนมุมของตัวนูนเท่ากับ n ถ้าและถ้าไม่มีสองจุดที่มีพิกัด x เท่ากัน ขอบคุณมากตอนแรกฉันคิดว่ามันควรจะง่ายกว่าการจัดเรียง
Babis Tsourakakis

ขอบคุณ Vinayak ฉันไม่เคยเห็นการลดลงของ Jeff เพราะมันถูกโพสต์ในเวลาเดียวกันเมื่อฉันเขียนความคิดเห็นก่อนหน้านี้ซึ่งฉันได้แทนที่ด้านบน
Babis Tsourakakis

2
Suresh ฉันไม่เห็นด้วยกับวลี "รุ่นมาตรฐาน" นั่นคือสิ่งที่ Word RAM คือ :) มันเป็นรุ่นที่ใกล้เคียงกับคอมพิวเตอร์จริงมากที่สุดและเราใช้ในการวิเคราะห์อัลกอริทึมใน TCS ส่วนใหญ่ เรขาคณิตได้ขอร้องให้ยกเว้นการใช้ Real RAM เพื่อให้เราไม่ต้องจัดการกับปัญหาความแม่นยำ แต่นั่นไม่ใช่ "รุ่นมาตรฐาน"
หมดเวลา

-1

O(nlogn)

เมื่อคุณทราบลำดับของคะแนนแล้วมุมจากแต่ละจุดถึงจุดถัดไปในลำดับควรเป็นแบบโมโนโทนิก นี่เป็นเงื่อนไขที่จำเป็นและฉันคิดว่าเป็นเงื่อนไขที่เพียงพอ

การหาจุดภายในเป็นแบบฝึกหัดสำหรับผู้อ่าน


O(nlogn)


คุณอาจอ่าน o (n log n) ของเขาผิดเหมือน O (n log n) มากเท่าที่ฉันทำ อย่างไรก็ตามอัลกอริทึมที่คุณระบุไว้คือการห่อของขวัญในรูปแบบของตัวอ่อน คุณไม่จำเป็นต้องใช้จุดภายในจริงๆ คุณสามารถใช้จุดบนขอบเขตเช่นจุดที่มีพิกัด x น้อยที่สุด
ต่อ Vognsen

O(nlogn)o()

ประเด็นก็คือมีอัลกอริทึมฮัลล์นูนมากมายที่ทำงานใน O (n log n) อัลกอริทึมของคุณนั้นห่อของขวัญธรรมดาแบบธรรมดา เขากำลังขอสิ่งที่เร็วขึ้นเช่นเวลาเชิงเส้น ดูคำตอบอื่น ๆ
ต่อ Vognsen

1
เกี่ยวกับการแก้ไขของคุณหากคุณสามารถดูคำตอบที่ได้รับการยอมรับด้านบนของคุณคุณจะเห็นว่าปัญหานั้นเทียบเท่ากับความเป็นเอกลักษณ์ขององค์ประกอบซึ่งมีขอบเขตต่ำกว่า O (n log n)
ต่อ Vognsen

2
@BCS: ฉันกลัวว่าคุณมีความเข้าใจผิดเกี่ยวกับคำตอบของ Sariel Har-Peled การลดลงนั้นมาจากความเป็นเอกลักษณ์ไปจนถึงการทดสอบตำแหน่งแบบนูนไม่ใช่ทิศทางอื่น นั่นคือ Sariel (และ JeffE) กล่าวว่าหากคุณได้รับชุดของตัวเลขและต้องการทดสอบความเป็นเอกลักษณ์คุณสามารถแปลงเป็นชุดของคะแนนและใช้อัลกอริทึมสำหรับการทดสอบตำแหน่งนูน
Tsuyoshi Ito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.