Ước tính tỷ lệ phần trăm giữa các nút phân tán mà không tiết lộ giá trị


23

Tôi có một vấn đề khá độc đáo để giải quyết và tôi hy vọng ai đó ở đây có thể cung cấp cho tôi cái nhìn sâu sắc về cách giải quyết vấn đề tốt nhất.


Vấn đề: Giả sử một danh sách các số N được chia sẻ giữa một nhóm người tham gia theo cách mà không một người tham gia nào thực sự biết bất kỳ số nào họ chia sẻ. Tất cả những người tham gia đều biết N (kích thước của danh sách các số) và tổng của tất cả các số trong danh sách, nhưng không có gì khác là một tiên nghiệm.

Bằng cách làm việc cùng nhau, có thể so sánh hai số chia sẻ a và b theo cách mà những người tham gia tìm hiểu xem tuyên bố "a <b" có đúng không, nhưng không có gì hơn. Tuy nhiên, đây là một việc cực kỳ tốn kém (đọc: có thể mất nhiều giây, thậm chí là vài phút, để hoàn thành một so sánh duy nhất). Xem phần cuối của bài đăng này để biết thêm một chút thông tin về cách điều đó là có thể.

Vào cuối ngày, các bên muốn đưa ra các chỉ số trong danh sách tương ứng với "phần trăm K hàng đầu" (tỷ lệ K% lớn nhất) trong danh sách. Tất nhiên điều này có thể được thực hiện bằng cách sắp xếp hoặc sử dụng thuật toán lựa chọn "top K". Tuy nhiên, những xu hướng này sử dụng rất nhiều so sánh khủng khiếp, đó là điều cần tránh. (Đây là O (n log n) hoặc O (n), với các hằng số ẩn khá lớn.)

Một cách khác là "đoán" số X trong đó (1-K)% nhỏ hơn X và K% lớn hơn. Sau đó, bạn có thể so sánh từng phần tử với X và xem có bao nhiêu lớn hơn và bao nhiêu nhỏ hơn. Nếu dự đoán của bạn sai, hãy sửa lại bằng cách sử dụng tìm kiếm nhị phân cho đến khi bạn hội tụ một giải pháp chính xác. Điều này mất ít so sánh hơn nếu dự đoán của bạn là tốt.

Vì vậy, câu hỏi của tôi là,

Chỉ cho N và tổng, cách tốt nhất để "dự đoán" X là gì?

Tất nhiên điều này sẽ phụ thuộc vào phân phối cơ bản. Đối với các trường hợp sử dụng khác nhau, phân phối cơ bản có thể sẽ khác nhau nhưng sẽ được biết đến, vì vậy tôi quan tâm đến các giải pháp tốt cho tất cả các giải pháp phổ biến (bình thường, thống nhất, theo cấp số nhân, có thể là một số khác). Tôi cũng rất thích nghe các đề xuất về cách tốt nhất để thực hiện tìm kiếm "giống như nhị phân" để giảm thiểu số lượng các bước đưa ra một giả định về phân phối cơ bản.


PHỤ LỤC: Mỗi giá trị trong danh sách được chia sẻ giữa những người tham gia bằng cách sử dụng chương trình chia sẻ bí mật của Shamir. Giả sử có M người tham gia và danh sách có độ dài N. Sau đó, số thứ i trong danh sách được biểu thị bằng đa thức độ M-1 trên một số trường hữu hạn F. Số hạng không đổi của f i là số được chia sẻ, tất cả các hệ số khác được lựa chọn thống nhất một cách ngẫu nhiên từ F. cổ phiếu j thứ của người tham gia sau đó được f i ( j ) , 1 i Nftôiftôiftôi(j)1tôiN. Với chia sẻ này, người tham gia không có thông tin (theo nghĩa lý thuyết thông tin) về con số; trong thực tế, không có tập hợp con nào của người tham gia có thể kết hợp kiến ​​thức để tìm hiểu bất kỳ thông tin nào về các số được chia sẻ. Tuy nhiên, bằng cách sử dụng một kỹ thuật tính toán đa bên an toàn tinh vi, có thể xác định xem một giá trị được chia sẻ có nhỏ hơn giá trị khác mà không tiết lộ thêm thông tin nào không. Kỹ thuật này liên quan đến tất cả những người tham gia hợp tác, đó là lý do tại sao nó rất tốn kém để làm và nên được thực hiện với số lần ít nhất có thể.


Điều này nghe có vẻ thú vị, nhưng tôi chưa hiểu hết quy trình. Bạn có thể làm rõ, đặc biệt là đoạn thứ hai? Có bao nhiêu người tham gia ? Là M lớn hơn, nhỏ hơn, hoặc bằng N ? Có phải mỗi người tham gia biết một số tập hợp con của các số? Rõ ràng là tất cả họ không thể chỉ biết N và tổng số kể từ đó, không có cách nào để hỏi bất kỳ câu hỏi hoặc cộng tác theo cách tổng hợp thông tin về một < b . Có những hạn chế về các loại câu hỏi có thể được hỏi? Tôi mong được chỉnh sửa của bạn. MMNNmột<b

1
Bởi vì câu hỏi này dường như có nhiều thuật toán hơn thống kê (một yêu cầu làm rõ về vấn đề này không có phản hồi) và cộng đồng thống kê đã không đưa ra câu trả lời khả thi, chúng ta hãy di chuyển đến TCS để xem liệu nó có tạo ra bất kỳ mối quan tâm nào ở đó không.
whuber

6
Câu hỏi thực sự có vẻ đơn giản chỉ là như sau: "Nếu chúng ta biết phân phối, làm thế nào chúng ta có thể khai thác thông tin này trong thiết kế thuật toán lựa chọn dựa trên so sánh ? Thuật toán nên sử dụng càng ít so sánh càng tốt (theo dự đoán; các yếu tố không đổi vấn đề)." Tôi đã nhận được điều này phải không?
Jukka Suomela

2
Bạn đã xem xét vấn đề của triệu phú Yao chưa? Nó cho phép so sánh an toàn với tính toán ít hơn nhiều.
MS Dousti

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

Câu trả lời:


1

Bạn dường như hỏi hai câu hỏi liên quan:

  1. Các chỉ số trong danh sách tương ứng với các chỉ số hàng đầu
  2. Phần mềm ước tính tỷ lệ phần trăm, một số X mà tỷ lệ K% lớn hơn

Đây có thể cần số lượng so sánh cặp rất khác nhau.

Một khía cạnh khác có thể có tác động đáng kể là thông tin được chia sẻ. Mọi người đều biết số anh ta nhận được, biết tổng và kết quả so sánh có / không có mà họ đã tham gia. Tuy nhiên, bạn cũng nói rằng các bên của Đảng muốn đưa ra các chỉ số trong danh sách tương ứng với các chỉ số hàng đầu do đó bạn đề xuất rằng một số thông tin về các chỉ số sẽ được chia sẻ. Tùy thuộc vào chính xác những gì được chia sẻ, bạn có thể nhận được các giải pháp rất khác nhau một lần nữa.


Xin lỗi, tôi không phải là đủ rõ ràng. Không ai biết một số duy nhất trong danh sách; thay vào đó, mỗi người có một danh sách N "chia sẻ số" (sử dụng sơ đồ Chia sẻ Bí mật của Shamir, nếu bạn không quen với các khái niệm về cổ phần của một số). Vì vậy, thông tin tiên nghiệm duy nhất mà bất kỳ người tham gia nào cũng có là N và tổng của tất cả các số trong danh sách. Họ từng có một chút thông tin về mỗi số, nhưng không đủ thông tin để biết số đó là gì.

Theo như hai câu hỏi liên quan, câu hỏi thứ hai ngụ ý một giải pháp hiệu quả cho câu hỏi thứ nhất. Nếu tôi có thể tìm thấy X bằng cách sử dụng một vài phép so sánh (điều mà tôi có thể làm nếu tôi có thể đưa ra một dự đoán ban đầu khá hợp lý), thì tôi thấy các chỉ số của tất cả các giá trị lớn hơn X chỉ bằng N so sánh (các so sánh này cũng rẻ hơn, vì biết X thay vì có một phần X làm giảm chi phí so sánh xuống khoảng 1 phần ba.) Các thuật toán mục đích chung để tìm K hàng đầu thường sẽ sử dụng nhiều so sánh hơn cho các kích thước danh sách lớn, giả sử tôi có thể tìm thấy X bằng cách sử dụng ~ log ( X) so sánh

Cảm ơn các câu trả lời nhận xét và phụ lục cho câu hỏi ban đầu. Bây giờ vấn đề có vẻ khác nhau.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.