độ không quá dày
.
Ngoài ra, qua các bảng kết quả và trong quá trình thực nghiệm, chúng tôi nhận thấy giải thuật Thorup và Thorup - WeiYusi sử dụng số lƣợng bộ nhớ rất lớn (luôn ở ngƣỡng 80 -100% ). Máy tính thực nghiệm liên tục bị treo do việc sử dụng bộ nhớ quá lớn và tràn Ram khi số lƣợng đỉnh và cạnh tăng dần. Dù thuật giải Thorup - WeiYusi đã không sử dụng cấu trúc tập các đỉnh chƣa thăm U, nhƣng bộ nhớ khi sử dụng vẫn gấp đôi thuật toán Dijkstra sử dụng đống nhị phân và Dijkstra sử dụng đống Fibonacci.
5.5.2. Khả năng sử dụng lại bộ dữ liệu đã xây dựng của thuật toán Thorup và Thorup WeiYusi Thorup và Thorup WeiYusi
Dù vậy, thuật toán Thorup và Thorup - WeiYusi có một điểm đáng lƣu ý đó là việc xây dựng dữ liệu cây phân tầng sẽ đƣợc tính toán một lần và có thể sử dụng liên tục trong các lần tìm kiếm sau đó hay rất có lợi cho việc tìm kiếm lặp đi lặp lại. Nhằm chứng minh cách rõ ràng hơn trên thực nghiệm, chúng tôi lựa chọn một đồ thị trong số các bộ dữ liệu mà thuật toán Thorup và Thorup - WeiYusi có khả năng xử lý mà không bị tràn bộ nhớ cũng nhƣ số đỉnh và cạnh không quá nhỏ để tiến hành thực nghiệm điều này.
Đồ thị đƣợc chọn có = 1890815 và = 4657742 thuộc bộ dữ liệu sẵn có
DIMACS với đỉnh nguồn sẽ tăng dần từ 1 đến 100 và các thuật toán sẽ tiến hành tìm kiếm liên tục cho tới khi
.
93
Thuật toán Thời gian Min Thời gian Max Trung bình cộng Độ lệch chuẩn
DIJB 953 1312 1032.192 72.3
DIJF 1594 35610 4773.76 5290
TR 53677 672974 251504 163581
TRWY 1078 5797 1395.79 605.6
Bảng 5.R 8. Bảng kết quả thời gian tìm kiếm với đỉnh nguồn s từ 1 đến 100 của các thuật toán
Đồ thị miêu tả thời gian chạy của hai thuật toán Thorup và Thorup WeiYusi với trục Oy là trục biểu diễn thời gian và trục Ox là biểu diễn các đỉnh nguồn tăng dần.
Hình 5. 8. Đồ thị thời gian tìm kiếm với đỉnh nguồn từ 1 – 100 của thuật toán Thorup. 0 100000 200000 300000 400000 500000 600000 700000 800000 0 20 40 60 80 100 120
Thời gian tìm kiếm với đỉnh nguồn từ 1 - 100 thuật toán Thorup
94
Hình 5. 9. Đồ thị thời gian tìm kiếm với đỉnh nguồn từ 1 – 100 của thuật toán Thorup – WeiYusi.
Với kết quả có đƣợc cho thấy, việc sử dụng lại dữ liệu đã có giúp thuật toán Thorup vẫn chƣa đạt đƣợc mong muốn nhƣ ban đầu. Nhằm kiểm tra chính xác hơn chúng tôi tiến hành thực nghiệm trên một đỉnh bất kỳ việc sử dụng lại và xây dựng mới dữ liệu. Kết quả đƣợc thể hiện tại Bảng 5R9 với ô đánh dấu x là sử dụng lại dữ liệu sẵn có (Số lần chạy có thể vẫn nhỏ nên có thể chƣa phản ánh hết đƣợc sự khác biệt). Với lần đầu tiên sử dụng lại dữ liệu sẵn có sẽ tính cả thời gian xây dựng cây khung nhỏ nhất và xây dựng dữ liệu cây phân tầng.
Sử dụng lại dữ liệu Lần 1 Lần 2 Lần 3 Lần 4 Lần 5 Tổng TR 63750 70673 55969 56267 63391 310057 x 66282 58719 52610 52672 61126 291409 TRWY 5672 10313 12734 5516 10547 44782 x 5844 6687 1375 1344 1781 17031
Bảng 5.R 9. Bảng kết quả so sánh khi sử dụng lại và xây dựng lại dữ liệu của thuật toán Thorup và Thorup WeiYusi.
0 1000 2000 3000 4000 5000 6000 7000 0 20 40 60 80 100 120
Thời gian tìm kiếm với đỉnh nguồn từ 1 - 100 thuật toán Thorup
WeiYusi
95
Qua bảng kết quả, chúng tôi thấy việc sử dụng lại dữ liệu của thuật toán Thorup tuy giúp thời gian xử lý nhanh hơn nhƣng chƣa thể hiện đƣợc sự vƣợt trội so với việc xây dựng lại toàn bộ dữ liệu. Tuy vậy, điều này không xảy ra với thuật toán Thorup cải tiến của WeiYusi, độ chênh lệch thể hiện một cách rất rõ ràng.
Qua các kết quả trên, thuật toán Dijkstra sử dụng đống nhị phân vẫn là thuật toán chạy nhanh nhất, hoàn toàn vƣợt trội so với 3 thuật toán còn lại. Thuật toán Thorup - WeiYusi đứng ở vị trí thứ 2 tuy có tăng tốc xử lý hơn nhƣng thời gian vẫn chênh so với thuật toán Dijkstra sử dụng đống nhị phân. Hai vị trí còn lại là các thuật toán Dijkstra sử dụng đống Fibonacci và Thorup với thời gian xử lý gấp hơn 3 lần so với 2 thuật toán trên.