Tôi đã khám phá một vấn đề tương tự cho lớp học topo tính toán và đã có một số thành công với phương pháp được nêu bên dưới.
Trước tiên, bạn sẽ cần một hàm so sánh sẽ đánh giá chiều cao tại hai điểm đầu vào và sẽ trả lại < hoặc> (không bằng) cho bất kỳ đầu vào nào. Một cách để làm điều này là nếu các điểm có chiều cao bằng nhau, bạn sử dụng một số chỉ số dựa trên vị trí hoặc ngẫu nhiên để tìm điểm lớn hơn. Bạn có thể nghĩ về điều này như thêm một sự nhiễu loạn vô cùng tối cao.
Bây giờ, đối với mỗi điểm, bạn sẽ so sánh chiều cao ở tất cả các hàng xóm xung quanh (sẽ có 8 người hàng xóm trên lưới hình chữ nhật 2D). Liên kết thấp hơn cho một điểm sẽ là tập hợp của tất cả các nước láng giềng có chiều cao nhỏ hơn điểm.
Nếu tất cả các giá trị lân cận nằm trong liên kết thấp hơn, bạn đang ở mức tối đa địa phương. Nếu không có điểm nào trong liên kết thấp hơn bạn đang ở mức tối thiểu địa phương. Nếu không, nếu liên kết thấp hơn là một bộ kết nối đơn, bạn đang ở một điểm thường xuyên trên một sườn dốc. Nhưng nếu liên kết thấp hơn là hai bộ chưa kết nối, bạn đang ở yên.
Trong 2D, bạn có thể xây dựng danh sách 8 điểm lân cận theo thứ tự tuần hoàn xung quanh điểm bạn đang kiểm tra. Bạn chỉ định giá trị +/- 1 cho mỗi người hàng xóm tùy thuộc vào hàm so sánh của bạn. Sau đó, bạn có thể duyệt qua danh sách đó (nhớ so sánh hai điểm kết thúc) và đếm số lần dấu hiệu thay đổi để xác định số lượng thành phần được kết nối trong liên kết thấp hơn.
Xác định bộ đệm nào là "quan trọng" là phân tích khó hơn. Bạn có thể xem xét điều này: http://www.cs.jhu.edu/~misha/ReadingSeminar/Papers/Gyulassy08.pdf để được hướng dẫn.
-Michael
Nguồn
2013-05-02 19:32:57