Thuật toán tìm kiếm A* (A-Star) trên lưới tọa độ với Heuristic Manhattan
Cho một mê cung dạng ma trận grid kích thước R × C, trong đó ô có giá trị 0 là đường đi tự do và 1 là vật cản không thể đi vào.
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: dijkstra, priority queue.
Nội dung đề bài
Mục tiêu kiến thức
- Triển khai thuật toán tìm đường A* (A-Star Search).
- Kết hợp hàm chi phí thực tế g(n) và hàm đánh giá heuristic h(n) với f(n) = g(n) + h(n).
- Sử dụng hàm Heuristic khoảng cách Manhattan |r1 - r2| + |c1 - c2| cho di chuyển 4 hướng (Lên, Xuống, Trái, Phải).
Mô tả bài toán
Cho một mê cung dạng ma trận grid kích thước R × C, trong đó ô có giá trị 0 là đường đi tự do và 1 là vật cản không thể đi vào.
Viết hàm a_star_grid_path(grid: list[list[int]], start: tuple[int, int], goal: tuple[int, int]) -> tuple[int, list[tuple[int, int]] | None]:
startvàgoallà tọa độ(row, col).- Nếu
starthoặcgoalnằm ngoài mê cung hoặc nằm trúng ô vật cản (grid[r][c] == 1), raiseValueError("Toa do start hoac goal khong hop le"). - Di chuyển theo 4 hướng chính, mỗi bước đi tốn chi phí 1.
- Trả về
(min_steps, path): min_steps: số bước đi ngắn nhất từstartđếngoal. Nếustart == goal,min_steps = 0vàpath = [start].path: danh sách các tọa độ đi từstartđếngoal.- Nếu không tồn tại đường đi, trả về
(-1, None).
Input
- Tham số:
grid: list[list[int]],start: tuple[int, int],goal: tuple[int, int].
Output
- Trả về:
tuple[int, list[tuple[int, int]] | None]. - Ngoại lệ:
ValueErrorkhi tọa độ không hợp lệ hoặc trúng vật cản.
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
a_star_grid_path([[0, 0, 0], [0, 1, 0], [0, 0, 0]], [0, 0], [2, 2])Output
[4, [[0, 0], [0, 1], [0, 2], [1, 2], [2, 2]]]Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
a_star_grid_path([[0, 1], [1, 0]], [0, 0], [1, 1])Output
[-1, None]Giải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
