Giả sử chúng ta có một tập hợp hữu hạn đĩa trong , và chúng tôi muốn để tính toán đĩa nhỏ nhất mà . Một cách tiêu chuẩn để làm điều này là sử dụng các thuật toán của Matoušek, Sharir và Welzl [1] để tìm một cơ sở của , và để cho , đĩa nhỏ nhất chứa . Đĩa có thể được tính toán đại số bằng cách sử dụng thực tế là, kể từ là một cơ sở, mỗi đĩa trong là tiếp xúc với .
( là một cơ sở của nếu là tối thiểu mà Một cơ sở có ít nhất ba yếu tố;. Nói chung cho quả bóng trong cơ sở có ít nhất . Yếu tố)
Nó là một thuật toán đệ quy ngẫu nhiên như sau. (Nhưng xem bên dưới để biết phiên bản lặp, có thể dễ hiểu hơn.)
Quy trình :
Đầu vào : Tập hợp hữu hạn của các đĩa , , trong đó là cơ sở (của ).
- Nếu , lợi nhuận .
- Nếu không thì chọn một cách ngẫu nhiên.
- Hãy .
- Nếu rồi trở về .
- Nếu không trở lại , nơi là một cơ sở .
Sử dụng như để tính toán một cơ sở .
Gần đây tôi có nguyên nhân để thực hiện thuật toán này. Sau khi xác minh rằng kết quả là chính xác trong hàng triệu trường hợp thử nghiệm được tạo ngẫu nhiên, tôi nhận thấy rằng tôi đã mắc lỗi trong quá trình thực hiện. Trong bước cuối cùng tôi đã trở về chứ không phải là M S W ( L , B " ) .
Mặc dù lỗi này, thuật toán đã đưa ra câu trả lời đúng.
Câu hỏi của tôi: Tại sao phiên bản thuật toán không chính xác này rõ ràng đưa ra câu trả lời chính xác ở đây? Nó luôn luôn (có thể) làm việc? Nếu vậy, điều đó cũng đúng trong các chiều cao hơn?
Đã thêm: một số quan niệm sai lầm
Một số người đã đề xuất các đối số không chính xác cho thấy thuật toán được sửa đổi là chính xác tầm thường, do đó có thể hữu ích để kiểm tra một số quan niệm sai lầm ở đây. Một niềm tin sai lầm phổ biến dường như là . Đây là một ví dụ cho yêu cầu đó. Với đĩa một , b , c , d , e như sau (ranh giới của ⟨ một , b , e ⟩ cũng thể hiện trong màu đỏ):
chúng ta có thể có ; và lưu ý rằng e ∉ ⟨ c , d ⟩ :
Đây là cách nó có thể xảy ra. Quan sát đầu tiên là :
- Chúng tôi muốn tính toán
- Chọn
- Hãy
- Quan sát rằng
- Vì vậy, hãy là một cơ sở B ' ∪ { X } = { một , b , c , đ }
- Quan sát rằng
- Trả về , đó là { b , c }
Bây giờ hãy xem xét .
- Chúng tôi muốn tính
- Chọn
- Đặt
- Quan sát rằng
- Vì vậy, hãy là một cơ sở B ' ∪ { X } = { b , c , d }
- Quan sát rằng
- Trả về , đó là { c , d }
(Để chắc chắn, chúng ta hãy nói rằng các đĩa đều có bán kính 2 và được đặt ở giữa ( 30 , 5 ) , ( 30 , 35 ) , ( 10 , 5 ) , ( 60 , 26 ) và ( 5 , 26 ) tương ứng.)
Đã thêm: một bài thuyết trình lặp
Có thể dễ dàng hơn để suy nghĩ về một bài trình bày lặp đi lặp lại của thuật toán. Tôi chắc chắn thấy dễ dàng hơn để hình dung hành vi của nó.
Đầu vào : Danh sách của đĩa Đầu ra : Cơ sở của L
- Hãy .
- Xáo trộn ngẫu nhiên.
- Đối với mỗi trong L :
- Nếu :
- Đặt là cơ sở của B ∪ { X } .
- Quay trở lại bước 2.
- Return .
Lý do các thuật toán chấm dứt, tình cờ, là bước 5 luôn làm tăng bán kính - và chỉ có hữu hạn nhiều giá trị có thể có của B .
Phiên bản sửa đổi không có bản trình bày lặp đơn giản như vậy, theo như tôi có thể thấy. (Tôi đã cố gắng đưa ra một trong lần chỉnh sửa trước cho bài đăng này, nhưng nó đã sai - và cho kết quả không chính xác.)
Tài liệu tham khảo
[1] Jiří Matoušek, Micha Sharir và Emo Welzl. Một giới hạn phụ cho lập trình tuyến tính. Thuật toán, 16 (4-5): 498 bóng516, 1996.