Đống nhị phân

Một phần của tài liệu Khảo sát thực nghiệm các thuật toán tìm đường đi ngắn nhất và ứng dụng (Trang 40 - 41)

Đống biểu diễn dƣới dạng cây nhị phân hoàn chỉnh tất cả các mức đều đƣợc điền các nút đầy đủ, ngoại trừ một vài trƣờng hợp các mức ở dƣới đƣợc điền từ trái sang phải(có thể chƣa lấp đầy). Độ sâu nhất có thể của cây sẽ là

.

Thứ tự sắp xếp:

- Đống nhỏ nhất (Min Heap): Nếu giá trị nút cha ≤ nút con, nút gốc là nút có giá trị nhỏ nhất.

- Đống lớn nhất (Max Heap): Nếu giá trị nút cha ≥ nút con, nút gốc là nút có giá trị lớn nhất.

Việc hỗ trợ cho các thuật toán tìm đƣờng, các phép toán cơ bản chính của Đống đƣợc sử dụng bao gồm :

Insert: Thêm phần tử x vào Đống nhị phân bằng cách thêm phần tử vào nút mới ở cuối cây tính từ trái sang. So sánh giá trị và hoán đổi vị trí của nó với nút cha mẹ cho đến khi Đống đƣợc sắp xếp theo đúng thứ tự.

Tiến trình thực hiện qua hai bƣớc: 1. Kiểm soát hình dạng của cây. 2. Thiết lập lại trật tự sắp xếp của cây.

DecreaseKey

Thực hiện việc cập nhật giá trị hoặc khóa của nút x đƣợc chọn. Việc thực hiện tiến hành nhƣ sau: Tìm nút x, cập nhật giá trị của nút và tiến hành sắp xếp lại thứ tự của Đống Min tƣơng tự nhƣ Insert.

41

ExtractMin (Delete Min)

Loại bỏ nút x có giá trị nhỏ nhất trong Đống Min. Chúng ta có thể dễ dàng tìm thấy nút x có giá trị nhỏ nhất đó là nút gốc trong Đống Min với thời gian chạy là O (1). Bằng cách hoán đổi giá trị của nút gốc và nút cuối cùng. Loại bỏ nút cuối cùng và sắp xếp lại trật tự cây bằng cách hoán đổi giá trị của nút với các con của nó.

Thời gian chạy của các phép toán

Insert DecreaseKey ExtractMin (Delete Min)

Bảng 3.2. Thời gian chạy của đống nhị phân.

Một phần của tài liệu Khảo sát thực nghiệm các thuật toán tìm đường đi ngắn nhất và ứng dụng (Trang 40 - 41)