Nếu có 3 điểm thẳng hàng


7

Cho một tập hợp các điểm đưa ra thuật toán hiệu quả nhất để xác định xem có 3 điểm nào của tập hợp đó không.Sp1,..,p2

Vấn đề là tôi bắt đầu với định nghĩa chung nhưng tôi không thể tiếp tục thực sự giải quyết vấn đề.

Chúng ta có thể nói gì về các điểm cộng tuyến nói chung, 3 điểm là cộng tuyến nếu khoảng cách trong trường hợp khi nằm giữa và .a,b,cd(a,c)=d(a,b)+d(b,c)bac

Cách tiếp cận ngây thơ có độ phức tạp thời gian .O(n(n1)(n2))=O(n3)

Làm thế nào để giải quyết vấn đề này, bước tiếp theo nên làm gì?

Câu trả lời:


8

Một cách đơn giản là sửa điểm , tính độ dốc của đường và lưu nó vào bảng băm cho mọi điểm . Nếu có va chạm, thì chúng ta có các điểm cộng tuyến liên quan đến . Điều này sẽ mất (nếu chúng ta giả sử các thao tác bảng băm lấy ). Sau đó chúng tôi làm điều này cho mọi điểm trong thời gian .xxyyxO(n)O(1)xO(n2)

Ngoài ra nếu bạn biết về tính đối ngẫu của dòng điểm (vui lòng tham khảo nhận xét của Artium bên dưới), điều này giúp giảm việc kiểm tra giao điểm có thể có của dòng, nhưng cũng sử dụng bảng băm.n2n

Ngoài ra, nó mở cho dù điều này có thể được thực hiện trong thời gian bậc hai vì vấn đề này là 3-SUM khó, vui lòng tham khảo câu trả lời này .


Dưới đây là một lời giải thích về tính đối ngẫu dòng điểm.
Artium

Cảm ơn bạn rất nhiều vì câu trả lời đầy đủ! Artium, cảm ơn bạn đã liên kết nhị nguyên.
com

@Artium, đây là một liên kết làm việc với tính đối ngẫu dòng điểm.
Henrique Gontijo
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.