Ngoài thuật toán Welch – Powell tuần tự đã đưa ra trong chương 2, để giải quyết nhanh bài toán tô màu, ta có thể tạo ra một tiến trình cho từng cách tô màu và sau đó các tiến trình phải kiểm tra xem cách tô đó có hợp lệ hay không.
Giả sử V = n , hay mô tảV = {v v0, ,...,1 vn-1} và ma trận liền kề A của đồ thị G có cấp n ´ n . Ta sẽ sử dụng n tiến trình trong đó tiến trình P i( )k sẽ thực hiện tô mầu với số hiệu ik cho đỉnh v kk( = 0,1,...,n - 1), với 1£ ik £ c. Như vậy ta có c´ n tiến trình để thực hiện việc tô mầu cho n đỉnh.
Bắt đầu tất cả các tiến trình gán giá trị 1 vào bảng đại diện có c´ n phần tử. Mỗi tiến trình sẽ phải thực hiện nhiều nhất là n´ (n - 1) phép so sánh màu của hai đỉnh kề nhau để kiểm tra xem chúng có cùng màu hay không. Nếu A j k[ , ]= 1 và
j k
i = i thì cách tô màu đó không hợp lệ vì hai đỉnh v vj, k liền kề nhau mà lại bị tô cùng màu. Nếu phát hiện ra cách tô màu không hợp lệ thì đặt bảng đại diện về 0. Sau khi thực hiện xong tất cả các phép đối chiếu mà bảng đại diện vẫn giữ nguyên giá trị 1 thì cách tô màu đó là hợp lệ.
Thuật toán tô màu đồ thị song song trên PRAM được xây dựng như sau:
Procedure Tomau_Pram ; Begin spawn( 0 1 1 ( , ,..., n ) P i i i - ), 0 ik c, 0 k c forall ( 0 1 1 ( , ,..., n ) P i i i - ) do Begin candidate[ 0, ,...,1 n 1 i i i - ] = 1; for (j = 0; j < n; j++) for (k = 0; k < n; k++) if (A[j][k] ==1 &&ij = = ik) candidate[i i0, ,...,1 in-1] = 0;
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
valid = sum(candidate); /* Tính tổng */ if (valid > 0)
printf(“Valid coloring exists!\n”); else
printf(“Valid coloring does notexist!\n”); end
end
Ví dụ: cho trước đồ thị có 3 đỉnh và 2 màu đơn giản
Cách tô màu Giá trị bắt đầu Sau khi kiểm tra
Hình 3.2 Thuật toán tô màu đồ thị song song trên PRAM
Đánh giá độ phức tạp của thuật toán:
Hiển nhiên để tạo ra c´ n , ta cần log(c´ n ) đơn vị thời gian. Mỗi tiến trình phải thực hiện hai vòng lặp, nghĩa là thực hiện 2
n phép so sánh. Như vậy độ phức tạp thời gian của thuật toán là
2 2 ( ) (log( )) ( ) ( ) O T = O c´ n + O n » O n 0, 0, 0 0, 0, 1 0, 1, 0 0, 1, 1 1, 0, 0 1, 0,1 1, 1, 0 1, 1, 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 2 +
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
PHẦN KẾT LUẬN
Nội dung chính của luận văn đặt vấn đề tìm hiểu một số thuật toán xử lý song song giải quyết một số bài toán tối ưu trên mô hình đồ thị. Các kết quả chính của luận văn bao gồm:
1. Trình bày tổng quan về một số vấn đề trong lý thuyết xử lý song song, các
mô hình xử lý, khái niệm về thuật toán và độ phức tạp của thuật toán song song, các ngôn ngữ lập trình song song.
2. Trình bày các khái niệm cơ bản về mô hình đồ thị, một số bài toán tối ưu
trên mô hình đồ thị và một số thuật toán dạng tuần tự giải quyết các bài toán tối ưu như thuật toán Kruskal, Prim giải bài toán tìm cây khung ngắn nhất, thuật toán Dijkstra, Floyd giải quyết bài toán tìm đường đi ngắn nhất. Lý thuyết về bài toán tô mầu đồ thị cùng thuật toán tuần tự.
3. Trên cơ sở các thuật toán tuần tự đã có. Luận văn đưa ra một số phương án
song song hóa các thuật toán tuần tự để giải quyết các bài toán trên chậy trên máy tính có nhiều bộ xử lý. Đối với mỗi thuật toán đều đưa ra đầy đủ việc đánh giá độ
phức tạp của thuật toán song song để thấy rõ tính hiệu quả của vấn đề xử lý song song.
Hướng phát triển tiếp theo của luận văn là tiếp tục nghiên cứu và đề xuất các thuật toán song song đối với các lớp bài toán khác trong toán học và tin học. Tiến hành thử nghiệm các thuật toán trên các hệ thống tính toán song song.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
TÀI LIỆU THAM KHẢO
[1] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc, Nhà xuất bản Giáo dục, 1999.
[2] Rosen K.H. Discrete Mathematíc and its Applications, McGraw-Hill Book Copany, 1999.
[3] Joseph JaJa, An Introduction to Parallel Algorithms, Addison - Wesley, 1992. [4] K. Mani Changdy, J. Misra, Parallel Program Design, Addison-Wesley, 1989. [5] Michael J. Quinn, Parallel Computing Theory and Practice, MaGraw-Hill,
1994.
[6] C. A. R. Hoare, Communicating Sequencatial Processes, Prentice Hall, 1985. [7] Barry Wilkingson, Michael Allen, Parallel Programming, Technigues and
Applications Using Networked Workstations and Parallel Computers, Prentice Hall New Jersey, 1999.
[8] M. Sasikumar, Dinesh Shikhare, P. Ravi Prakash, Introduction to Parallel Processing, Prentice - Hall, 2000.
[9] Seyed H. Roosta, Parallel Processing and Parallel Algorithms, Theory and Computation, Springer 1999.
[10] Shaharuddin Salleh, Albert Y. Zomaya, Scheduling in Parallel Computing Systems, Kluwer Academic Publisher, 1999.