btvn.vn
Tìm kiếm Đăng nhập

Xác định rõ bài toán tìm kiếm

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Trước khi chọn thuật toán

Giả sử cửa hàng học cụ hư cấu lưu mã hộp trong dãy `[14, 8, 21, 8, 5]` và cần tìm mã `8`. **Miền dữ liệu** là năm mã đang có; **điều kiện khớp** là giá trị bằng 8. Nếu yêu cầu “tìm một hộp”, kết quả có thể là chỉ số 1. Nếu yêu cầu “tìm mọi hộp”, phải trả cả chỉ số 1 và 3. Nếu mã cần tìm không có, chương trình phải có kết quả báo không tìm thấy. Hai yêu cầu cho đầu ra khác nhau dù cùng dữ liệu. Trong các bài toán khác, miền tìm kiếm có thể là tệp trên một thư mục, bản ghi trong CSDL hay các vị trí trên bản đồ. Tiêu chí cũng có thể là tên bằng một chuỗi, điểm vượt ngưỡng hoặc đường đi thỏa điều kiện. Thuật toán phù hợp phụ thuộc cấu trúc miền dữ liệu và mục tiêu cụ thể; phần tiếp theo xét dãy có chỉ số để tập trung vào hai cách tìm.

Quy ước kết quả trong chương này

Với hàm tìm **một** phần tử của dãy Python, dùng chỉ số `0..len(a)-1` khi thấy và `-1` khi không thấy, theo SGK. Với hàm tìm **tất cả**, trả về một danh sách chỉ số; danh sách rỗng `[]` nghĩa là không có vị trí nào. Không dùng `0` làm dấu hiệu không thấy, vì 0 là chỉ số hợp lệ của phần tử đầu.

Bài luyện

Trong dãy `[14, 8, 21, 8, 5]`, nếu yêu cầu tìm **mọi** vị trí của mã 8 theo chỉ số Python, kết quả nào đúng?
Chọn một đáp án

Bài luyện

Muốn tìm một mã hộp, phát biểu nào xác định đủ bài toán tìm kiếm?
Chọn một đáp án

Bài luyện

Vì sao không dùng chỉ số 0 làm dấu hiệu “không tìm thấy”?
Chọn một đáp án

Đang học