Cách không tính vòng tròn nhỏ nhất kèm theo tập hợp hữu hạn của vòng tròn


17

Giả sử chúng ta có một tập hợp hữu hạn L đĩa trong R2 , và chúng tôi muốn để tính toán đĩa nhỏ nhất DLD . 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ở B của L , và để cho D=B , đĩa nhỏ nhất chứa B . Đĩa B có thể được tính toán đại số bằng cách sử dụng thực tế là, kể từ B là một cơ sở, mỗi đĩa trong B là tiếp xúc với B.

( BL là một cơ sở của L nếu B là tối thiểu mà B=L Một cơ sở có ít nhất ba yếu tố;. Nói chung cho quả bóng trong Rd cơ sở có ít nhất d+1 . 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 : MSW(L,B)
Đầu vào : Tập hợp hữu hạn của các đĩa L , B , trong đó B là cơ sở (của B ).

  1. Nếu L= , lợi nhuận B .
  2. Nếu không thì chọn XL một cách ngẫu nhiên.
  3. Hãy BMSW(L{X},B) .
  4. Nếu XB rồi trở về B .
  5. Nếu không trở lại MSW(L,B) , nơi B là một cơ sở B{X} .

Sử dụng như MSW(L,) để tính toán một cơ sở L .

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 " ) .MSW(L{X},B)MSW(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 đỏ):BMSW(L,B)a,b,c,d,ea,b,e

Đĩa a, b, c, d, e

chúng ta có thể có ; và lưu ý rằng e c , d :MSW({c,d},{a,b,e})={c,d}ec,d

vòng tròn bao quanh nhỏ nhất của c và d không chứa e

Đây là cách nó có thể xảy ra. Quan sát đầu tiên là :MSW({c},{a,b,e})={b,c}

  • Chúng tôi muốn tính toán MSW({c},{a,b,e})
  • Chọn X=c
  • Hãy B=MSW(,{a,b,e})={a,b,e}
  • Quan sát rằng XB
  • Vì vậy, hãy là một cơ sở B '{ X } = { một , b , c , đ }BB{X}={a,b,c,e}
  • Quan sát rằng B={b,c}
  • Trả về , đó là { b , c }MSW({c},{b,c}){b,c}

Bây giờ hãy xem xét .MSW({c,d},{a,b,e})

  • Chúng tôi muốn tính MSW({c,d},{a,b,e})
  • Chọn X=d
  • Đặt B=MSW({c},{a,b,e})={b,c}
  • Quan sát rằng XB
  • Vì vậy, hãy là một cơ sở B '{ X } = { b , c , d }BB{X}={b,c,d}
  • Quan sát rằng B={c,d}
  • Trả về , đó là { c , d }MSW({c,d},{c,d}){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 )( 5 , 26 ) tương ứng.)a,b,c,d,e(30,5)(30,35)(10,5)(60,26)(5,26)


Đã 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 LL
L

  1. Hãy .B
  2. Xáo trộn ngẫu nhiên.L
  3. Đối với mỗi trong L :XL
  4.   Nếu :XB
  5.     Đặt là cơ sở của B { X } .BB{X}
  6.     Quay trở lại bước 2.
  7. Return .B

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 .BB

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.


Đầu tiên, trong dòng "Đầu vào: ..." Tôi nghĩ rằng bạn muốn "(của L)" chứ không phải "(của B)". Thứ hai, khi trả về MSW (L- {X}, B '') thay vì MSW (L, B ''), cơ sở B '' của bạn được xác định là cơ sở của [B 'union {X}] vì vậy X là vẫn được đảm bảo được bảo vệ bởi MSW (L- {X}, B ''), mặc dù bạn đã xóa nó khỏi tập hợp.
JimN

Không, tôi thực sự có nghĩa là những người khác (của B), ở đó và B không nhất thiết là một tập hợp con của L trong các cuộc gọi đệ quy. Các yếu tố của BL không nhất thiết được bao phủ bởi MSW (L, B), như trong ví dụ này bl.ocks.org/robinhouston/c4c9dffbe8bd069028cad8b8760f392c trong đó B = { a , b , e } (Nhấn các nút mũi tên nhỏ để bước qua tính toán.)L={a,b,c,d}B={a,b,e}
Robin Houston

Câu trả lời:


1

XLX

MSW(L,B)XLXBBXBMSW(L,B).

In other words, your improvement to the algorithm shortcuts to step 3 in the part where X is chosen.


It is not true that BMSW(L,B) in general. Have a look at the example linked in my comment on the question.
Robin Houston

Neither is it true in general that XB, for that matter! Did you mean XB? I suspect if you try to explain your argument more rigorously, you will see that it does not work.
Robin Houston

NB. It isn’t even true in general that BMSW(L,B).
Robin Houston

I’ve added a section to the question giving a counterexample to BMSW(L,B), since several people have supposed it to be true.
Robin Houston

1
Oh, I totally missed that! B=BX. Yeah, this answer is totally wrong. Should I delete it?
Larry B.
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.