สุ่มตัวอย่างในรูปหลายเหลี่ยม


9

ฉันต้องการตัวอย่างจุดสุ่มอย่างสม่ำเสมอในรูปหลายเหลี่ยม ...

หากสุ่มตัวอย่างเป็นจำนวนมากพวกเขามีแนวโน้มที่จะตกอยู่ในสองภูมิภาคเท่ากันหากพวกเขามีพื้นที่เดียวกัน

นี่จะค่อนข้างง่ายถ้ามันเป็นรูปสี่เหลี่ยมจัตุรัสเนื่องจากฉันจะใช้สองตัวเลขสุ่มใน [0,1] เป็นพิกัดของฉัน

รูปร่างที่ฉันมีเป็นรูปหลายเหลี่ยมปกติ แต่ฉันต้องการให้ใช้กับรูปหลายเหลี่ยมใด ๆ

/programming/3058150/how-to-find-a-random-point-in-a-quadrangle

คำตอบ:


9
  1. วิเคราะห์รูปสามเหลี่ยม
  2. กำหนดจุดสามเหลี่ยมที่ควรวาง (น้ำหนักสามเหลี่ยมพื้นที่)
  3. ตัวอย่างจุดในรูปสามเหลี่ยมตามที่อธิบายในโพสต์นี้

คำถามนี้ไม่ใช่คำถามที่เก่ากว่าที่คุณลิงค์หรือเปล่า
กราฟิลส์

@ ราฟาเอล: ที่เกี่ยวข้อง แต่โดยทั่วไปแล้วฉันอยากจะบอกว่า
A.Schulz

4

วิธีที่ง่ายวิธีหนึ่งคือการหากล่องขอบสำหรับรูปหลายเหลี่ยมของคุณและใช้การสุ่มตัวอย่างปฏิเสธ: ตัวอย่างจากกล่องขอบและยอมรับว่ามันอยู่ในรูปหลายเหลี่ยมซึ่งจะเกิดขึ้นกับความน่าจะเป็นอย่างน้อย (ฉันคิดว่า)1/2

ความเป็นไปได้อีกอย่างก็คือการหารูปหลายเหลี่ยมของคุณ ตัวอย่างแรกเป็นรูปสามเหลี่ยมในลักษณะที่เป็นสัดส่วนจากนั้นสุ่มจุดตัวอย่างในรูปสามเหลี่ยม หลังเป็นเรื่องง่าย: ถึงเลียนแบบแปลง, สามเหลี่ยมทั้งหมดเป็นของแบบฟอร์ม\} ตัวอย่างหนึ่งจุดจากการแจกแจงตัวอย่างแรกตามความหนาแน่น (เช่นตัวอย่างเครื่องแบบและคำนวณ ) และจากนั้นตัวอย่างสม่ำเสมอ (เช่นตัวอย่างเครื่องแบบและคำนวณ ) วิธีที่ง่ายกว่าคือการสุ่มตัวอย่างและถ้า{(x,y):x,y0,x+y1}x[0,1]2(1x)r[0,1]x=1-1-RY[0,1-x]s[0,1]Y=(1-x)sx,Y[0,1]x+Y>1แทนที่กับy)(x,Y)(1-x,1-Y)


การสุ่มตัวอย่างการปฏิเสธจะปฏิเสธด้วยความน่าจะเป็นที่มากที่สุด 1/2 ใน 2 มิติ แต่ในมิติที่สูงกว่าความน่าจะเป็นของการปฏิเสธอาจแย่กว่ามาก
DW

การสุ่มตัวอย่างการปฏิเสธอาจมีอัตราการปฏิเสธที่ใหญ่กว่า 1/2 แค่คิดว่าเป็นเกลียวเกลียวออกมาเล็กน้อย
A.Schulz

เกิดอะไรขึ้นถ้ารูปหลายเหลี่ยมรับประกันว่าจะนูน
Yuval Filmus

หากกล่องขอบของคุณมีการจัดแนวแกนแล้วนูนไม่ช่วย; ตามคำตอบของคำถามก่อนหน้านี้แนะนำให้พิจารณาสามเหลี่ยมที่มีจุดยอดที่ (0, 1), (1, 0) และ (x, x) สำหรับ x ที่มีขนาดใหญ่มาก - นี่จะใช้สัดส่วนกล่องเล็ก ๆ เป็น x ไปที่อินฟินิตี้ หากคุณกำลังพูดคุยเกี่ยวกับที่เล็กที่สุดกรอบที่เป็นไปได้จากนั้นคุณสามารถอาจขอบเขตการสืบทอดมาบนไดรฟ์รูปร่างนูนของคุณจะขึ้น แต่แล้วคุณต้องไปหากล่อง ...
สตีเว่น Stadnicki

4

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

ใช้ทฤษฎีการทำแผนที่ Reimannเพื่อค้นหาแผนที่มาตราส่วนจากดิสก์ยูนิตไปยังรูปหลายเหลี่ยมของคุณโดยดูเป็นส่วนย่อยของ. ดูตัวอย่างการอ้างอิงใน:

http://siam.org/pdf/news/1297.pdf

จากนั้นใช้ pushforward ของความหนาแน่นเครื่องแบบบนแผ่นดิสก์ในขณะที่ความหนาแน่นของข้อเสนอในการสุ่มตัวอย่าง Metropolis-เฮสติ้งส์ MCMC


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

ดังนั้นจึงจำเป็นต้องใช้มันเป็นข้อเสนอใน MCMC ไม่ใช่ตัวอย่างจริง ด้วยความไม่เท่าเทียมกันของ Poincare คุณสามารถแสดงความแปรปรวนของแผนที่มาตราส่วนจากเครื่องแบบถูกล้อมรอบด้วยค่าคงที่
Nick Alger

บางทีฉันอาจจะยังขาดหายไป การอภิปรายในหน้าวิกิพีเดียชี้ไปที่บอกว่า 'การแจกจ่ายทดลองใช้' ยังคงต้องเป็นสัดส่วนโดยตรงกับการกระจายที่ต้องการ เช่นไม่aP(x)<(x)<P(x) สำหรับค่าคงที่บางค่า a และ แต่ (x)=P(x)x. ความแปรปรวนในพื้นที่ของความหนาแน่นที่แมปจะยังคงนำไปสู่ความแปรปรวนในการสุ่มตัวอย่าง
Steven Stadnicki

ประเด็นทั้งหมดของ Metropolis Hastings MCMC คือข้อเสนอไม่ใช่การกระจายที่แท้จริง ความเร็วการบรรจบกันของห่วงโซ่ MCMC ขึ้นอยู่กับว่าข้อเสนอนั้นมีความใกล้เคียงกับการแจกแจงที่แท้จริงเพียงใด ข้อเสนอที่พบบ่อยที่สุดคือการวาง Gaussian ที่จุดปัจจุบันโดยไม่คำนึงถึงการกระจายที่คุณกำลังพยายามที่จะตัวอย่าง ...
นิค Alger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.