Giả sử là cố định (như cả hai bài giảng được liên kết đều làm), thì các lựa chọn thuật toán của bạn sẽ xác định xem tính toán của bạn có thời gian chạy hay thời gian chạy .O ( n d + k n ) O ( n d k )kÔ ( n d+ k n )Ô ( n dk )
Trước tiên, hãy xem xét thuật toán thời gian chạy :Ô ( n d+ k n )
- Khởi tạo select_i cho tất cả các quan sát trong tập huấn luyệnis e l e c t e dTôi= 0Tôi
- Đối với mỗi tập huấn quan sát , tính , khoảng cách từ quan sát mới đến tập quan sát tậpd i s t i iTôidtôi là tTôiTôi
- Đối với đến : Lặp qua tất cả các quan sát tập huấn luyện, chọn chỉ số có giá trị nhỏ nhất và được . Chọn quan sát này bằng cách đặt .j = 1kTôidtôi là tTôis e l e c t e dTôi= 0s e l e c t e dTôi= 1
- Trả về các chỉ số đã chọnk
Mỗi tính toán khoảng cách yêu cầu thời gian chạy , vì vậy bước thứ hai yêu cầu thời gian chạy . Đối với mỗi lần lặp trong bước thứ ba, chúng tôi thực hiện công việc bằng cách lặp qua các quan sát tập huấn luyện, do đó, tổng thể bước yêu cầu công việc . Các bước đầu tiên và thứ tư chỉ yêu cầu hoạt động, vì vậy chúng tôi nhận được thời gian chạy .Ô ( d)Ô ( n d)O ( n )Ô ( n k )O ( n )Ô ( n d+ kn )
Bây giờ, hãy xem xét thuật toán thời gian chạy :Ô ( n dk)
- Khởi tạo cho tất cả các quan sát i trong tập huấn luyệns e l ec t e dTôi= 0Tôi
- Với đến k : Lặp lại tất cả các quan sát tập huấn luyện và tính khoảng cách d giữa quan sát tập huấn đã chọn và quan sát mới. Chọn chỉ số i có giá trị d nhỏ nhất mà s e l e c t e d i = 0 . Chọn quan sát này bằng cách đặt s e l e c t e d i = 1 .j = 1kdTôids e l e c t e dTôi= 0s e l e c t e dTôi= 1
- Trả về các chỉ số đã chọnk
Đối với mỗi lần lặp trong bước thứ hai, chúng tôi tính khoảng cách giữa quan sát mới và mỗi lần quan sát tập huấn luyện, yêu cầu làm việc cho một lần lặp và do đó O ( n d k ) làm việc tổng thể.Ô ( n d)Ô ( n dk )
Sự khác biệt giữa hai thuật toán là tiền thuật toán đầu tiên và lưu trữ khoảng cách (yêu cầu bộ nhớ phụ ), trong khi thuật toán thứ hai thì không. Tuy nhiên, do chúng tôi đã lưu trữ toàn bộ tập huấn luyện, yêu cầu bộ nhớ O ( n d ) , cũng như vectơ s e l e c t e d , yêu cầu lưu trữ O ( n ) , việc lưu trữ hai thuật toán là không có triệu chứng tương tự. Kết quả là thời gian chạy tiệm cận tốt hơn cho k > 1 làm cho thuật toán đầu tiên hấp dẫn hơn.Ô ( n )Ô ( n d)s e l e c t e dÔ ( n )k > 1
Điều đáng chú ý là có thể có được thời gian chạy bằng cách sử dụng một cải tiến thuật toán:Ô ( n d)
- Đối với mỗi tập huấn quan sát , hãy tính d i s t i , khoảng cách từ quan sát mới đến tập quan sát tập iTôidtôi là tTôiTôi
- Chạy thuật toán quickselect để tính khoảng cách nhỏ nhất trong thời gian chạy O ( n )kt hÔ ( n )
- Trả lại tất cả các chỉ số không lớn hơn so với tính toán khoảng cách nhỏ nhấtkt h
Cách tiếp cận này lợi dụng thực tế là các cách tiếp cận hiệu quả tồn tại để tìm giá trị nhỏ nhất trong một mảng chưa được sắp xếp.kt h
quickselect
.