Đạ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
Trang 1THUẬT TOÁN SONG SONG CHO MỘT SỐ BÀI TOÁN
TRÊN ĐỒ THỊ
Trang 2Nội dung
Trang 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
Trang 4Mộ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
Trang 5Phân loại các kiến trúc song song
EREW (Exclusive Read, Exclusive Write)
CRCW (Concurent Read Concurent Write)
Hệ đa xử lý với bộ nhớ phân tán
Trang 6 Độ phức tạp của bài toán
Trang 7Mộ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
Trang 8Một số thuật toán song song cơ
bản trên đồ thị
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ị,
Cây khung tối thiểu
Đường đi ngắn nhất đơn nguồn
Trang 9Duyệt cây có thứ tự tổng quát
Trang 10Tâm và median của cây
Ý tưởng : sử dụng thuật toán
song song tìm tổ tiên chung gần
j i d i
t
1
) , ( )
(
Trang 11Tìm kiếm theo chiều rộng
Trang 12Cây khung tối thiểu
của Prim-Dijkstra
-Thực hiện :
+ Giả sử có K bộ xử lý p1, p2, …, pK
+ Phân một tập con nút cho mỗi pi
+ 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ý
Trang 13Thuậ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
Trang 14Giớ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ó.
Trang 15Ví 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ụ.
Trang 16Ví 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ử.
Trang 17) 3 ( , ,
2 , 1 ,
;
) 2 (
) 1 ( , ,
2 , 1
; 1
i ii
i ij
n j
i k
n j
ξ ξ
ξ ξ
Với điều kiện
Trang 18Các phương pháp đã giải quyết
Trang 19i. 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
Trang 20i 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
Trang 21Thuật toán nhánh cận giải bài
toán k-median
Lựa chọn theo độ sâu
Lựa chọn cận tốt nhất đầu tiên
Phân nhánh : Nếu bài toán con có lời giải bộ phận là
a 1 a 2 …a i-1 thì nó sẽ được phân thành (n-m+i – a i-1 ) bài toán con với lời giải bộ phận tương ứng là (a 1 ,a 2 ,….,a i-1 +1); ……;
(a 1 ,a 2 ,… ,n-k+i)
Ví dụ : n = 10, k = 5; bài toán con hiện tại có lời giải bộ phận là
Trang 22Tính cận
Bài toán nới lỏng lagrage
Với điều kiện
Bài toán đối ngẫu
Với điều kiện
W
{ } 0 , 1 ( 4 )
) 3 ( , ,
2 , 1 ,
;
) 2 (
) 1 ( , ,
2 , 1
; 1
i k
n j
ξ
ξ ξ
) 7 ( , ,
2 , 1 ,
, 0
) 6 ( ,
, , 2 , 1 ,
) 5 (
0
, 1 1
i j n j
i
i j n
j i d
ij
ij ij
j
n
i j
j ij n
π σ
σ
Trang 23Thuật toán nhánh cận song song
Phân loại thuật toán nhánh cận song song
Lựa chọn kiến trúc thiết kế thuật toán song song
Thiết kế mô hình thuật toán song song
Trang 24Phân loại thuật toán nhánh cận song song
Song song loại 1 : Song song hóa các pha trong thuật toán tuần tự
Song song loại 2 : Thực hiện các hoạt động trên các bài toán con một cách đồng thời
Song song loại 3 : Một vài cây nhánh cận được xây dựng một cách song song
Trang 25Phân loại thuật toán nhánh cận song song
Song song loại 1 : Song song hóa các pha trong thuật toán tuần tự
trên các bài toán con một cách đồng thời
Song song loại 3 : Một vài cây nhánh cận được xây dựng một cách song song
Trang 26Lựa chọn kiến trúc
Trang 27Lựa chọn kiến trúc
Bộ nhớ phân tán Bộ nhớ dùng chung
Trang 28Thiết kế mô hình thuật toán nhánh cận song song
Quản lý tập bài toán con
Lược đồ thực hiện
Xây dựng hệ thống
Trang 29Quản lý tập bài toán con
Cân bằng số lượng : đảm bảo rằng không có bộ xử
lý nào được nghỉ ngơi trong khi các bộ xử lý khác có một số lượng lớn nút cần ước lượng.
Dò xét kết thúc : Khi hoàn tất quá trình tìm kiếm.
Cân bằng chất lượng : Đảm bảo các bộ xử lý đều khai thác nút có khả năng dễ dẫn tới lời giải tối ưu.
Trang 30Cân bằng số lượng
Ý tưởng : Khi tập hoạt động tại một bộ xử lý trở nên
rỗng, thì bộ xử lý có tập hoạt động lớn nhất sẽ gửi một phần công việc của nó tới bộ xử lý rỗng sao cho số lượng công việc trong hai bộ xử lý xấp xỉ nhau
Thực hiện : BXL có các nút , thì sẽ gửi tới BXL yêu cầu Trong đó
Bộ xử lý có tập hoạt động lớn nhất ? => Sử dụng một “bộ giám sát” trên máy chủ
Trang 31Dò xét kết thúc và cân bằng chất lượng
máy thợ đều rỗi.
trọng số đánh giá chất lượng tập hoạt động.
Thực hiện : nếu thì tráo đổi nút giữa hai bộ xử lý
ωmax, ωmin là chất lượng tập hoạt động cực đại, cực tiểu
∆ : dung sai chất lượng
Trang 32Sơ đồ hệ thống
Trang 33Thiết kế chương trình
Tổng quan hệ thống
Thuật toán nhánh cận tuần tự
Thuật toán nhánh cận song song
Kết quả thực nghiệm
Nhận xét và hướng phát triển
Trang 34Tổng quan hệ thống
Trang 35Thuật
toán
tuần
tự
Trang 36Lược đồ song song dữ liệu tập trung
Ý tưởng : Danh sách các bài toán con chưa được giải quyết lưu tại máy chủ, các bài toán con được rời và gửi tới các máy thợ Mỗi máy thợ khi nhận bài toán con tiến hành phân nhánh, tính cận và lưu vào một danh sách cục bộ Sau đó nó gửi tới máy chủ, máy chủ lúc này tiến hành nối các bài toán con nhận được tới kho dữ liệu tập
Trang 39Lược đồ song song dữ liệu phân tán
Ý tưởng : Mỗi máy thợ lưu một danh sách các bài toán con cục bộ Máy chủ chỉ gửi bài toán con đầu tiên tới một máy thợ rỗi ban đầu và sau đó không lưu trữ bất kỳ bài toán con nào mà chỉ thực hiện điều phối các bài toán con giữa các máy thợ
Cấu trúc dữ liệu : Danh sách liên kết
Thuật toán
Trang 42Floyd.dat kmedian.dat
Trang 43s
T N
Thời gian thực hiện thuật toán tuần
tự (T s giây)
Thời gian thực hiện thuật toán song song - Dữ liệu tập trung (Tp giây)
Hiệu suất Thời gian
thực hiện thuật toán song song - Dữ liệu phân tán (Tp giây)
Hiệu suất
Trang 45s
T N
Thời gian thực hiện thuật toán song song - Dữ liệu tập trung (Tp giây)
Hiệu suất Thời gian
thực hiện thuật toán song song - Dữ liệu phân tán (Tp giây)
Hiệu suất
Trang 47Hướng phát triển
Quá trình khởi tạo : mất nhiều thời gian, lãng phí tài nguyên
Giải pháp : Chia đều cho các bộ xử lý
Tính cận : Mới sử dụng phương pháp đối ngẫu bài toán nới lỏng lagrange
Trang 48Hướng phát triển (tiếp)
năng phát triển theo chiều rộng.
Giải pháp : sử dụng danh sách liên kết có kiểu như sau
Giải pháp : Sử dụng hệ thống gồm hai pha, pha thứ nhất
là thuật toán di truyền song song, pha thứ hai là thuật
Trang 49Hướng phát triển (tiếp)
Hoàn thiện hệ thống trở thành một khung chương trình sử dụng giải quyết các bài toán tối ưu dựa trên kỹ thuật nhánh cận.
Cài đặt tất cả các chiến lược trong các pha của thuật toán nhánh cận(như lựa chọn nút, ).
Xây dựng khung chương trình cho các kỹ thuật khác như thuật toán di truyền, chia để trị, qui hoạch động, và một số
kỹ thuật Heuristic
Xây dựng hệ thống trên mô hình bộ nhớ dùng chung.
Trang 50Kết luận
Hệ thống lại một số kiến thức đại cương về tính toán song song
Trình bày một cách hệ thống một số thuật toán song song cơ bản trên đồ thị
Đề xuất thuật toán tuần tự và thuật toán
song song để tìm lời giải chính xác cho bài toán k-median
Xây dựng và đánh giá hệ thống đã đề xuất