การประมาณค่าเปอร์เซ็นต์ไทล์ระหว่างโหนดแบบกระจายโดยไม่เปิดเผยค่า


23

ฉันมีปัญหาที่ไม่เหมือนใครในการแก้ปัญหาและฉันหวังว่าจะมีใครบางคนที่นี่สามารถให้ข้อมูลเชิงลึกเกี่ยวกับวิธีจัดการกับปัญหาได้ดีที่สุด


ปัญหา:สมมติว่ามีการแบ่งปันรายชื่อหมายเลข N ในกลุ่มของผู้เข้าร่วมในลักษณะที่ไม่มีผู้เข้าร่วมคนเดียวที่รู้หมายเลขที่พวกเขาแบ่งปัน ผู้เข้าร่วมทุกคนรู้ว่า N (ขนาดของรายการตัวเลข) และผลรวมของตัวเลขทั้งหมดในรายการ แต่ไม่มีอะไรเพิ่มเติมมาก่อน

โดยการทำงานร่วมกันเป็นไปได้ที่จะเปรียบเทียบตัวเลขที่แชร์กันสองตัว a และ b ในแบบที่ผู้เข้าร่วมเรียนรู้ว่าคำว่า "a <b" นั้นเป็นจริง แต่ไม่มีอะไรเพิ่มเติม อย่างไรก็ตามนี่เป็นสิ่งที่มีราคาแพงมากที่ต้องทำ (อ่าน: อาจใช้เวลาหลายวินาทีหรืออาจเป็นนาทีเพื่อทำการเปรียบเทียบให้เสร็จสิ้น) ดูจุดสิ้นสุดของโพสต์นี้สำหรับข้อมูลเพิ่มเติมอีกเล็กน้อยว่าเป็นไปได้อย่างไร

ในตอนท้ายของวันคู่กรณีต้องการส่งออกซึ่งดัชนีในรายการนั้นตรงกับ "เปอร์เซ็นต์ K สูงสุด" (K% ซึ่งมากที่สุด) แบ่งปันหมายเลขในรายการ ซึ่งแน่นอนว่าสามารถทำได้โดยการเรียงลำดับหรือใช้อัลกอริธึมการเลือก "top K" อย่างไรก็ตามสิ่งเหล่านี้มักใช้การเปรียบเทียบที่น่าเกรงขามซึ่งควรหลีกเลี่ยง (นี่คือ O (n log n) หรือ O (n) ที่มีค่าคงที่ซ่อนอยู่ค่อนข้างใหญ่)

อีกทางเลือกหนึ่งคือ "เดา" ที่ตัวเลข X ซึ่ง (1-K)% น้อยกว่า X และ K% ใหญ่กว่า จากนั้นคุณสามารถเปรียบเทียบแต่ละองค์ประกอบด้วย X และดูว่ามีขนาดใหญ่กว่าและมีขนาดเล็กเท่าใด หากการเดาของคุณผิดให้แก้ไขโดยใช้การค้นหาแบบไบนารี่จนกว่าคุณจะเข้าหาโซลูชันที่ถูกต้อง สิ่งนี้ใช้การเปรียบเทียบน้อยลงถ้าการเดาของคุณดี

ดังนั้นคำถามของฉันคือ

เมื่อพิจารณาเฉพาะ N และผลรวมวิธีที่ดีที่สุดในการ "คาดการณ์" X คืออะไร

ของหลักสูตรนี้จะขึ้นอยู่กับการกระจายพื้นฐาน สำหรับกรณีการใช้งานที่แตกต่างกันการแจกแจงพื้นฐานจะแตกต่างกัน แต่จะเป็นที่รู้จักดังนั้นฉันสนใจวิธีแก้ปัญหาที่ดีสำหรับคนทั่วไป (ปกติ, สม่ำเสมอ, เลขชี้กำลัง ฉันยินดีที่จะรับฟังข้อเสนอแนะเกี่ยวกับวิธีการค้นหา "แบบไบนารี" ที่ดีที่สุดเพื่อลดจำนวนขั้นตอนที่กำหนดให้กับข้อสมมติเกี่ยวกับการแจกแจงต้นแบบ


fififi(j)1iN. รับส่วนแบ่งนี้ผู้เข้าร่วมไม่มีข้อมูล (ในแง่ของข้อมูลเชิงทฤษฎี) เกี่ยวกับจำนวน อันที่จริงไม่มีผู้เข้าร่วมชุดย่อยที่เหมาะสมสามารถรวมความรู้เพื่อเรียนรู้ข้อมูลใด ๆ เกี่ยวกับหมายเลขที่แบ่งปัน อย่างไรก็ตามการใช้เทคนิคการคำนวณแบบหลายฝ่ายที่มีความปลอดภัยขั้นสูงมีความเป็นไปได้ที่จะตรวจสอบว่าหนึ่งค่าที่ใช้ร่วมกันนั้นน้อยกว่าอีกค่าหนึ่ง เทคนิคนี้เกี่ยวข้องกับผู้เข้าร่วมทุกคนที่ให้ความร่วมมือซึ่งเป็นเหตุผลว่าทำไมจึงมีค่าใช้จ่ายสูงและควรทำให้น้อยที่สุดเท่าที่จะทำได้


MMNNa<b

1
เนื่องจากคำถามนี้ดูเหมือนจะเป็นอัลกอริทึมมากกว่าทางสถิติ (การร้องขอเพื่อความกระจ่างในเรื่องนี้ไม่มีการตอบสนอง) และชุมชนสถิติไม่ได้เสนอการตอบกลับที่เป็นไปได้ให้ย้ายไปยัง TCS เพื่อดูว่ามันสร้างความสนใจใด ๆ
whuber

6
คำถามจริงดูเหมือนจะเป็นเพียงแค่ต่อไปนี้: "ถ้าเรารู้ว่าการแจกแจงเราจะใช้ประโยชน์จากข้อมูลนี้ในการออกแบบอัลกอริทึมการเลือกแบบอิงการเปรียบเทียบได้อย่างไรอัลกอริทึมควรใช้การเปรียบเทียบน้อยที่สุดเท่าที่จะทำได้ เรื่อง)." ฉันได้รับสิทธินี้หรือไม่?
Jukka Suomela

2
คุณเคยพิจารณาปัญหาเศรษฐีของเหยาแล้วหรือยัง? ช่วยให้การเปรียบเทียบที่ปลอดภัยมีการคำนวณน้อยกว่ามาก
MS Dousti

3
(k,n) nk(n,n)k<<n
Massimo Cafaro

คำตอบ:


1

คุณดูเหมือนจะถามคำถามสองข้อที่เกี่ยวข้อง:

  1. “ ดัชนีใดในรายการที่ตรงกับด้านบน”
  2. “ การประมาณเปอร์เซ็นต์ไทล์”,“ ตัวเลข X ที่… K% ใหญ่กว่า”

สิ่งเหล่านี้อาจจำเป็นต้องใช้การเปรียบเทียบในจำนวนที่แตกต่างกันมาก

ด้านอื่น ๆ ที่อาจมีผลกระทบอย่างมีนัยสำคัญคือสิ่งที่แบ่งปันข้อมูล ทุกคนรู้จำนวนที่เขาได้รับรู้ผลรวมและผลลัพธ์ที่ใช่ / ไม่ใช่ของการเปรียบเทียบที่พวกเขามีส่วนร่วมอย่างไรก็ตามคุณยังพูดว่า ข้อมูลบางอย่างเกี่ยวกับดัชนีจะถูกแบ่งปัน คุณอาจได้โซลูชันที่แตกต่างกันมากขึ้นอยู่กับว่าแชร์อะไรกันแน่


ขออภัยฉันต้องไม่ชัดเจนเพียงพอ ไม่มีใครรู้หมายเลขเดียวในรายการ แต่พวกเขาแต่ละคนมีรายชื่อ N "การแบ่งปันตัวเลข" (โดยใช้รูปแบบการแบ่งปันความลับของ Shamir หากคุณไม่คุ้นเคยกับแนวคิดการแชร์จำนวนหนึ่ง) ดังนั้นข้อมูลเบื้องต้นเท่านั้นที่ผู้เข้าร่วมรายใดรายหนึ่งมีคือ N และผลรวมของตัวเลขทั้งหมดในรายการ พวกเขาแต่ละคนมีข้อมูลเล็กน้อยเกี่ยวกับแต่ละหมายเลข แต่มีข้อมูลไม่เพียงพอที่จะรู้ว่าหมายเลขนั้นคืออะไร

เท่าที่คำถามสองข้อที่เกี่ยวข้องดำเนินไปคำถามที่สองแสดงถึงโซลูชั่นที่มีประสิทธิภาพในคำถามแรก ถ้าฉันสามารถหา X ได้โดยใช้การเปรียบเทียบน้อย (ซึ่งฉันสามารถทำได้ถ้าฉันสามารถคาดเดาเริ่มต้นได้ดีพอสมควร) จากนั้นฉันจะหาดัชนีของค่าทั้งหมดที่ใหญ่กว่า X โดยใช้การเปรียบเทียบมากกว่า N (การเปรียบเทียบเหล่านี้ก็ถูกกว่าด้วยเช่นกัน การรู้ X แทนการมีส่วนแบ่งของ X ลดค่าใช้จ่ายของการเปรียบเทียบลงประมาณ 1 ในสาม) อัลกอริธึมวัตถุประสงค์ทั่วไปสำหรับการค้นหา K อันดับสูงสุดโดยทั่วไปแล้วจะใช้การเปรียบเทียบมากขึ้นสำหรับขนาดรายการขนาดใหญ่ X) การเปรียบเทียบ

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