TỐI ưu hóa TRUY vấn tìm ĐƯỜNG NGẮN NHẤT TRÊN đồ THỊ ĐỘNG QUY mô lớn

26 303 0
TỐI ưu hóa TRUY vấn tìm ĐƯỜNG NGẮN NHẤT TRÊN đồ THỊ ĐỘNG QUY mô 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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM HẢI ĐĂNG TỐI ƯU HÓA TRUY VẤN TÌM ĐƯỜNG NGẮN NHẤT TRÊN ĐỒ THỊ ĐỘNG QUY LỚN Ngành: Hệ thống thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60480104 TÓM TẮT LUẬN VĂN THẠC SĨ NGÀNH HỆ THỐNG THÔNG TIN Hà Nội – 2016 Giới thiệu chung Động lực nghiên cứu Hiện nay, sống thời đại bùng nổ công nghệ công tin bùng nổ mạng xã hội Một số mạng điển mạng xã hội (Facebook, Twitter), mạng sinh học, mạng phân tán nội dung, mạng lưới giao thông, mạng thông tin… có số lượng liệu tăng nhanh chóng mặt Để giải thách thức mặt liệu lớn trên, có nhiều phương pháp tiếp cận, phương pháp tiếp cận dựa đồ thị cho trực quan phù hợp [8] Với việc sử dụng lý thuyết đồ thị, với đỉnh biểu diễn thực thể cạnh biểu diễn mối liên hệ chúng Trong đồ thị, tìm đường (ngắn nhất) vấn đề tìm kết nối hai đỉnh đồ thị đảm bảo đường ngắn dựa số yêu cầu cho trước Đây vấn đề tảng áp dụng nhiều ứng dụng thực tế tìm đường ngắn hai địa điểm sử dụng GPS hay tìm mối liên kết hai người mạng xã hội [6] Vấn đề bình thường đơn giản, bối cảnh số lượng đỉnh, cạnh đồ thị lớn (vài triệu đỉnh) thay đổi nhanh (thêm cạnh, bớt cạnh), làm để tối ưu hóa trình tìm đường ngắn thách thức lớn [21] Mục tiêu nội dung luận văn Với mục tiêu trên, luận văn trình bày giải pháp để cải thiện hiệu trình tối ưu truy vấn đồ thị động, quy lớn có hướng, không trọng số Phương pháp tối ưu dựa ý tưởng: cấu trúc liệu phù hợp, tối ưu không gian tìm kiếm cài đặt phù hợp Tổ chức luận văn Nội dung luận văn tổ chức sau: Mở đầu: Đặt vấn đề Chương 1: Giới thiệu sở lý thuyết, vấn đề liên quan đến đồ thị toán tìm đường ngắn đồ thị Chương 2: Trình bày toán, cách tiếp cận phương pháp giải toán Chương 3: Thực nghiệm kết đạt Kết luận chung: Kết luận đưa hướng phát triển Chương Cơ sở lý thuyết vấn đề liên quan 1.1 Đồ thị Trước tìm hiểu lý thuyết đồ thị, xét ví dụ mạng xã hội nhỏ [7] sau: Hình 1.1: Mạng xã hội Đây ví dụ đồ thị Tên người đỉnh, đường liên kết hai người cạnh Chúng ta thường biểu diễn liên kết hai đỉnh u v cặp (u, v) Bởi quan hệ “biết nhau” quan hệ hai chiều, nên ví dụ đồ thị vô hướng Trong đồ thị vô hướng cạnh (u, v) tương tự cạnh (v, u) Trong đồ thị có hướng, quan hệ “biết nhau” không hai chiều nữa, người A biết người B chưa người B biết người A Nhìn đồ thị, An Sơn biết thông qua Linh Hạnh Đây đường ngắn hai đỉnh An Sơn Chúng ta đánh dấu đường ngắn Hình 1.2 Hình 1.2: Đường mạng xã hội Khi đường xuất phát từ đỉnh quay lại nó, gọi chu trình Ví dụ từ An Bình tới Cường, Linh cuối quay lại An Thực ra, có chu trình ngắn từ An qua Bình tới Linh quay lại An Hình 1.3: Chu trình mạng xã hội Trong mạng xã hội, sử dụng trọng số để xác định mức độ biết hai người Một ví dụ cụ thể khác đồ thị có trọng số đồ đường Giả sử tất đường hai chiều, đồ đường đồ thị vô hướng, giá trị trọng số số biểu diễn khoảng cách thành phố Ví dụ Hình 1.4 tả khoảng cách số tỉnh thành phía Bắc nước Việt Nam Hình 1.4: Bản đồ khoảng cách số tỉnh thành phía Bắc Trong trường hợp đồ đường đi, muốn tìm đường ngắn vị trí, phải tìm kiếm đường qua vị trí trung gian cho tổng trọng số nhỏ Ví dụ đồ Hình 1.4, đường ngắn từ Hà Nội tới Hạ Long, qua Hải Dương, Hải Phòng Tổng cộng đoạn đường có chiều dài 163km Mối quan hệ hai đỉnh lúc hai chiều Lấy ví dụ, đồ đường đi, gặp đường chiều Để biểu diễn có hướng này, cạnh thêm dấu mũi tên cuối đồ thị gọi đồ thị có hướng Ví dụ Hình 1.5 tả mạng xã hội có hướng Dễ nhận thấy, đồ thị Hình 1.5 chu trình, đồ thị gọi có hướng không chu trình Hình 1.5: Mạng xã hội có hướng Như thấy, đồ thị có nhiều ứng dụng biểu diễn vật, mối quan hệ vật giới thực Phần tiếp theo, luận văn trình bày số lý thuyết tảng đồ thị 1.1.1 Giới thiệu đồ thị Đồ thị (G), kí hiệu G = (V, E) bao gồm tập đỉnh (V) tập cạnh (E) Trong cạnh E nối hai đỉnh thuộc tập đỉnh (V) kí hiệu E = (u, v) (Đỉnh u nối với đỉnh v) Ví dụ đồ thị đưa Hình 1.6 Hình 1.6: Đồ thị Đồ thị phân loại dựa sau: Đơn đồ thị vô hướng, Đa đồ thị vô hướng, Giả đồ thị vô hướng, Đơn đồ thị có hướng, Đa đồ thị có hướng 1.1.2 Một số thuật ngữ Bậc đỉnh Bậc đỉnh v đồ thị G = (V, E) ký hiệu deg(v) số cạnh liên thuộc với nó, riêng khuyên đỉnh tính hai lần cho bậc Trong đồ thị có hướng, bậc đỉnh v chia thành bậc (số lượng cạnh nối tới đỉnh v, kí hiệu deg+(v)) bậc (số lượng cạnh nối từ đỉnh v, kí hiệu deg-(v)) Đường chu trình, đồ thị liên thông Trong đồ thị vô hướng, đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương đồ thị vô hướng G = (V, E) dãy x0, x1, …, xn-1, xn | u = x0, v = xn, (xi, xi+1) ∈ E, i = 0, 1, , n-1 dãy cạnh: (x0, x1), (x1, x2), , (xn-1, xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u = v) gọi chu trình Đường hay chu trình gọi đơn cạnh bị lặp [1] Đồ thị vô hướng G = (V, E) gọi liên thông tìm đường hai đỉnh 1.1.3 Biểu diễn đồ thị Trong phần này, luận văn giới thiệu bốn cấu trúc liệu để biểu diễn đồ thị Trong cấu trúc, phần biểu diễn đỉnh giữ nguyên, nhiên phần biểu diễn cạnh lại hoàn toàn khác Đồ thị Hình 1.7 sử dụng cho toàn ví dụ phần 1.1.3 Hình 1.7: Đồ thị có hướng Danh sách cạnh (Edge list) Trong biểu diễn đồ thị theo danh sách cạnh, tất cạnh e thuộc E lưu dạng hai phần tử (vi, vj) danh sách lưu trữ Danh sách kề (Adjacency list) Trong biểu diễn đồ thị danh sách kề, với đỉnh u, ta lưu trữ tất đỉnh v kề với Ma trận liên thuộc (Incidence matrix) Ma trận liên thuộc đỉnh – cạnh đồ thị G = (V, E) đồ thị |V| x |E|, phần tử hàng thứ i cột thứ j i đỉnh đầu cung thứ j, -1 i đỉnh cuối cung thứ j trường hợp lại Ma trận kề (Adjaceny matrix) Ma trận kề đồ thị G = (V, E) đồ thị |V| x |V|, phần tử hàng thứ i cột thứ j tồn cung (i, j) đồ thị, trường hợp ngược lại Một số thống kê độ phức tạp số phương phức trình bày Bảng 1.1 Giả sử n: số đỉnh, m: số cạnh, dv: bậc đỉnh v Bảng 1.1: Một số thống kê độ phức tạp số phương phức đồ thị [9] Phương thức Danh sách Danh sách Ma trận Ma trận kề cạnh kề liên thuộc numVertices( ) Trả số lượng đỉnh đồ thị O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(n) O(n) O(n) O(n) O(m) O(m) O(m) O(m) O(m) O(min(du , dv)) O(m) O(1) numVertices( ) Trả số lượng cạnh đồ thị vertices( ) Trả phép duyệt tất đỉnh đồ thị edges( ) Trả phép duyệt tất cạnh đồ thị getEdge(u, v) Kiểm tra xem cạnh (u, v) có tồn không? outDegree(v) inDegree(v) Trả số lượng đỉnh vào đỉnh nốt v O(m) O(1) O(m) O(n) O(m) O(dv ) O(m) O(n) O(1) O(1) O(m×n) O(n2) O(m) O(dv) O(m×n) O(n2) O(1) O(1) O(1) O(1) O(1) O(1) O(1) O(1) Θ(n) Θ(m+n) Θ(m×n) Θ(n2) outgoingEdges(v) incomingEdges(v) Trả phép duyệt tất đỉnh vào đỉnh nốt v insertVertex(x) Thêm đỉnh vào đồ thị removeVertex(v) Xóa đỉnh đồ thị insertEdge(u, v) Thêm cạnh vào đồ thị removeEdge(u, v) Xóa cạnh đồ thị Không gian lưu trữ 1.1.4 Các thuật toán tìm kiếm đồ thị ứng dụng Trong đồ thị, toán duyệt qua tất đỉnh đồ thị cho đỉnh thăm lần toán quan trọng thu hút quan tâm nghiên cứu nhiều nhà khoa học Trong mục này, luận văn trình bày hai thuật toán duyệt đồ thị bản: thuật toán tìm kiếm theo chiều sâu (Depth First Search – DFS) thuật toán tìm kiếm theo chiều rộng (Breadth First Seach – BSF) Hai thuật toán làm sở để giải số toán quan trọng lý thuyết đồ thị 1.2 Bài toán tìm đường ngắn Trong ứng dụng thực tế, toán tìm đường ngắn hai đỉnh đồ thị có ý nghĩa to lớn Ví dụ, toán tìm đường ngắn hai điểm đồ (có thể ngắn thời gian, khoảng cách…) Hiện nay, có nhiều phương pháp để giải toán thông thường, thuật toán xây dựng sở lý thuyết đồ thị dường cho hiệu cao Trong phần luận văn đề cập đến số toán tìm đường ngắn Bài toán tìm đường ngắn áp dụng cho đồ thị G = (V, E) có hướng, có trọng số với trọng số hàm w: Ε ⟹ % ánh xạ cạnh với giá trị thực Khi đó, chi phí w(p) đường p = (v0, v1, …, vk) tổng trọng số cạnh kết hợp thành đường / & ' = & *+,- , *+ +0- Tổng quát phát biểu: tìm đường ngắn xuất phát từ đỉnh đầu s đến đỉnh cuối t, (s,t ∈ V) Độ dài đường ký hiệu d(s,t) (khoảng cách từ s đến t) Nếu không tồn đường từ s tới t d(s,t)=∞ Vấn đề tìm đường ngắn đồ thị có toán bản: tìm đường ngắn xuất phát từ đỉnh tìm đường ngắn tất cặp đỉnh Phần lớn thuật toán tìm khoảng cách xây dựng nhờ kỹ thuật tính toán từ ma trận trọng số w[u, v], u,v ∈ V, cận d[v] khoảng cách từ s đến tất đỉnh v ∈ V tính Mỗi biểu thức sau thỏa mãn d[u] + w[u, v] < d[v] ta gán d[v] = d[u] + w[u, v] Quá trình tiếp tục tất đỉnh kề với cạnh bước duyệt Kết d[v] khoảng cách ngắn s t Sau đây, luận văn trình bày chi tiết thuật toán tìm đường ngắn BELLMAN-FORD, DIJKSTRA’S, FLOYDWARSHALL, BFS, BBFS 1.3 Tổng kết chương Chương trình bày vấn đề tổng quát đồ thị, số thuật ngữ đồ thị, đường chu trình, đồ thị liên thông, biểu diễn đồ thị máy tính, thuật toán tìm kiếm đồ thị ứng dụng Phần cuối chương, luận văn đề cập đến toán tìm đường ngắn giải thuật để giải toán Điều làm sở để tiếp cận giải toán trình bày chương Chương Bài toán, cách tiếp cận phương pháp giải Trong phần luận văn trình bày chi tiết toán, cách tiếp cận toán sâu vào hướng giải toán 2.1 Định nghĩa toán Tổng quát Mục tiêu toán trả lời truy vấn tìm đường ngắn đơn đồ thị, động, có hướng không trọng số, với quy liệu lớn nhanh Sự động (thay đổi) đồ thị có nghĩa có kiện thay đổi liệu cấu trúc đồ thị, cụ thể hai kiện thêm cạnh (Addition) xóa cạnh (Deletion) Từ đó, có tất ba kiện xảy đồ thị miêu tả cụ thể đây: Sự kiện 1: [Query: u v (Q u v)]: Sự kiện truy vấn khoảng cách ngắn từ đỉnh u đến đỉnh v Nếu đường hai đỉnh không tồn đỉnh u hay v đồ thị kết trả -1 Khoảng cách từ đỉnh tới Sự kiện 2: [‘A’/add: u v (A u v)]: Sự kiện tả thay đổi đồ thị thêm cạnh từ đỉnh u đến đỉnh v Nếu cạnh tồn tại, đồ thị không thay đổi Nếu hai đỉnh cạnh thêm chưa có phải thêm vào đồ thị Sự kiện 3: [‘D’/delete: u v (D u v)]: Sự kiện tả thay đổi đồ thị xóa cạnh nối từ đỉnh u đến đỉnh v Nếu cạnh không tồn tại, đồ thị không thay đổi Dữ liệu vào ban đầu Dữ liệu vào ban đầu biểu diễn dạng danh sách cạnh, cạnh bao gồm cặp hai định danh hai đỉnh (đỉnh bắt đầu đỉnh kết thúc cạnh) Định danh biểu thị số nguyên dương Định danh lớn biểu diễn 232-1 Đầu vào chương trình dòng biểu diễn cạnh đồ thị, dòng chứa xác hai số nguyên dương theo định dạng chuẩn ASCII ngăn cách dấu cách Kí tự ‘S’ dòng cuối báo hiệu kết thúc trình nhập liệu đồ thị Ví dụ: Hình 2.1, liệu đầu vào bên trái biểu diễn đồ thị bên phải vấn đề phân tán vấn đề tính toán song song Tuy nhiên, giống NetworkX SNAP C++, chúng không thích hợp cho toán tìm đường ngắn hai điểm đồ thị thay đổi, trường hợp nhiều cạnh đỉnh liên tục thêm vào xóa Liên quan đến đồ thị thay đổi, nhiều nhà nghiên cứu trọng đến vấn đề [15] [19] [21] cho thấy khối lượng công việc toán tìm đường ngắn lớn Để áp dụng sức mạnh xử lý đa luồng [2] [3] [13] [14], miêu tả cấu trúc phù hợp song song hóa thuật toán duyệt đồ thị theo chiều rộng đồ thị lớn Nhưng hành động thêm cạnh hay xóa cạnh chưa ý hệ thống Các thư viện xử lý song song ngôn ngữ lập trình C/C++ OpenMP Hình 2.3: Giới thiệu OpenMP Pthread (POSIX Thread) Hình 2.4: Giới thiệu Pthread Intel Cilk Plus Hình 2.5: Song song hóa truy vấn Cilk Plus 11 2.3 Cách tiếp cận giải toán Để giải toán này, bước phải tìm cấu trúc liệu để biểu diễn đồ thị máy tính Sau tìm cấu trúc liệu phù hợp, phải tìm phương pháp để ba phép toán tìm khoảng cách ngắn nhất, thêm cạnh, xóa cạnh chạy nhanh Cuối cùng, dựa vào công nghệ đa luồng máy tính có nhiều chíp xử lý, tận dụng để song song hóa trình tìm đường ngắn truy vấn liên tiếp Chi tiết phương pháp giải toán trình bày phần 2.4 Cấu trúc liệu phù hợp Hiện nay, việc xử lý lệnh bên CPU nhanh nhiều so sánh với việc lấy liệu từ nhớ Dựa kiến trúc nhớ đệm CPU, chương trình xử lý liệu lớn, liệu tổ chức liên tiếp dường cách tốt để tăng tỉ lệ cache hit Bảng 2.1: Độ trễ nhớ 2016 Thời gian (ns) L1 cache 0.5 Branch mispredict L2 cache reference Mutex lock/unlock 17 Main reference 100 memory Ghi >2 ALU instruction latency x L1 cache 25xL2 cache, 200xL1 cache Trong đồ thị, cách đơn giản thuận tiện để biểu diễn đỉnh đồ thị định nghĩa dạng số nguyên dương Do vậy, đồ thị có |V| đỉnh đỉnh có định danh từ đến |V| - Trong phương pháp trình bày phần 1.1.3, danh sách kề cách thích hợp để biểu diễn đồ thị động quy lớn không gian lưu trữ tương đối nhỏ Θ(|V| + |E|) thuận tiện để thêm xóa đỉnh, cạnh Với danh sách kề đồ thị biểu diễn theo hai cách sau: Danh sách kề đỉnh vào đồ thị Đồ thị biểu diễn danh sách đỉnh vào nốt liên tiếp (incoming_edges) mảng số vào (incoming_index) để lấy danh sách đỉnh vào nốt 12 Danh sách kề đỉnh đồ thị Tương tự danh sách kề đỉnh vào đồ thị, đồ thị biểu diễn danh sách đỉnh nốt liên tiếp (outgoing_edges) mảng số (outgoing_index) để lấy danh sách đỉnh nốt Hình 2.6: Cấu trúc liệu đồ thị Cụ thể, đồ thị G biểu diễn mảng incoming_edges, incoming_index, outgoing_edges, outgoing_index Nhờ vào việc sử dụng danh sách đỉnh vào đỉnh nốt, duyệt đồ thị từ hai phía (Bi-directional BFS) 2.5 Tối ưu trình thêm xóa cạnh đồ thị 2.5.1 Thêm cạnh Vấn đề đặt làm cạnh thêm vào đồ thị với thời gian nhanh Khi sử dụng danh sách liền kề truyền thống để biểu diễn đồ thị, chiến lược dùng để thêm cạnh sau Chèn vào mảng Trước thêm cạnh vào đồ thị, vị trí phần tử đỉnh vào/ra nốt xác định Tất phần tử đỉnh vào/ra nốt dịch sang phải ví trị để dành vị trí trống cho đỉnh vào/ra cạnh thêm vào Quá trình miêu tả Hình 2.7 Hình 2.7: Thêm cạnh cách chèn vào mảng 13 Thực tế cho thấy rằng, phương pháp thích hợp với đồ thị có kích thước nhỏ Vì liệu đồ thị lớn, số cạnh lên đến hàng triệu, số lượng đỉnh đỉnh vào nhiều, chi phí để di chuyển tất phần tử nốt sang phải vị trí không nhỏ Cấp phát trước khoảng trống Để giảm bớt chi phí di chuyển tất phần tử nốt sang phải vị trí thêm đỉnh vào/ra, khoảng trống đỉnh vào/ra nốt cấp phát trước Điều cho phép tối ưu trình thêm cạnh Quá trình miêu tả Hình 2.8 Hình 2.9 Hình 2.8: Cấu trúc liệu danh sách kề cấp phát trước khoảng trống Hình 2.9: Thêm cạnh cách cấp trước khoảng trống Tuy nhiên, mảng danh sách cạnh liền kề biểu diễn đồ thị bị hổng nhiều, dẫn đến tăng tỉ lệ cache miss duyệt đồ thị Di chuyển phần tử xuống cuối mảng Hình 2.10: Quá trình thêm cạnh 14 Trước thêm vào đỉnh vào/ra nốt, tất phần tử nốt chuyển xuống cuối mảng, sau thêm đỉnh Quá trình miêu tả Hình 2.10 Đối với toán cụ thể này, phương án "Di chuyển phần tử xuống cuối mảng" cho kết tốt phương án "Cấp phát trước khoảng trống" Bởi cấu trúc liệu đỉnh xếp liền kề, phương án cho phép đỉnh nằm vị trí liên tiếp nhiều hơn, phương án cho nhiều khoảng trống đỉnh Dựa vào phân tích tối ưu phần trên, phương án cho tỉ lệ cache miss hơn, tăng hiệu hệ thống Và cuối cùng, phương án lựa chọn để sử dụng trình thêm cạnh 2.5.2 Xóa cạnh Dựa cấu trúc đồ thị trên, cần thay đổi giá trị số lượng đỉnh vào/ra mảng số incoming_index /outgoing_index xóa đỉnh nối mảng danh sách đỉnh vào/ra Quá trình miêu tả Hình 2.11 Hình 2.11: Quá trình xóa cạnh 2.6 Tối ưu trình xử lý truy vấn tìm đường ngắn Trong trình xử lý truy vấn tìm đường ngắn nhất, thuật toán duyệt đồ thị theo chiều rộng sử dụng Thuật toán xem phương pháp tối ưu đồ thị quy lớn, có hướng, có/không trọng số [3] [11] Một điểm cần ý với thuật toán khả song song hóa chạy nhiều luồng, nhiều CPU Bởi vậy, chiến lược để giải toán xử lý song song truy vấn liên tiếp Chiến lược giải thích chi tiết 15 2.6.1 Cải thiện thuật toán tìm đường ngắn từ hai hướng Thuật toán duyệt đồ thị theo chiều rộng sử dụng với trình duyệt từ hai hướng (đỉnh đầu đỉnh kết thúc) sử dụng hai mảng đỉnh vào (incoming_array) đỉnh (outgoing_array) Dự đoán hướng lần lặp Trong thuật toán duyệt đồ thị theo chiều rộng từ hai hướng bình thường, nhánh có số lượng đỉnh hàng đợi duyệt ưu tiên Ví dụ Hình 2.12, cần tìm đường ngắn đỉnh đỉnh Khi sử dụng thuật toán bản, tổng cộng + + = đỉnh phải cho danh sách hàng đợi duyệt Thay duyệt theo hướng đỉnh ra, duyệt theo hướng đỉnh vào Khi đó, số lượng đỉnh cần phải cho vào danh sách hàng đợi duyệt lại + = Do vậy, không so sánh tổng số đỉnh vào đỉnh mức 1, mà so sánh với mức thứ Điều giảm thiểu thời gian tìm đường ngắn Hình 2.12: Thứ tự duyệt đỉnh thuật toán duyệt đồ thị theo chiều rộng từ hai hướng 2.6.2 Song song hóa truy vấn tìm đường ngắn Cilk Plus sử dụng cho trình song song hóa Trong trình thực hiện, OpenMP Pthread đượ thử nghiệm Tuy nhiên, toán cụ thể trình bày luận văn này, Cilk Plus cho kết tốt Cilk Plus thực trình song song hóa theo Hình 2.5 2.7 Tổng kết chương Chương trình bày chi tiết toán cần giải vấn đề liên quan đến toán Phần luận văn trình bày cách tiếp cận giải toán phương pháp giải toán dựa cấu trúc liệu, trình thêm, xóa cạnh trình truy cấn tìm đường ngắn Dựa vào phân tích chương 2, chương trình bày cụ thể phương pháp cài đặt kết thực nghiệm giải thuật 16 Chương Thực nghiệm đánh giá Để kiểm nghiệm phương pháp tìm đường ngắn đồ thị động, quy lớn, thuật toán sử dụng để tham gia thi lập trình ACM Sigmod năm 2016 (ACM Sigmod Programming Contest 2016) chọn năm đội xuất sắc giải Bên cạnh đó, liệu lớn từ SNAP [5] dùng để đánh giá phương pháp 3.1 Cài đặt Ba kiện cài đặt hàm exec_queries, add_edge, del_edge Chi tiết cài đặt miêu tả Thủ tục Thủ tục 1: Xử lý tổng hợp kiện Để tích hợp trình song song hóa truy vấn tìm đường ngắn nhất, trước thêm cạnh, tất truy vấn tìm đường ngắn danh sách trước thực Thủ tục để thêm cạnh (u, v) vào đồ thị G tả Thủ tục 2: Thêm cạnh (u, v) vào đồ thị G Để tích hợp trình song song hóa tìm khoảng cách ngắn nhất, trước thực xóa cạnh, tất truy vấn tìm đường ngắn danh sách trước thực Thủ tục xóa cạnh (u, v) đồ thị G tả 17 Thủ tục 3: Xóa cạnh (u, v) đồ thị G Thủ tục quan trọng tìm đường ngắn hai đỉnh (u, v) tả cụ thể Thủ tục Thủ tục 4: Tìm đường ngắn hai đỉnh (u, v) theo phương pháp duyệt đồ thị theo chiều rộng từ hai hướng cải tiến 18 Sử dụng cách thức thao tác trực tiếp đến bit, dùng thứ tự bit để đánh dấu đỉnh đồ thị (đỉnh chưa xét giá trị bit=0, đỉnh xét giá trị bit=1) thay dùng mảng giảm không gian nhớ thơi gian thi hành Hình 3.1: Thời gian thực thi hai phép toán thao tác mảng bit Cilk Plus dùng để song song hóa thủ tục tìm đường ngắn Thủ tục 5: Xử lý song song truy vấn liên tiếp đồ thị G 3.2 Thực nghiệm 3.2.1 Cuộc thi ACM Sigmod Contest 2016 Trong thi này, liệu đồ thị lớn dùng để đánh giá giải pháp đội Mỗi bao gồm tập trình thêm cạnh, xóa cạnh, truy vấn tìm đường ngắn liên tục Bảng 3.1 thống kê chi tiết thông số liệu kiểm tra ACM Sigmod Bảng 3.1:Thống kê liệu ACM Sigmod Thông số Small Medium X-Large XX-Large Đỉnh 1574074 2000000 1971281 6009555 Cạnh 3232855 5000000 5533214 16518948 Bậc lớn 114557 90412 12 779 Bậc lớn 114125 356364 12 770 Cấu hình máy kiểm nghiệm ban tổ chức 19 CPU: x Intel E5-2620v2 (12 cores / 24 threads), RAM: 20GB, Hệ điều hành: Ubuntu 14.04 Linux, Phần mềm: Automake 1.15, gcc5.2.1 Kết giải pháp cài đặt ngôn ngữ lập trình C Bảng 3.2: Kết thi ACM Sigmod (tính theo giây) Bộ liệu Đội Small Medium X-Large XX-Large 0.118 0.494 1.284 2.878 0.107 0.220 0.886 2.333 0.208 0.217 1.085 2.123 0.157 0.234 1.150 2.597 0.134 0.072 1.087 3.239 akgroup (giải pháp luận văn/đồng giải ba) H_minor_free (giải nhất) uoa_team (giải nhì) while1 (đồng giải ba) gStreamPKU (đồng giải ba) 3.2.2 Kiểm nghiệm với liệu từ SNAP Hai liệu phù hợp với hình chọn LiveJournal Pokec Chi tiết hai liệu miêu tả Bảng 3.3 Bảng 3.3: Thống kê liệu LiveJournal Pokec Thông số LiveJournal Pokec Đỉnh 4847571 1632803 Cạnh 68993773 30622564 16 11 Bậc lớn 20293 8763 Bậc lớn 13906 13733 Độ dài khoảng cách lớn Cấu hình máy kiểm nghiệm CPU: x Intel Xeon E7- 4850 (10 cores / 20 threads, RAM: 128GB, Hệ điều hành: CentOS 6.7 Linux, Phần mềm: Automake 1.15, gcc5.2.0 20 Khối lượng kiểm nghiệm Với đồ thị, kiểm thử khoảng 1.000.000 kiện sinh với tỉ lệ truy vấn/thêm cạnh/xóa cạnh 8/1/1 tương ứng Thực chất, có khoảng 800.000 truy vấn, 100.000 thêm cạnh 100.000 xóa cạnh Kết thử nghiệm Mỗi phương pháp chạy lần, sau lấy kết trung bình Giải pháp Bảng 3.4: Kết thử nghiệm (mili giây) Bộ liệu Sigmod Test Pokec Live Journal 787 17 985 42 876 825 674 903 068 53 235 981 Snap 48 741 49 316 108 ~ ngày H_minor_free 422 047 15 673 Uoa_team 110 17 526 14 724 Chưa xác Chưa xác Chưa xác 2918 134 12 085 Giải pháp luận văn Reference While1 gStreamPKU Bên cạnh đó, luận văn so sánh phương pháp giải pháp thay đổi số lượng luồng xử lý truy vấn Kết chi tiết miêu tả Hình 3.2, Hình 3.3 Hình 3.4 Milliseconds SIGMOD TEST 10000 5000 16 24 32 48 Number of Threads Thesis H_miror_free uoa_team gStreamPKU Hình 3.2: Kết thử nghiệm với liệu SIGMOD TEST 21 Milliseconds POKEC 100000 50000 16 24 32 48 Number of Threads Thesis H_miror_free uoa_team gStreamPKU Hình 3.3: Kết thử nghiệm với liệu POKEC Milliseconds LIVEJOURNAL 200000 100000 16 24 32 48 Number of Threads Thesis H_miror_free uoa_team gStreamPKU Hình 3.4: Kết thử nghiệm với liệu LIVEJOURNAL Kết thu cho phép kết luận giải pháp đưa luận văn đạt hiệu cao Dựa vào việc sử dụng cấu trúc liệu hợp lý, kiểm tra tổng số đỉnh vào đỉnh mức thuật toán duyệt đồ thị theo chiều rộng từ hai hướng sử dụng Intel Cilk Plus để song song hóa trình truy vấn phương pháp để giảm tối thiểu thời gian xử lý truy vấn tìm đường ngắn đồ thị động quy lớn 3.3 Tổng kết chương Chương trình bày chi tiết phương án cài đặt dựa phân tích chương Bên cạnh đó, luận văn so sánh kết thực nghiệm với hai thư viện NetworkX Snap, so sánh cụ thể với bốn đội đạt kết tốt thi lập trình ACM Sigmod 2016 Kết thu cho phép kết luận phương án luận văn đạt hiệu tốt 22 Kết luận chung Các đóng góp Sau thời gian nghiên cứu tìm hiểu đề tài, luận văn hoàn thành đạt nội dung đề với mục tiêu tối ưu truy vấn tìm đường ngắn đơn đồ thị, động, có hướng, không trọng số với quy liệu lớn Về lý thuyết, luận văn trình bày số kiến thức đồ thị, dạng đồ thị ứng dụng lý thuyết đồ thị toán cụ thể đời sống Tiếp theo, luận văn trình bày bốn hình liên quan đến việc cài đặt đồ thị thực tế phân tích ưu, nhược điểm hình Bên cạnh đó, luận văn trình bày toán tìm đường ngắn đồ thị, thuật toán hay sử dụng ứng dụng toán thực tiễn Kế tiếp, luận văn trình bày công cụ mã nguồn mở, vấn đề liên quan xử lý toán liên quan đến đồ thị, kết hợp với đánh giá mặt thuận lợi khó khăn áp dụng với đơn đồ thị, động, có hướng, không trọng số với quy liệu lớn Về thực nghiệm, luận văn đưa phương pháp để cải thiện trình tìm đường ngắn nhất, cài đặt hoàn chỉnh mã nguồn ngôn ngữ C Phương pháp kiểm nghiệm thi lập trình ACM Sigmod 2016 cho kết khả quan Thêm vào đó, thuật toán luận văn so sánh với số công cụ mã nguồn mở cho xử lý toàn liên quan đến đồ thị tốt với bốn đội xuất sắc từ thi lập trình ACM Sigmod 2016 hai LiveJournal Pokec Kết cho thấy phương pháp đạt kết tốt dựa việc sử dụng cấu trúc liệu phù hợp, tối ưu thuật toán duyệt đồ thị theo chiều rộng từ hai hướng, sử dụng công cụ Cilk Plus để song song hóa trình truy vấn Hướng phát triển Dựa đó, hướng phát triển đề tài tối ưu hóa thuật toán, áp dụng phương pháp khác vào trình tìm kiếm đường ngắn tính toán trước hay dự kiến đường ngắn hai đỉnh qua số đỉnh trung gian Từ giảm nhiều thời gian tính toán lần lại phải tính toán lại từ đầu đường ngắn Tiếp theo áp dụng kỹ thuật giảm tỉ lệ cache miss CPU cho toán cần hiệu cao khác xử lý giao dịch trực tuyến (Online Transaction Processing) 23 Danh mục công trình khoa học tác giả 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 Tiếng Việt [1] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc Nhà xuất Đại học Quốc gia Hà Nội, 2006 Tiếng Anh [2] 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 http://snap.stanford.edu/data/index.html Collection [Online] [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/computerscience/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 24 25 ... 2.6 Tối ưu trình xử lý truy vấn tìm đường ngắn Trong trình xử lý truy vấn tìm đường ngắn nhất, thuật toán duyệt đồ thị theo chiều rộng sử dụng Thuật toán xem phương pháp tối ưu đồ thị quy mô lớn, ... song hóa truy vấn tìm đường ngắn nhất, trước thêm cạnh, tất truy vấn tìm đường ngắn danh sách trước thực Thủ tục để thêm cạnh (u, v) vào đồ thị G mô tả Thủ tục 2: Thêm cạnh (u, v) vào đồ thị G... duyệt đồ thị theo chiều rộng từ hai hướng sử dụng Intel Cilk Plus để song song hóa trình truy vấn phương pháp để giảm tối thiểu thời gian xử lý truy vấn tìm đường ngắn đồ thị động quy mô lớn 3.3

Ngày đăng: 06/03/2017, 14:27

Từ khóa liên quan

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

Tài liệu liên quan