GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] TÌM KIẾM /XX 12/3/15 Teacher: Nguyễn Xuân Vinh Email: nguyenxuanvinh@hcmuaf.edu.vn GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Định nghĩa Giải thuật tìm kiếm thuật toán trả kết lời giải cho toán Trong giải thuật tìm kiếm người ta thường cân nhắc lời giải tìm lời giải tối ưu Không gian tìm kiếm: tập hợp lời giải toán GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Phân loại tìm kiếm Tìm kiếm thông tin Tìm kiếm danh sách TÌm kiếm Tìm kiếm đồ thị TÌm kiếm có thông tin Tìm kiếm đối kháng Thỏa mãn ràng buộc GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Tìm kiếm thông tin Một giải thuật không tính đến chất cụ thể toán Ưu điểm: Có thể sử dụng cho nhiều toán Nhược điểm: Không gian tìm kiếm lớn Thời gian tìm kiếm lâu GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Tìm kiếm danh sách Tìm khóa tập hợp phần tử Các thuật toán: Tìm kiếm tuyến tính – linear search Tìm kiếm nhị phân – binary search Tìm kiếm nội suy – interpolation search Fibonaccian search Jump search Secant search Bảng băm – hashtable Cây tìm kiếm nhị phân cân – self-balancing binary search tree GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Tìm kiếm tuyến tính – linear search Ý tưởng thuật toán: Thuật toán tiến hành kiểm tra phần tử danh sách theo thứ tự danh sách Ưu điểm: Đơn giản, dễ cài đặt Có thể áp dụng cho danh sách mà không cần tiền xử lý Nhược điểm: Thời gian chạy lớn: Trường hợp trung bình xấu O(n) Trường hợp tốt O(1) GV: NGUYỄN XUÂN VINH Tìm kiếm tuyến tính – linear search • http://www.cosc.canterbury.ac.nz/mukundan/dsal/LSearch.html • Minh họa tìm x =10 MÔN: CẤU TRÚC DỮ LIỆU 10 Đã tìm thấy • 12 41 10 10 32 13 15 3 10 vị trí Minh họa tìm x = 25 25 12 41 10 32 13 15 3 10 Đã hết mảng /XX 12/3/15 7 GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Giải thuật Bước 1: i = //bắt đầu từ phần tử dãy Bước 2: so sánh a[i] với x, có khả năng: a[i] = x: tìm thấy, dừng thuật toán a[i] != x: sang bước Bước 3: i = i+1 //xét phần tử mảng Nếu i > n: hết mảng, không tìm thấy, dừng Ngược lại: lặp lại bước /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Cài đặt GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 10 Độ phức tạp Độ phức tạp thuật toán số lần thực phép so sánh Mỗi bước vòng lặp cần phép so sánh: Đã hết danh sách chưa Có phần tử cần tìm không Do bước thứ i có 2i phép so sánh Trong trường hợp xấu ta có 2n phép so sánh độ phức tạp O(n) 99 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp trộn – merge sort GV: NGUYỄN XUÂN VINH Sắp xếp trộn – merge sort 100 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU • Độ phức tạp thuật toán: Độ phức tạp Tối thiểu Trung bình Tối đại O(nlogn) O(nlogn) O(nlogn) 101 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp trộn – merge sort 102 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp trộn – merge sort GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 103 Sắp xếp vun đống – heap sort Đống: heap nhị phân hoàn chỉnh có tính chất khóa nút cha lớn khóa nút GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 104 Sắp xếp vun đống – heap sort Chèn phần tử vào heap có sẵn GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 105 Sắp xếp vun đống – heap sort Tạo heap từ dãy cho trước Tạo heap với phần tử tiến hành chèn phần tử lại vào heap GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 106 Sắp xếp vun đống – heap sort Xóa phần tử gốc khỏi heap: GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 107 Sắp xếp vun đống – heap sort Ý tưởng: thực việc xếp thông qua việc tạo heap Tạo heap với phần tử cần xếp nút cha lớn Sắp xếp dãy dựa heap tạo Nút gốc đưa cuối danh sách Chuyển vừa xóa nút gốc heap, tiếp tục việc tạo heap xếp nút heap 108 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp vun đống – heap sort GV: NGUYỄN XUÂN VINH Sắp xếp vun đống – heap sort • Độ phức tạp thuật toán: 109 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU – Heap hoàn chỉnh, có N nút chiều cao log(n)+1 nên độ phức tạp O(nlogn) Độ phức tạp Tối thiểu Trung bình Tối đại O(nlogn) O(nlogn) O(nlogn) 110 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp vun đống – heap sort 111 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Sắp xếp vun đống – heap sort 112 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH 113 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH HỎI ĐÁP [...]... Bước 3: left r hay m ... /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Cài đặt 18 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH So sánh TKTT & TKNP GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX... 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU nước tốt trò chơi tổng không GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] SẮP XẾP 39 /XX 12/3/15 Teacher: Nguyễn Xuân Vinh Email:... GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX 13 Tìm kiếm nhị phân – binary search http://www.cosc.canterbury.ac.nz/mukundan/dsal/BSearch.html GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU