1
THUẬT TOÁN SONG SONG
CHO MỘT SỐ BÀI TOÁN
TRÊN ĐỒ THỊ
2
Nội dung
Đại cương về tính toán song song
Một số thuật toán song song cơ bản trên đồ thị
Thuật toán song song giải bài toán K-Median
Thiết kế chương trình
3
Đại cương về tính toán song song
Một số khái niệm và thuật ngữ
Phân loại các kiến trúc song song
Đánh giá độ phức tạp của thuật toán song
song
Một số mẫu thiết kế thuật toán song song
4
Một số khái niệm và thuật ngữ
Tính toán song song hay xử lý song song : là quá trình xử lý
thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý
đồng thời bởi một hay nhiều bộ xử lý để giải quyết một bài toán
Tốc độ
Hiệu quả (Efficient) của thuật toán song song được tính bằng : Tốc
độ / số bộ xử lý tham gia tính toán
Giá (cost) của một quá trình tính toán trên hệ thống song song được
tính như sau : Giá = Độ phức tạp tính toán × Số lượng bộ xử lý tham
gia tính toán
Tốc độ =
Thời gian thực hiện trong tình huống xấu nhất theo
thuật toán tuần tự nhanh nhất
Thời gian thực hiện trong tình huống xấu nhất của thuật
toán song song đang xét
5
Phân loại các kiến trúc song song
SISD (single instruction stream, single data stream)
MISD (multiple instruction stream, single data stream)
SIMD (single instruction stream, multiple data stream)
EREW (Exclusive Read, Exclusive Write)
CREW (Concurent Read Exclusive Write)
ERCW (Exclusive Read Concurent Write)
CRCW (Concurent Read Concurent Write)
MIMD (multiple instruction stream, multiple data stream)
Hệ đa xử lý với bộ nhớ phân tán
Hệ đa xử lý dùng chung bộ nhớ
Hệ đa xử lý với bộ nhớ dùng chung phân tán
6
Đánh giá độ phức tạp
Song song giới hạn và song song không
giới hạn
Các kỹ thuật cho việc nâng cao hiệu quả
của thuật toán song song
Giảm số lượng bộ xử lý
Giảm độ phức tạp thuật toán
Độ phức tạp của bài toán
7
Một số mẫu thiết kế thuật toán
song song
Mẫu cây nhị phân
Phát triển bởi nhân
đôi
Chia để trị
Phân chia
8
Một số thuật toán song song cơ
bản trên đồ thị
Thuật toán trên đồ thị không có trọng số
Thuật toán trên cây : Duyệt cây có thứ tự tổng quát, xác định
tổ tiên chung gần nhất, tâm và median của cây.
Tìm kiếm trên đồ thị : Tìm kiếm theo chiều sâu, tìm kiếm theo
chiều rộng.
Thành phần liên thông và một số bài toán liên quan : Tìm
thành phần liên thông, hai liên thông trong đồ thị, tập chu trình cơ
bản, tâm và median của đồ thị,..
Thuật toán trên đồ thị có trọng số
Cây khung tối thiểu
Đường đi ngắn nhất đơn nguồn
9
Duyệt cây có thứ tự tổng quát
10
Tâm và median của cây
Chỉ số ngăn cách :
Chỉ số lan truyền :
c là tâm của cây khi s(c) là tối
thiểu
m là median của cây khi t(m) là
tối thiểu
Ý tưởng : sử dụng thuật toán
song song tìm tổ tiên chung gần
nhất NCA(i, j).
d(i,j) = level(i) + level(j) - 2
×
level(NCA(i,j))
{ }
njjidis ,...2,1|),(max)(
==
∑
≤≤
=
nj
jidit
1
),()(
11
Tìm kiếm theo chiều rộng
12
Cây khung tối thiểu
-
Ý tưởng : Song song hoá thuật toán
của Prim-Dijkstra
-
Thực hiện :
+ Giả sử có
K
bộ xử lý p
1
, p
2
, …, p
K
+ Phân một tập con nút cho mỗi p
i
+ Tại mỗi bước tìm nút gần cây nhất
một cách song song => K nút =>
chọn nút gần nhất và quảng bá tới các
bộ xử lý
13
Thuật toán song song giải bài
toán k-median trên đồ thị
Giới thiệu bài toán
Thuật toán nhánh cận tuần tự
Thuật toán nhánh cận song song
14
Giới thiệu bài toán
Khởi nguồn từ thế kỷ 17, Fermat đưa ra một câu hỏi : Cho
một tam giác (với 3 đỉnh trên mặt phẳng), hãy tìm một điểm ( median)
trong mặt phẳng sao cho tối thiểu hóa tổng khoảng cách từ nó tới các
đỉnh.
Đầu thế kỷ 20, Alfred Weber tổng quát hóa : đưa thêm trọng
số vào đỉnh, số đỉnh n
≥
3, số median k
≥
1
Đầu năm 1960, Hakimi phát triển bài toán tìm k median trên
một đồ thị gồm n đỉnh. Phân ra làm 3 lớp bài toán : K-
median đơn thuần, UFLP , QAP.
Bài toán K-median trên đồ thị tổng quát là NP-khó.
15
Ví dụ minh họa
Có hai vị trí để đặt trạm
phục vụ. Trạm nào sẽ được
đặt :
Chúng ta muốn tối thiểu
hoá tổng khoảng cách từ
các trạm còn lại tới hai
trạm phục vụ.
16
Ví dụ minh họa
Làm sao để biết được
vị trí tối ưu mà không
phải duyệt qua tổ hợp
bộ k phần tử.
17
Mô hình toán học
min
→=
∑
ij
ijij
dZ
ξ
{ }
)4(1,0
)3(,.....,2,1,;
)2(
)1(,.....,2,1;1
∈
=∀≤
=
==
∑
∑
ij
iiij
i
ii
i
ij
nji
k
nj
ξ
ξξ
ξ
ξ
Với điều kiện
18
Các phương pháp đã giải quyết
19
Thuật toán nhánh cận
1. Khởi tạo : Tập hoạt động (tập các bài toán con chưa được duyệt) chứa bài toán ban
đầu, giá trị kỷ lục bằng ∞.
2. Lựa chọn : Lựa chọn và xoá một bài toán con khả thi từ tập hoạt động.
3. Phân nhánh :
i. Phân nhánh để sinh ra các bài toán con mới từ bài toán đang xét. Tính cận của các bài toán
con mới này.
ii. Kiểm tra các bài toán con vừa được sinh ra. Có hai trường hợp : (1) bài toán con đã được
giải quyết – đi tới bước 5, (2) bài toán con chưa được giải quyết – đi tới bước 4.
4. Cập nhật tập hoạt động : Đưa các bài toán con có cận nhỏ hơn kỷ lục tạm thời vào
tập hoạt động.
5. Cập nhật kỷ lục :
1. Nếu giá trị của bài toán con nhỏ hơn kỷ lục và khi đó nó sẽ thay thế kỷ lục. Ngược lại sẽ bị
xóa
2. Khi cập nhật kỷ lục mới (5i) thì tất cả các bài toán con trong tập hoạt động có cận dưới lớn
hơn hoặc bằng kỷ lục sẽ bị xóa
6. Kết thúc thuật toán : Lặp lại các bước từ 2-5 nếu tập hoạt động không rỗng. Ngược
lại, thì kết thúc thuật toán và lời giải tối ưu là giá trị kỷ lục
20
Thuật toán nhánh cận
1. Khởi tạo : Tập hoạt động (tập các bài toán con chưa được duyệt) chứa bài toán ban
đầu, giá trị kỷ lục bằng ∞.
2. Lựa chọn : Lựa chọn và xoá một bài toán con khả thi từ tập hoạt động.
3. Phân nhánh :
i. Phân nhánh để sinh ra các bài toán con mới từ bài toán đang xét. Tính cận của các bài toán
con mới này.
ii. Kiểm tra các bài toán con vừa được sinh ra. Có hai trường hợp : (1) bài toán con đã được
giải quyết – đi tới bước 5, (2) bài toán con chưa được giải quyết – đi tới bước 4.
4. Cập nhật tập hoạt động : Đưa các bài toán con có cận nhỏ hơn kỷ lục tạm thời vào
tập hoạt động.
5. Cập nhật kỷ lục :
1. Nếu giá trị của bài toán con nhỏ hơn kỷ lục và khi đó nó sẽ thay thế kỷ lục. Ngược lại sẽ bị
xóa
2. Khi cập nhật kỷ lục mới (5i) thì tất cả các bài toán con trong tập hoạt động có cận dưới lớn
hơn hoặc bằng kỷ lục sẽ bị xóa
6. Kết thúc thuật toán : Lặp lại các bước từ 2-5 nếu tập hoạt động không rỗng. Ngược
lại, thì kết thúc thuật toán và lời giải tối ưu là giá trị kỷ lục