อัลกอริทึมในการค้นหามวลรวมของ“ Granola Bar” - โครงสร้างที่เหมือนกันไหม?
ฉันเป็นนักวิจัยวิทยาศาสตร์ดาวเคราะห์และอีกหนึ่งโครงการที่ฉันกำลังทำอยู่คือการจำลองแบบN -body เกี่ยวกับวงแหวนของดาวเสาร์ เป้าหมายของการศึกษาครั้งนี้คือการจับก้อนกอเข้าด้วยกันภายใต้แรงโน้มถ่วงของตัวเองและวัดมวลรวมของกลุ่มกับความเร็วเฉลี่ยของอนุภาคทั้งหมดในเซลล์ เรากำลังพยายามหาว่าสิ่งนี้สามารถอธิบายการสังเกตการณ์บางอย่างที่ทำโดยยานแคสสินีในช่วงฤดูร้อนดาวเสาร์เมื่อสิ่งมีชีวิตขนาดใหญ่เห็นโครงสร้างเงาขนาดใหญ่บนวงแหวนที่เกือบจะเป็นขอบ ด้านล่างนี้เป็นภาพหน้าจอของเวลาที่กำหนดใด ๆ ที่ดูเหมือน (แต่ละอนุภาคมีเส้นผ่านศูนย์กลาง 2 เมตรและเซลล์จำลองเองนั้นมีความยาวประมาณ 700 เมตร) รหัสที่ฉันใช้อยู่นั้นได้กระจายความเร็วเฉลี่ยในทุกการประทับเวลาแล้ว สิ่งที่ฉันต้องทำคือหาวิธีที่จะกำหนดมวลของอนุภาคในกอและไม่ใช่อนุภาคที่หลงทางระหว่างพวกมัน ฉันรู้ว่าทุกตำแหน่งของอนุภาคมวลขนาดและอื่น ๆ แต่ฉันไม่รู้ว่ามันง่ายขนาดนั้นอนุภาค 30,000-40,000 พร้อมกับ 102,000-105,000 ประกอบเป็นเส้นเดียวต่อสายตามนุษย์ชัดเจน ดังนั้นอัลกอริทึมที่ฉันต้องเขียนจะต้องเป็นรหัสที่มีพารามิเตอร์ที่ผู้ใช้ป้อนน้อยที่สุดเท่าที่จะเป็นไปได้ (สำหรับการทำซ้ำและความเที่ยงธรรม) ที่จะผ่านตำแหน่งอนุภาคทั้งหมดแล้วคำนวณว่าอนุภาคใดเป็นกระจุก มวล. มันจะดีถ้ามันสามารถทำได้สำหรับ "แต่ละ" กลุ่ม / สาระเมื่อเทียบกับทุกสิ่งที่อยู่ในเซลล์ แต่ฉันไม่คิดว่าจริง ๆ แล้วฉันต้องการแยกมันออก สิ่งเดียวที่ฉันคิดคือทำการคำนวณระยะทางN 2โดยที่ฉันคำนวณระยะห่างระหว่างทุกอนุภาคและถ้าบอกว่า 100 อนุภาคที่อยู่ใกล้ที่สุดนั้นอยู่ในระยะทางที่กำหนดจากนั้นอนุภาคนั้นจะถูกพิจารณาเป็นส่วนหนึ่งของ กลุ่ม แต่ดูเหมือนว่าจะเลอะเทอะมากและฉันหวังว่าคุณ CS คนและโปรแกรมเมอร์อาจจะรู้วิธีการแก้ปัญหาที่สง่างามมากขึ้น? แก้ไขได้ด้วยโซลูชั่นของฉัน: อะไรที่ฉันไม่ได้ที่จะใช้การจัดเรียงของที่ใกล้ที่สุดเพื่อนบ้าน / วิธีการคลัสเตอร์และทำอย่างรวดเร็ว-N-สกปรกN 2ดำเนินการครั้งแรก ดังนั้นเอาทุกอนุภาคคำนวณระยะทางไปยังอนุภาคอื่นทั้งหมดและเกณฑ์สำหรับในกลุ่มหรือไม่ก็คือว่ามีอนุภาคNอยู่ภายในระยะทางdหรือไม่(พารามิเตอร์สองตัวที่ต้องตั้งค่านิรนัยโชคไม่ดี คำตอบ / …