Mơ hình xử lý song song trong CilkPlus

Một phần của tài liệu (Luận án tiến sĩ) một số phương pháp nâng cao hiệu quả dự báo lan truyền thông tin trên mạng xã hội (Trang 52 - 55)

2.3. Nâng cao tốc độ dự báo lan truyền thông tin

Như đã trình bày ở trên, phương pháp nâng cao tớc độ tính tốn, phân tích dự báo lan truyền thơng tin được trình bày trong Luận án là việc kết hợp 02 ý tưởng:

1. Kỹ thuật rút gọn đồ thị dựa trên thay thế các đỉnh tương đương bậc 1. Quá trình này được lờng ghép vào pha duyệt đồ thị.

2. Kỹ thuật song song hóa các phép tính SSSP trong thuật tốn tính Độ trung tâm trung gian của Brandes với mơ hình lập trình l̀ng song song trên CPU và sử dụng bộ thư viện CilkPlus.

2.3.1. Rút gọn đồ thị

Việc đầu tiên trong q trình rút gọn đờ thị là phải xác định các đỉnh tương đương bậc 1. Bậc 1 nghĩa là các đỉnh treo deg(v) = 0 và tương đương nghĩa là

chúng phải có tập đỉnh liền kề Г(v) trùng nhau. Và vì chúng là những đỉnh bậc 1 (có một đỉnh liền kề duy nhất) nên có thể nói việc ta cần làm là đi tìm những đỉnh treo có chung một đỉnh liền kề.

Đề thực hiện điều này, ta cần tiến hành q trình duyệt đờ thị [81]. Trong khi xem xét việc sử dụng phương pháp duyệt theo chiều rộng trước (BFS) hay duyệt theo chiều sâu trước (DFS), nhận thấy pha đầu tiên trong thuật tốn tính BC của Brandes mà chúng ta cải tiến chính là việc duyệt theo chiều rộng trước. Vì vậy, chúng ta sẽ tiến hành lồng ghép việc rút gọn đồ thị vào pha duyệt đồ thị tức là cũng sử dụng phương pháp BFS.

Sau khi xác định được các đỉnh tương đương ở trên, việc thay thế chúng được hiểu là chúng ta sẽ chọn một đỉnh duy nhất làm đại diện, hay tức là xóa các đỉnh tương đương và để lại một đỉnh duy nhất. Việc rút gọn này làm giảm quy mô của đồ thị, do đó chắc chắn sẽ thay đổi kết quả tính BC của các đỉnh. Tuy nhiên, có hai lý do để chúng ta vẫn có thể tiến hành rút gọn đờ thị. Thứ nhất, các đỉnh mà chúng ta thay thế là các đỉnh treo bậc 1, độ trung tâm trung gian BC = 0, nghĩa là những đỉnh không quan trọng, việc loại bỏ chúng không làm ảnh hưởng quá lớn đến đồ thị.

Thứ hai, trong việc phân tích đồ thị mạng xã hội, việc chúng ta quan tâm là đỉnh nào là “quan trọng” nhất, hay đỉnh nào có độ trung tâm cao nhất hoặc độ trung tâm trung gian BC cao nhất chứ không quan tâm độ trung tâm trung gian chính xác của đỉnh đó là bao nhiêu. Phương pháp rút gọn của Luận án cho phép đảm bảo giữ nguyên tính chất “quan trọng” nhất của các đỉnh đó.

Thuật tốn 2.2. Giải thuật rút gọn đờ thị Input: Đồ thị G = (V,E)

Data:

queue Q ← empty, stack S khởi tạo rỗng và có thể chứa được |V| đỉnh;

dist[v]: khoảng cách từ đỉnh nguồn đến v;

Pred[v]: danh sách các đỉnh trên đường đi ngắn nhất từ đỉnh nguồn đến v; σ[v]: số đường đi ngắn nhất từ đỉnh nguồn đến v;

Output: Đồ thị G đã rút gọn

1: for s = 0 to Edges.size() do

/* Duyệt đồ thị */

2: dist[s] ← 0; σ[s] ← 1; Q.push(s);

3: foreach v ∈ V do Pred[v] ← empty list; dist[v] ← ∞; σ[v] ← 0;

4: while Q not empty do 5: v ← Q.pop(); S.push(v);

/* Rút gọn đồ thị */

4: foreach w ∈ Edges[v] && Edges[w].Size() = 1 do

5: if u ∈ Edges[v] && Edges[u].Size() = 1 then

6: Edges[v] ← Edges[v]\{u} /* xóa u khỏi danh sách liền kề của v */ 7: Edges[u] = {} /* xóa đỉnh u */

8: end 9: end 10: end

Để chứng minh hiệu quả của việc rút gọn trong bài tốn lan truyền thơng tin, dựa trên phương pháp và thư viện NDlib trong [90], chúng ta sẽ thử nghiệm q trình lan truyền thơng tin trên một sớ đờ thị ngẫu nhiên bằng mơ hình SIR và so sánh với quá trình đó khi đờ thị đã được rút gọn. Lần thứ nhất, ta thử nghiệm với một đồ thị ngẫu nhiên 500 đỉnh, xác suất tạo cạnh 0.005, với 50 lần thông tin được lan truyền. Mã ng̀n chương trình thử nghiệm như sau:

import networkx as nx

import ndlib .models.ModelConfig as mc

import ndlib .models. epidemics.SIRModel as sir # Network topology

g = nx. erdos_renyi_graph(500, 0.005) # Model selection

model = sir .SIRModel(g) # Model Configuration cfg = mc. Configuration() cfg .add_model_parameter( ’beta’ , 0.1) cfg .add_model_parameter( ’gamma’ , 0.2) cfg .add_model_parameter("percentage_infected" , 0.1) model. set_initial_status (cfg) # Simulation execution

iterations = model. iteration_bunch(50)

Kết quả thể hiện ở hình 2.4 với đường nhạt mô tả kết quả lan truyền trước khi rút gọn và đường đậm mô tả kết quả lan truyền sau khi rút gọn cho thấy, tỷ lệ về các nút có khả năng lây nhiễm (S), bị lây nhiễm (I) và phục hời (R) giữa hai đờ thị khơng có nhiều khác biệt.

Một phần của tài liệu (Luận án tiến sĩ) một số phương pháp nâng cao hiệu quả dự báo lan truyền thông tin trên mạng xã hội (Trang 52 - 55)