Dựa trên các kết quả thu được, chúng ta có thể rút ra kết luận, tùy thuộc vào từng bộ dữ liệu mà quá trình song song hóa có hiệu quả hay không. Bộ dữ liệu Sigmod có số lượng các đỉnh có bậc trong và bậc ngoài lớn. Nói cách khác, số đỉnh tập trung đến, hoặc tập trung đi từ một vài đỉnh, không phân bố đều trên cả đồ thị. Hệ quả là số lượng đỉnh treo rất nhiều. Do đó, truy vấn tìm đường ngắn nhất sẽ thực thi rất nhanh. Khi đó, chi phí cho việc quản lý nhiều luồng sẽ không bù lại được chi phí thi hành song song hóa. Bởi vậy, trong trường hợp này số lượng luồng ít sẽ cho kết quả tốt.
Ngược lại, hai bộ dữ liệu LiveJournal và Pokec có quy mô dữ liệu đồ sộ hơn rất nhiều lần so với bộ dữ liệu Sigmod (gấp khoảng 25 và 10 lần), và có tỉ lệ đỉnh/cạnh rất lớn (3/4 và 1/2), kết hợp với các cạnh phân bố đều hơn, khi đó, quá trình song song hóa mới thực sự có tác dụng. Tuy nhiên, việc tăng số lượng luồng chỉ lên đến một mức nhất định. Quá giới hạn này, chương trình sẽ gặp phải vấn đề chi phí quản lý luồng đã đề cập ở trên. Vì vậy, với mỗi bộ dữ liệu, chúng ta phải dựa vào thực tế để tìm ra được ngưỡng luồng đạt hiệu quả cao nhất.
3.3. Tổng kết chương
Chương 3 đã trình bày chi tiết phương án cài đặt dựa trên các phân tích ở chương 2. Bên cạnh đó, luận văn cũng so sánh kết quả thực nghiệm với hai thư viện NetworkX và Snap, cũng như so sánh cụ thể hơn với bốn đội đã đạt kết quả tốt nhất trong cuộc thi lập trình ACM Sigmod 2016. Kết quả thu được cho phép kết luận phương án được ra của luận văn đạt hiệu quả tốt.
0 20000 40000 60000 80000 100000 120000 140000 1 2 4 8 16 24 32 48 Mi lli sec on ds Number of Threads LIVEJOURNAL
Kết luận chung
Các đóng góp chính
Sau một thời gian nghiên cứu và tìm hiểu đề tài, luận văn đã được hoàn thành và đạt được những nội dung chính đề ra với mục tiêu tối ưu truy vấn tìm đường ngắn nhất trên đơn đồ thị, động, có hướng, không trọng số với quy mô dữ liệu lớn. Về lý thuyết, luận văn đã trình bày một số kiến thức cơ bản về đồ thị, các dạng đồ thị cũng như ứng dụng của lý thuyết đồ thị đối với các bài toán cụ thể trong đời sống hàng ngày. Tiếp theo, luận văn trình bày bốn mô hình liên quan đến việc cài đặt đồ thị trong thực tế và phân tích ưu, nhược điểm của từng mô hình. Bên cạnh đó, luận văn trình bày về bài toán tìm đường đi ngắn nhất trong đồ thị, các thuật toán cơ bản hay được sử dụng và ứng dụng của bài toán trong thực tiễn. Kế tiếp, luận văn trình bày các công cụ mã nguồn mở, các vấn đề liên quan khi xử lý bài toán liên quan đến đồ thị, kết hợp với đánh giá về mặt thuận lợi và khó khăn khi áp dụng với đơn đồ thị, động, có hướng, không trọng số với quy mô dữ liệu lớn.
Về thực nghiệm, luận văn đã đưa ra các phương pháp để cải thiện quá trình tìm đường ngắn nhất, cũng như cài đặt hoàn chỉnh mã nguồn trên ngôn ngữ C. Phương pháp đã được kiểm nghiệm tại cuộc thi lập trình ACM Sigmod 2016 và cho kết quả khá khả quan. Thêm vào đó, thuật toán trong luận văn cũng được so sánh với một số bộ công cụ mã nguồn mở được cho là xử lý các bài toàn liên quan đến đồ thị tốt nhất hiện nay và với chính bốn đội xuất sắc nhất từ cuộc thi lập trình ACM Sigmod 2016 trên hai bộ dữ LiveJournal và Pokec. Kết quả cho thấy phương pháp đạt kết quả tốt dựa trên việc sử dụng cấu trúc dữ liệu phù hợp, tối ưu thuật toán duyệt đồ thị theo chiều rộng từ hai hướng, cũng như sử dụng công cụ Cilk Plus để song song hóa quá trình truy vấn.
Hướng phát triển
Dựa trên đó, hướng phát triển tiếp theo của đề tài là tối ưu hóa thuật toán, áp dụng các phương pháp khác vào quá trình tìm kiếm đường đi ngắn nhất như tính toán trước hay dự kiến đường đi ngắn nhất giữa hai đỉnh đi qua một số đỉnh trung gian nào đó. Từ đó có thể giảm được khá nhiều thời gian tính toán khi mỗi lần lại phải tính toán lại từ đầu đường đi ngắn nhất đó. Tiếp theo là có thể áp dụng các kỹ thuật này giảm tỉ lệ cache miss trong CPU cho các bài toán cần hiệu năng cao khác như xử lý giao dịch trực tuyến (Online Transaction Processing).
Danh mục công trình khoa học của tác giả
1. Phuong-Hanh DU, Hai-Dang PHAM, Ngoc-Hoa NGUYEN, "Optimizing the Shortest Path Query on Large-Scale Dynamic Directed Graph", Proceedings of the 3rd IEEE/ACM International Conference on Big Data Computing Applications and Technologies (BDCAT 2016), Shanghai, China, 2016. (Accepted).
Tài liệu tham khảo
[1]
Tiếng Việt
Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc.: Nhà xuất bản Đại học Quốc gia Hà Nội, 2006.
[2]
Tiếng Anh
Dip Sankar Banerjee, Shashank Sharma, and Kishore Kothapalli, "Work efficient parallel algorithms for large graph exploration," in 20th Annual International Conference on High Performance Computing, 2013, pp. 433 - 442.
[3] Venkatesan T. Chakaravarthy, Fabio Checconi, Fabrizio Petrini, and Yogish Sabharwal, "Scalable Single Source Shortest Path Algorithms for Massively Parallel Systems," in Parallel and Distributed Processing Symposium, 2014 IEEE 28th International, 2014, pp. 889 - 901.
[4] Cilk Plus. [Online]. https://www.cilkplus.org
[5] Stanford Large Network Dataset Collection. [Online].
http://snap.stanford.edu/data/index.html
[6] The ACM SIGMOD Programming Contest. (2016) [Online].
http://dsg.uwaterloo.ca/ sigmod16contest/
[7] Tom Cormen and Devin Balkcom. KHANACADEMY. [Online].
https://www.khanacademy.org/computing/computer-science/algorithms/
[8] Jayanta Mondal and Amol Deshpande, "Managing large dynamic graphs efficiently," in ACM SIGMOD International Conference on Management of Data, 2012, pp. 145-156.
[9] Joseph E. Gonzalez, Yucheng Low, Haijie Gu, Danny Bickson, and Carlos Guestrin, "PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs," in OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation, 2012, pp. 17-30.
[10] Joseph E. Gonzalez et al., "GraphX: Graph Processing in a Distributed Dataflow Framework," in OSDI'14 Proceedings of the 11th USENIX conference on Operating Systems Design and Implementation, 2014, pp. 599-613.
[11] Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser, Data Structures and Algorithms in Java, 6th ed. United States of America: Wiley, 2014.
[12] Aric A. Hagberg, Daniel A. Schult, and Pieter J. Swar, "Exploring network structure, dynamics, and function using NetworkX," in Proceedings of the 7th Python in Science Conference (SciPy), 2008, pp. 11-15.
[13] Charles E. Leiserson and Tao B. Schardl, "A work-efficient parallel breadth- first search algorithm (or how to cope with the nondeterminism of reducers)," in Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures, 2010, pp. 303-314.
[14] Qingxia Li and Wenhong Wei, "A parallel single-source shortest path algorithm based on bucket structure," in 2013 25th Chinese Control and Decision Conference (CCDC), 2013, pp. 3445 - 3450.
[15] Waqas Nawaz, Kifayat-Ullah Khan, and Young-Koo Lee, "CORE Analysis for Efficient Shortest Path Traversal Queries in Social Graphs," in In Social Graphs,Big Data and Cloud Computing (BdCloud), 2014 IEEE Fourth International Conference, Sydney, 2014, pp. 363-370.
[16] NetworkX. [Online]. http://networkx.github.io
[17] Open Multi-Processing. [Online]. http://openmp.org/
[18] POSIX Threads Programming. [Online].
https://computing.llnl.gov/tutorials/pthreads/
[19] Grégoire Scano, Marie-José Huguet, and Sandra Ulrich Ngueveu, "Adaptations of k-shortest path algorithms for transportation networks," in
Industrial Engineering and Systems Management (IESM), 2015 International Conference on, 2015, pp. 663 - 669.
[20] Stanford Network Analysis Platform. [Online]. http://snap.stanford.edu
[21] Leong Hou U, Hong Jun Zhao, Man Lung Yiu, Yuhong Li, and Zhiguo Gong, "Towards Online Shortest Path Computation," IEEE Transactions on Knowledge and Data Engineering, vol. 26, no. 4, pp. 1012 - 1025, Apr. 2014.
[22] Jian Wei, Kai Chen, Yi Zhou, Qu Zhou, and Jianhua He, "Benchmarking of Distributed Computing Engines Spark and GraphLab for Big Data Analytics," in 2016 IEEE Second International Conference on Big Data Computing Service and Applications (BigDataService), 2016, pp. 10 - 13.