Vấn đề là chúng tôi muốn tránh tất cả các máy tính phải biết lẫn nhau - nhưng chỉ là người lãnh đạo.
Cuộc bầu cử lãnh đạo là vấn đề chọn một nhà lãnh đạo duy nhất trong số các ứng cử viên lãnh đạo tiềm năng. Xem xét nó khi có hai thuộc tính bắt buộc: liveness và an toàn. Ở đây, liveness có nghĩa là "hầu hết thời gian, có một nhà lãnh đạo", trong khi an toàn có nghĩa là "có hoặc là không hoặc một nhà lãnh đạo". Hãy xem xét cách chúng tôi sẽ giải quyết tài sản an toàn này trong ví dụ của bạn, bằng cách sử dụng chương trình phát sóng.
Hãy chọn một thuật toán đơn giản (bị hỏng), giả sử mỗi nút có một ID duy nhất. Mỗi nút phát sóng ID của nó và lắng nghe. Khi nhận được một ID cao hơn của riêng nó, nó ngừng tham gia.Nếu nó nhận được một ID thấp hơn của riêng nó, nó sẽ gửi chương trình phát sóng riêng của mình một lần nữa. Giả sử một mạng đồng bộ, ID cuối cùng mà mọi người nhận được là ID của người dẫn đầu. Bây giờ, giới thiệu một phân vùng mạng. Giao thức sẽ vui vẻ tiếp tục ở hai bên của phân vùng, và hai nhà lãnh đạo sẽ được bầu.
Đó là sự thật của giao thức bị hỏng này, nhưng nó cũng đúng với tất cả các giao thức có thể. Làm thế nào để bạn biết sự khác biệt giữa các nút bạn không thể giao tiếp với và các nút không tồn tại nếu bạn không biết (ít nhất) có bao nhiêu nút tồn tại? Vì vậy, có kết quả an toàn đầu tiên an toàn: bạn cần phải biết có bao nhiêu nút tồn tại hoặc bạn không thể đảm bảo chỉ có một nhà lãnh đạo.
Bây giờ, hãy thư giãn an toàn an toàn của chúng tôi ràng buộc là một xác suất: "có thể có không hoặc nhiều nhà lãnh đạo, nhưng hầu hết thời gian có một". Điều đó làm cho vấn đề có thể xử lý được, và một giải pháp được sử dụng rộng rãi là tin đồn (giao thức dịch bệnh). Ví dụ: xem A Gossip-Style Failure Detection Service thảo luận về một biến thể của vấn đề chính xác này. Bài báo chủ yếu liên quan đến việc phát hiện và liệt kê thất bại chính xác theo xác suất, nhưng nếu bạn có thể làm điều đó bạn cũng có thể thực hiện cuộc bầu cử lãnh đạo đúng theo xác suất.
Theo như tôi có thể nói, bạn không thể có cuộc bầu cử lãnh đạo không có xác suất an toàn trong các mạng chung mà không cần ít nhất liệt kê những người tham gia.
Nguồn
2014-04-13 23:59:59
Với mô tả sự cố bạn đưa ra, thật khó để làm bất cứ điều gì khác ngoài việc giới thiệu cho bạn bài viết wikipedia mà bạn đã cung cấp. Bạn có thể cung cấp thêm chi tiết, có thể nói lý do tại sao các thuật toán được liệt kê trong trang wikipedia không cung cấp những gì bạn cần? – blubb
Xin chào Blubb. Theo như tôi có thể thấy Các thuật toán trên trang wikipedia yêu cầu tất cả các máy tính đều biết tất cả các máy tính khác. Nhưng tôi muốn tìm một giải pháp hoạt động khi họ không biết nhau. Bạn có thể làm theo tôi? Chi phí sử dụng phát đa hướng/phát sóng là bao nhiêu. Nó tuyến tính với số lượng máy tính trong nhóm, hay nó chỉ phụ thuộc vào lượng dữ liệu bạn muốn gửi? –
Không thực sự. Ví dụ: tôi không thấy cách [Thuật toán bắt nạt] (http://en.wikipedia.org/wiki/Bully_algorithm) sẽ dựa vào các máy tính biết lẫn nhau. Trong thực tế, nó dựa trên phát sóng. Bạn có thể đưa ra một mô tả chính xác về những gì 'biết nhau' có nghĩa là trong thuật ngữ kỹ thuật hay đồ thị lý thuyết? – blubb