Cho một quả bóng chuyển động trong một lưới, quả bóng nào chạm tới?


7

Bạn được cung cấp một lưới mxn. Một quả bóng không thứ nguyên được đặt ở trung tâm của một trong những ô vuông và bắt đầu di chuyển theo một trong 4 hướng: đông bắc, tây bắc, đông nam hoặc tây nam. Quả bóng tiếp tục di chuyển cho đến khi nó chạm tới mép của bảng tại điểm đó, nó nảy trở lại theo quy luật Vật lý.

Ví dụ trong đó bóng không đạt đến tất cả các hình vuông.

Cho m, n, vị trí và hướng ban đầu (NE / NW / SE / SW) của quả bóng, có thể xác định liệu bóng có bao giờ chạm tới một ô vuông đích xác định (x0, y0) không?

Có thể trả lời câu hỏi bằng cách triệt truy tìm sự chuyển động của quả bóng, nhưng có bất kỳ dễ dàng hơn thay thế hiệu quả hơn? Bất kỳ con trỏ đến văn học liên quan cũng sẽ được nhiều đánh giá cao.


4
Phương pháp tiêu chuẩn để tiếp cận các loại vấn đề này là mở rộng lưới vô hạn. Quả bóng nảy ra khỏi các bức tường thực sự giống như quả bóng tiếp tục theo một đường thẳng thành một phiên bản được nhân đôi của cùng một lưới.
Tom van der Zanden 4/11/2015

Câu trả lời:


6

Tràn đầy dấu vết chuyển động của quả bóng là dễ lập trình nhất, và cũng không quá tệ trên cơ sở hiệu quả. Bạn nên giữ một bảng băm của tất cả các trạng thái của quả bóng đã được nhìn thấy trước đó (trong đó trạng thái của quả bóng là hình vuông lưới mà nó đang ở và hướng mà nó đang hướng tới); nếu bạn thấy nó lặp lại trạng thái trong quá khứ, thì bạn biết nó sẽ lặp lại mãi mãi và bạn có thể ngừng truy tìm chuyển động thêm nữa. Với cách này, việc theo dõi chuyển động của quả bóng sẽ mất nhiều nhấtO(mn) thời gian trong trường hợp xấu nhất

Điều này có thể được tăng tốc bằng cách sử dụng một ít đại số đơn giản để tính toán "với trạng thái hiện tại, bức tường tiếp theo quả bóng sẽ chạm vào là gì?" trongO(1) thời gian - điều đó sẽ nhanh hơn, nhưng không dễ dàng hơn.


Có một giải pháp thanh lịch và hiệu quả hơn, dựa trên lý thuyết số và dựa trên kỹ thuật mở rộng lưới vô hạn của Tom Van der Zanden .

Hãy tưởng tượng một vũ trụ song song nơi quả bóng di chuyển trên một đường thẳng trong một lưới vô hạn; như Tom nói, bật ra khỏi các bức tường trong vũ trụ của chúng ta tương đương với việc tiếp tục đi theo một đường thẳng trong vũ trụ song song. Đây là cái nhìn sâu sắc đầu tiên chúng ta sẽ sử dụng.

Chúng ta hãy tìm ra ý nghĩa của cái nhìn sâu sắc này. Trong vũ trụ của chúng ta, quả bóng bắt đầu ở một số tọa độ ban đầu(x0,y0), di chuyển NE và chúng tôi muốn biết liệu có bao giờ đạt được tọa độ không (x,y). Điều này có ý nghĩa gì trong vũ trụ vô tận? Chà, tưởng tượng việc đặt mìn ở tọa độ(x,y), (x,2ny), (x,y+2n), (x,4ny), ... (2mx,y), (2mx,2ny), ... - đặc biệt, tại tọa độ (2im±x,2jn±y) Ở đâu i,jphạm vi trên tất cả các số nguyên. Sau đó, tôi tuyên bố rằng quả bóng cuối cùng sẽ đạt được tọa độ(x,y)trong vũ trụ của chúng ta nếu và chỉ khi quả bóng cuối cùng sẽ chạm vào một quả mìn trong vũ trụ song song. Vì vậy, vấn đề của chúng ta giảm xuống để hỏi: trong vũ trụ song song, quả bóng có bao giờ chạm vào mỏ không?

Cái nhìn sâu sắc thứ hai là chúng ta có thể sử dụng lý thuyết số để trả lời câu hỏi đó. Đặc biệt, saut đơn vị thời gian, quả bóng sẽ ở vị trí (x0+t,y0+t)trong vũ trụ song song. Chúng tôi muốn biết liệu có tồn tại bất kỳ số nguyên nào khôngt,i,j như vậy mà x0+t=2im±xy0+t=2jn±y. Sắp xếp lại các phương trình này và sử dụng ngôn ngữ của số học mô-đun, chúng tôi đang hỏi liệu có tồn tại một số nguyên khôngt sao cho cả hai phương trình sau đều giữ:

t±xx0(mod2m),t±yy0(mod2n).

Bây giờ chúng ta đã sẵn sàng áp dụng lý thuyết số. Đặc biệt, điều này được thiết lập hoàn hảo để áp dụng định lý còn lại của Trung Quốc . Định nghĩag=2gcd(m,n). Khi đó hệ phương trình trên có một nghiệm trong các số nguyên khi và chỉ khi

±xx0±yy0(modg).

Nói cách khác, chúng ta nên kiểm tra bốn điều kiện sau:

  • xx0yy0(modg)
  • xx0yy0(modg)
  • xx0yy0(modg)
  • xx0yy0(modg)

Nếu bất kỳ điều kiện nào trong bốn điều kiện đó xảy ra, thì có một giải pháp cho hệ phương trình trên và do đó trong vũ trụ song song, quả bóng sẽ chạm vào một số mỏ; nếu không có điều kiện nào trong bốn điều kiện đó, thì quả bóng sẽ không bao giờ chạm vào bất kỳ quả nào. (4 điều kiện này là các điều kiện có liên quan nếu bóng ban đầu di chuyển NE. Các hướng khác có thể được xử lý đối xứng với một bộ 4 điều kiện tương tự.)

Đọc lại về vấn đề ban đầu, chúng tôi có được một giải pháp cho vấn đề ban đầu dễ thực hiện và chạy trong thời gian . Chúng tôi tính và kiểm tra bốn điều kiện trong danh sách dấu đầu dòng ở trên. Nếu bất kỳ điều kiện nào trong bốn điều kiện giữ, thì câu trả lời là có: bóng cuối cùng sẽ đạt đến điểm . Nếu không có một trong bốn điều kiện giữ, thì câu trả lời là không: quả bóng sẽ không bao giờ đạt đến điểm .O(1)g=2gcd(m,n)(x,y)(x,y)

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.