Bài giảng Cấu trúc dữ liệu và giải thuật: Hàng đợi ưu tiên - Bùi Tiến Lên

24 113 1
Bài giảng Cấu trúc dữ liệu và giải thuật: Hàng đợi ưu tiên - Bùi Tiến Lên

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Cấu trúc dữ liệu và giải thuật: Hàng đợi ưu tiên trình bày các định nghĩa về hàng đợi ưu tiên, cài đặt hàng đợi ưu tiên, minh họa thao tác thêm phần tử, thao tác thêm phần tử,... Mời các bạn cùng tham khảo nội dung chi tiết.

CuuDuongThanCong.com HÀNG ĐỢI ƯU TIÊN Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Dẫn nhập Một số ứng dụng kiểu hàng đợi thông thường giải Sắp hàng mua vé: thường ưu tiên cho người già, phụ nữ có thai, người tàn tật Trạm thu phí: thường ưu tiên cứu thương, xe cứu hỏa CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Hàng đợi ưu tiên Định nghĩa Hàng đợi ưu tiên (priority queue) hàng đợi phần tử gắn với số gọi độ ưu tiên Độ ưu tiên ứng dụng xác định Việc lấy phần tử khỏi hàng đợi dựa độ ưu tiên quy tắc FIFO Nghĩa phần tử có độ ưu tiên cao lấy trước Trong trường hợp có nhiều phần tử có độ ưu tiên sử dụng quy tắc FIFO CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Các thao tác hàng đợi ưu tiên Các thao tác hàng đợi ưu tiên giống với hàng đợi bình thường Khởi tạo hàng đợi rỗng Xóa hàng đợi Thêm phần tử vào hàng đợi (enqueue) Lấy phần tử đỉnh khỏi hàng đợi (dequeue) Lấy thông tin phần tử đỉnh hàng đợi (top) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cài đặt hàng đợi ưu tiên Hàng đợi ưu tiên cài đặt Bằng mảng Bằng heap CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu heap Định nghĩa Cấu trúc liệu heap (heap tree) có thứ tự phận Trong phạm vi mơn học xét heap nhị phân Cây max heap nhị phân nhị phân hoàn chỉnh cho giá trị khóa nút p khơng nhỏ khóa trái phải ∀q ∈ {p → left, p → right} : q → key ≤ p → key (1) Cây heap nhị phân nhị phân hồn chỉnh cho giá trị khóa nút p khơng lớn khóa trái phải CuuDuongThanCong.com Spring 2017 ∀q ∈ {p → left, p → right} : q → key ≥ p → key https://fb.com/tailieudientucntt Data structure & Algorithm (2) Minh họa heap CuuDuongThanCong.com Spring 2017 t0 t1 t3 t7 t2 t4 t5 t6 t8 Hình 1: Thứ tự phần tử heap https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa heap (cont.) CuuDuongThanCong.com Spring 2017 50 19 17 36 25 Hình 2: Cây max heap https://fb.com/tailieudientucntt Data structure & Algorithm Thao tác thêm phần tử Thao tác thêm phần tử vào hàng đợi ưu tiên cài đặt max heap sau Chèn phần tử với độ ưu tiên (khóa) v vào cuối heap Nếu độ ưu tiên (khóa) cao nút cha hốn đổi hai nút với lặp lại CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa thao tác thêm phần tử Chèn phần tử có độ ưu tiên 66 vào hàng đợi ưu tiên biểu diễn max heap CuuDuongThanCong.com Spring 2017 68 65 32 31 20 26 19 24 21 13 Hình 3: Cây max heap https://fb.com/tailieudientucntt Data structure & Algorithm 10 Minh họa thao tác thêm phần tử (cont.) CuuDuongThanCong.com Spring 2017 68 65 32 31 20 26 19 13 24 21 66 Hình 4: Thêm phần tử 66 https://fb.com/tailieudientucntt Data structure & Algorithm 11 Minh họa thao tác thêm phần tử (cont.) CuuDuongThanCong.com Spring 2017 68 65 32 31 20 66 19 13 24 21 26 Hình 5: 66 hốn đổi với 26 https://fb.com/tailieudientucntt Data structure & Algorithm 12 Minh họa thao tác thêm phần tử (cont.) CuuDuongThanCong.com Spring 2017 68 66 32 31 20 65 19 13 24 21 26 Hình 6: Hoán đổi 66 với 65 https://fb.com/tailieudientucntt Data structure & Algorithm 13 Thao tác lấy phần tử Thao tác lấy phần tử khỏi hàng đợi cài đặt heap sau Xóa phần tử gốc heap khỏi Thay phần tử gốc phần tử cuối Nếu độ ưu tiên hay thấp nút hốn đổi với nút có độ ưu tiên cao CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 14 Minh họa thao tác lấy phần tử Lấy phần tử gốc có độ ưu tiên cao 68 khỏi max heap CuuDuongThanCong.com Spring 2017 68 65 32 31 20 26 19 24 21 13 Hình 7: Cây max heap https://fb.com/tailieudientucntt Data structure & Algorithm 15 Minh họa thao tác lấy phần tử (cont.) CuuDuongThanCong.com Spring 2017 xx 65 32 31 20 26 19 24 21 13 Hình 8: Xóa phần tử 68 https://fb.com/tailieudientucntt Data structure & Algorithm 16 Minh họa thao tác lấy phần tử (cont.) CuuDuongThanCong.com Spring 2017 13 65 31 20 32 26 24 21 19 Hình 9: Thay phần tử 13 https://fb.com/tailieudientucntt Data structure & Algorithm 17 Minh họa thao tác lấy phần tử (cont.) CuuDuongThanCong.com Spring 2017 65 13 31 20 32 26 24 21 19 Hình 10: Hốn đổi 13 65 https://fb.com/tailieudientucntt Data structure & Algorithm 18 Minh họa thao tác lấy phần tử (cont.) CuuDuongThanCong.com Spring 2017 65 31 13 20 32 26 24 21 19 Hình 11: Hoán đổi 13 31 https://fb.com/tailieudientucntt Data structure & Algorithm 19 Minh họa thao tác lấy phần tử (cont.) CuuDuongThanCong.com Spring 2017 65 31 20 13 32 26 24 21 19 Hình 12: Hốn đổi 13 20 https://fb.com/tailieudientucntt Data structure & Algorithm 20 Bài luyện tập Ví dụ Hãy xây dựng heap từ dãy {5, 1, 4, 3, 2, 8, 9, 7, 16, 11, 12, 15} Xóa nút 8, 16 Thêm nút 6, 17 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 21 Đánh giá hàng đợi ưu tiên Cài đặt mảng Phân tích chi phí thực theo n (số lượng phần tử) tìm phần tử thêm phần tử xóa phần tử CuuDuongThanCong.com Spring 2017 xấu ? ? ? trung bình ? ? ? https://fb.com/tailieudientucntt Data structure & Algorithm tốt ? ? ? 22 Đánh giá hàng đợi ưu tiên (cont.) Cài đặt heap Phân tích chi phí thực theo n (số lượng nút) tìm phần tử thêm phần tử xóa phần tử CuuDuongThanCong.com Spring 2017 xấu ? ? ? trung bình ? ? ? https://fb.com/tailieudientucntt Data structure & Algorithm tốt ? ? ? 23 Tài liệu tham khảo CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 24 ... thao tác hàng đợi ưu tiên Các thao tác hàng đợi ưu tiên giống với hàng đợi bình thường Khởi tạo hàng đợi rỗng Xóa hàng đợi Thêm phần tử vào hàng đợi (enqueue) Lấy phần tử đỉnh khỏi hàng đợi (dequeue)... Algorithm Hàng đợi ưu tiên Định nghĩa Hàng đợi ưu tiên (priority queue) hàng đợi phần tử gắn với số gọi độ ưu tiên Độ ưu tiên ứng dụng xác định Việc lấy phần tử khỏi hàng đợi dựa độ ưu tiên quy... thông tin phần tử đỉnh hàng đợi (top) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cài đặt hàng đợi ưu tiên Hàng đợi ưu tiên cài đặt Bằng mảng

Ngày đăng: 11/01/2020, 16:37

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan