Ma trận chi phí căn chỉnh chuỗi thời gian Dynamic Time Warping (DTW)
Viết hàm dynamic_time_warping_distance(s1: np.ndarray, s2: np.ndarray) -> tuple[float, np.ndarray]:
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: time series, 2d arrays, dp.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu giải thuật Dynamic Time Warping (DTW) để so sánh độ tương đồng giữa 2 chuỗi thời gian có độ dài hoặc tốc độ biến thiên khác nhau.
- Tính toán ma trận khoảng cách cục bộ bằng broadcasting 2D thuần vector hóa
(s1[:, None] - s2[None, :]) ** 2. - Xây dựng bảng quy hoạch động tích lũy chi phí tối ưu (Accumulated Cost Matrix).
Mô tả bài toán
Viết hàm dynamic_time_warping_distance(s1: np.ndarray, s2: np.ndarray) -> tuple[float, np.ndarray]:
s1: Mảng 1D chuỗi thời gian thứ nhất độ dài N.s2: Mảng 1D chuỗi thời gian thứ hai độ dài M.- Kiểm tra tính hợp lệ:
- Nếu len(s1) == 0 hoặc len(s2) == 0, raise
ValueError("Chuoi thoi gian khong duoc rong"). - Tính ma trận chi phí cục bộ:
D = (s1[:, np.newaxis] - s2[np.newaxis, :])2 có kích thước (N, M).
- Bảng chi phí tích lũy
costkích thước (N, M): cost[0, 0] = D[0, 0].- Cột đầu tiên:
cost[i, 0] = cost[i - 1, 0] + D[i, 0]với i = 1, …, N-1. - Hàng đầu tiên:
cost[0, j] = cost[0, j - 1] + D[0, j]với j = 1, …, M-1. - Các ô còn lại (i ≥ 1, j ≥ 1):
cost[i, j] = D[i, j] + min(cost[i - 1, j], cost[i, j - 1], cost[i - 1, j - 1]).
- Trả về tuple
(dtw_dist, cost): dtw_dist = float(cost[N - 1, M - 1]).cost: ma trận tích lũy (N, M).
Input
- Tham số:
s1: np.ndarray,s2: np.ndarray.
Output
- Trả về:
tuple[float, np.ndarray].
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
dynamic_time_warping_distance(s1=[1.0, 2.0, 3.0], s2=[1.0, 2.0, 3.0])Output
0.0Giả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
dynamic_time_warping_distance(s1=[1.0, 2.0, 3.0], s2=[2.0, 2.0, 2.0, 3.0, 4.0])Output
2.0Giả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.
