− Ứng dụng giới thiệu cho bạn những bài hát bạn chưa nghe nhưng một người có sở thích tương tự với bạn đã nghe và thích bài hát đó. • Độ đo tương tự: số lượng nghịch đảo (inversions) g[r]
(1)Các kỹ thuật thiết kế thuật toán
Nguyễn Mạnh Hiển
(2)Nội dung
• Chia để trị
(3)Chia để trị
(4)Chia để trị
• Các bước:
− Chia toán thành số toán − Giải toán theo kiểu đệ quy
− Kết hợp lời giải toán thành lời giải tổng thể • Ví dụ, thuật toán xếp trộn gồm bước:
− Chia dãy n phần tử thành nửa, nửa có n/2 phần tử − Sắp xếp nửa dùng thuật toán xếp trộn
(5)Đếm số nghịch đảo
• Một ứng dụng âm nhạc muốn giới thiệu cho bạn hát mà bạn chưa nghe cách so sánh sở thích nghe nhạc bạn với người khác
− Bạn xếp hạng n hát
− Ứng dụng tra cứu sở liệu để tìm người có sở thích tương tự với bạn
− Ứng dụng giới thiệu cho bạn hát bạn chưa nghe người có sở thích tương tự với bạn nghe thích hát
(6)Số nghịch đảo hai xếp hạng
• Xếp hạng tôi: 1, 2, …, n
(7)• Chia: tách danh sách thành hai nửa A B
• Trị: đếm số nghịch đảo danh sách theo kiểu đệ quy • Hợp: đếm số nghịch đảo (a, b) với a A b B
(8)Đếm số nghịch đảo (a, b) với a A b B, giả sử A B xếp • Quét A B từ trái sang phải
• So sánh hai phần tử hành ai bj
• Nếu ai < bj, ai khơng đảo ngược với phần tử cịn lại B • Nếu ai > bj, bj đảo ngược với phần tử lại A
(9)Đếm số nghịch đảo: thuật toán
• Đầu vào: Danh sách L
(10)