ฉันมีปัญหาที่ไม่เหมือนใครในการแก้ปัญหาและฉันหวังว่าจะมีใครบางคนที่นี่สามารถให้ข้อมูลเชิงลึกเกี่ยวกับวิธีจัดการกับปัญหาได้ดีที่สุด
ปัญหา:สมมติว่ามีการแบ่งปันรายชื่อหมายเลข N ในกลุ่มของผู้เข้าร่วมในลักษณะที่ไม่มีผู้เข้าร่วมคนเดียวที่รู้หมายเลขที่พวกเขาแบ่งปัน ผู้เข้าร่วมทุกคนรู้ว่า N (ขนาดของรายการตัวเลข) และผลรวมของตัวเลขทั้งหมดในรายการ แต่ไม่มีอะไรเพิ่มเติมมาก่อน
โดยการทำงานร่วมกันเป็นไปได้ที่จะเปรียบเทียบตัวเลขที่แชร์กันสองตัว a และ b ในแบบที่ผู้เข้าร่วมเรียนรู้ว่าคำว่า "a <b" นั้นเป็นจริง แต่ไม่มีอะไรเพิ่มเติม อย่างไรก็ตามนี่เป็นสิ่งที่มีราคาแพงมากที่ต้องทำ (อ่าน: อาจใช้เวลาหลายวินาทีหรืออาจเป็นนาทีเพื่อทำการเปรียบเทียบให้เสร็จสิ้น) ดูจุดสิ้นสุดของโพสต์นี้สำหรับข้อมูลเพิ่มเติมอีกเล็กน้อยว่าเป็นไปได้อย่างไร
ในตอนท้ายของวันคู่กรณีต้องการส่งออกซึ่งดัชนีในรายการนั้นตรงกับ "เปอร์เซ็นต์ K สูงสุด" (K% ซึ่งมากที่สุด) แบ่งปันหมายเลขในรายการ ซึ่งแน่นอนว่าสามารถทำได้โดยการเรียงลำดับหรือใช้อัลกอริธึมการเลือก "top K" อย่างไรก็ตามสิ่งเหล่านี้มักใช้การเปรียบเทียบที่น่าเกรงขามซึ่งควรหลีกเลี่ยง (นี่คือ O (n log n) หรือ O (n) ที่มีค่าคงที่ซ่อนอยู่ค่อนข้างใหญ่)
อีกทางเลือกหนึ่งคือ "เดา" ที่ตัวเลข X ซึ่ง (1-K)% น้อยกว่า X และ K% ใหญ่กว่า จากนั้นคุณสามารถเปรียบเทียบแต่ละองค์ประกอบด้วย X และดูว่ามีขนาดใหญ่กว่าและมีขนาดเล็กเท่าใด หากการเดาของคุณผิดให้แก้ไขโดยใช้การค้นหาแบบไบนารี่จนกว่าคุณจะเข้าหาโซลูชันที่ถูกต้อง สิ่งนี้ใช้การเปรียบเทียบน้อยลงถ้าการเดาของคุณดี
ดังนั้นคำถามของฉันคือ
เมื่อพิจารณาเฉพาะ N และผลรวมวิธีที่ดีที่สุดในการ "คาดการณ์" X คืออะไร
ของหลักสูตรนี้จะขึ้นอยู่กับการกระจายพื้นฐาน สำหรับกรณีการใช้งานที่แตกต่างกันการแจกแจงพื้นฐานจะแตกต่างกัน แต่จะเป็นที่รู้จักดังนั้นฉันสนใจวิธีแก้ปัญหาที่ดีสำหรับคนทั่วไป (ปกติ, สม่ำเสมอ, เลขชี้กำลัง ฉันยินดีที่จะรับฟังข้อเสนอแนะเกี่ยวกับวิธีการค้นหา "แบบไบนารี" ที่ดีที่สุดเพื่อลดจำนวนขั้นตอนที่กำหนดให้กับข้อสมมติเกี่ยวกับการแจกแจงต้นแบบ
. รับส่วนแบ่งนี้ผู้เข้าร่วมไม่มีข้อมูล (ในแง่ของข้อมูลเชิงทฤษฎี) เกี่ยวกับจำนวน อันที่จริงไม่มีผู้เข้าร่วมชุดย่อยที่เหมาะสมสามารถรวมความรู้เพื่อเรียนรู้ข้อมูลใด ๆ เกี่ยวกับหมายเลขที่แบ่งปัน อย่างไรก็ตามการใช้เทคนิคการคำนวณแบบหลายฝ่ายที่มีความปลอดภัยขั้นสูงมีความเป็นไปได้ที่จะตรวจสอบว่าหนึ่งค่าที่ใช้ร่วมกันนั้นน้อยกว่าอีกค่าหนึ่ง เทคนิคนี้เกี่ยวข้องกับผู้เข้าร่วมทุกคนที่ให้ความร่วมมือซึ่งเป็นเหตุผลว่าทำไมจึงมีค่าใช้จ่ายสูงและควรทำให้น้อยที่สุดเท่าที่จะทำได้