Cấu trúc Bucket và Cấu trúc Unvisited Data

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 66 - 68)

4.2.5.1. Cấu trúc Bucket

Thuật toán Thorup cơ bản dựa trên việc thăm nút của cây thành phần T theo thứ tự nhƣ đã nêu ở trên. Bất cứ khi nào thành phần

đƣợc thăm, tất cả các con của

tại T sẽ đƣợc thăm. Cấu trúc Bucket tƣơng tự nhƣ thuật toán Dial Dijkstra.

Tại mỗi cây con

khi đƣợc thăm sẽ tiến hành tạo bucket B

với độ rộng bucket đƣợc tính bằng DIAM

+ 1 với DIAM là tổng các cạnh trong . Gọi S là tập các đỉnh đã đƣợc thăm, ký hiệu rằng

là x>>i, là . Chúng ta sẽ đƣa con của thành phần dựa theo (với ) , chèn vào bucket B( .

Vì vậy, chúng ta cần 2 thuộc tính cho tất cả các thành phần: Giá trị

luôn luôn nhỏ hơn hoặc bằng chỉ mục nhỏ nhất của bucket không rỗng của . Đúng hơn bằng . Số lƣợng bucket B

đã nêu ở trên. Thorup đã chứng minh tổng số bucket cần thiết không vƣợt quá 8n.

67

Tập các đỉnh chƣa thăm đƣợc sử dụng để duy trì khoảng cách giữa từng đỉnh và thành phần hay tập các đỉnh chƣa thăm đại diện cho rừng con của cây phân tầng T (Ký hiệu U) . Nó duy trì sự thay đổi giá trị

cho việc thay đổi giá trị của danh sách các gốc

trong phân tầng T trong thời gian tuyến tính.

là gốc của thành phầnn trong U nếu

là con chƣa thăm của thành phần đã đƣợc thăm trong T (Khi tất cả các gốc chƣa đƣợc thăm

).

Cấu trúc của U hỗ trợ hai hàm khấu hao thời gian liên tục: 1. Cập nhật

) bất cứ khi nào

giảm giá trị với các đỉnh

với gốc chƣa thăm 2. Đƣa tất cả con

của trong cây phân tầng T vào các gốc U và tính

cho tất cả bất cứ khi nào gốc đƣợc thăm.

Giả sử lấy là danh sách các đỉnh đƣợc sắp xếp theo thứ tự là con của các thành phần trong cây T . Tất cả các đỉnh chƣa thăm của các gốc

trong U đều là các lá dƣới

,có dạng thuộc và nhiệm vụ duy trì quản lý giá trị nhỏ nhất

) với

. Chúng ta thực hiện giải pháp nhƣ sau: lấy

dƣới dạng một đoạn kết nối đơn. Với , . 1. Mỗi lần giảm

với đỉnh với gốc chƣa thăm , chúng tôi giảm giá trị tối thiểu của phân khúc chứa .

2. Bất cứ khi nào xóa gốc chƣa thăm trong U, tiến hành chia phân đoạn ra thành từng phân khúc của cây thành phần con. Tính toán lại giá trị nhỏ nhất của tất cả các phân khúc trừ phân khúc mới kế thừa giá trị nhỏ nhất ban đầu.

Theo lý thuyết, thuật toán Thorup duy trì khoảng cách trong thời gian tuyến tính bằng cách sử dụng đống atomic [10] để xây dựng cấu trúc của tập các đỉnh chƣa thăm thời gian khấu hao sẽ bằng

nhƣng đống atomic [10] để thực hiện thời gian tuyến tính số lƣợng đỉnh phải lớn hơn (không khả thi

68

với máy tính hiện nay). Thorup đã thay thế bằng cách sử dụng thuật toán split-

findmin của Gabow[13]. Cho

, để chia phân đoạn thành từng phần chúng tôi cần ( -1)/2. Với

, chúng tôi có (

và có lần giảm ứng với số cạnh của đồ thị. Thuật toán split-findmin của Gabow xử lý tính toán tăng lên

, với

là tổng trọng số các cạnh trong cây khung nhỏ nhất và là giá trị hàm ngƣợc Ackerman với độ tăng trƣởng chậm. Nếu số lƣợng đỉnh thấp hơn 1080

,

sẽ bằng hoặc nhỏ hơn 4.

Thuật toán split-findmin tách danh sách các phần tử thành nút khác nhau. Các nút có khóa là khóa nhỏ nhất của các phần tử bên trong nút. Thorup sử dụng

split-findmin để duy trì khoảng cách của các cây thành phần bằng cách ánh xạ tất

cả các đỉnh của cây thành phần từ mức 0 vào cấu trúc của split-findmin. Ví dụ minh họa nhƣ hình 4.8 cứ 4 phần tử sẽ tập hợp lại thành một nút đƣợc gọi là

super element. Cứ 4 super element ở cùng mức sẽ hợp thành nút cha super

element. Tuy nhiên vẫn có những phần tử super element không đƣợc sử dụng để

hợp thành nút. Tất cả các phần tử còn lại của từng mức không đủ để tạo thành nút

super element đƣợc chèn vào danh sách singleton element. Các singleton element

sẽ không đƣợc sử dụng để tạo thêm super element. Khóa của singleton element

super element bằng khóa nhỏ nhất của các phần duy trì bởi chúng.

Hình 4. 8.Mô tả về cấu trúc split - findmin: 1 là danh sách các phần tử; 2 là các singleton element; 3 là super element.

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 66 - 68)

Tải bản đầy đủ (PDF)

(98 trang)