1. Trang chủ
  2. » Luận Văn - Báo Cáo

Song song hóa các thuật toán trên mạng đồ thị

105 345 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 1,82 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi xây dựng thuật toán tuần tự cho các bài toán trên mạng đồ thị, nếu dữ liệu đầu vào là lớn thì thuật toán tuần tự xử lý rất lâu hoặc có những trường hợp thuật toán tuần tự không thực

Trang 1

MỞ ĐẦU

1 Tính cấp thiết của việc nghiên cứu

Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng dụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những

năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Leonhard Euler

Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng bảy cây cầu ở thành

phố Konigsberg [35]

Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh hoặc cung nối các

đỉnh đó [35] Đây là công cụ hữu hiệu để mô hình hoá và giải quyết các bài toán trong nhiều lĩnh vực khoa học, kỹ thuật, kinh tế, xã hội,

Hơn nữa, để đáp ứng được nhu cầu thực tế trên các mạng lưới giao thông thì

đồ thị và mạng đồ thị phải được cải tiến, mở rộng cho phù hợp (ví dụ như mạng đồ thị truyền thống chỉ xét đến trọng số của các cạnh, các đỉnh một cách độc lập, trong

đó độ dài đường đi chỉ đơn thuần là tổng trọng số các cạnh và các đỉnh trên đường

đi đó Tuy nhiên, trong nhiều bài toán thực tế, trọng số tại một đỉnh không giống nhau với mọi đường đi qua đỉnh đó mà còn phụ thuộc vào cạnh đi đến và cạnh đi khỏi đỉnh đó) Vì vậy, việc xây dựng các mô hình về đồ thị và mạng đồ thị mở rộng

là rất cần thiết để đáp ứng được nhu cầu thực tế hiện nay

Hiện nay, ở trong nước cũng như thế giới việc xử lý song song đang được ứng dụng ở nhiều trung tâm tính toán lớn cũng như ở các trường đại học Nhiều nhà khoa học đã nghiên cứu lý thuyết về xử lý song song, các mô hình, các phương pháp để xử lý song song và đưa ra một số thuật toán song song điển hình Mặc dù

Trang 2

tốc độ xử lý của các bộ xử lý tăng nhiều trong những năm qua, nhưng do giới hạn

về vật lý nên khả năng tính toán của chúng không thể tăng mãi được Điều này, dẫn tới là muốn tăng được khả năng tính toán của các hệ thống tính toán thì đích cuối cùng là phải khai thác được khả năng xử lý song song của chúng

Khi xây dựng thuật toán tuần tự cho các bài toán trên mạng đồ thị, nếu dữ liệu đầu vào là lớn thì thuật toán tuần tự xử lý rất lâu hoặc có những trường hợp thuật toán tuần tự không thực hiện được Điều này, đòi hỏi phải phân tích dữ liệu, tìm sự phụ thuộc dữ liệu giữa các bước của thuật toán, phân tích câu lệnh, tìm hiểu các mô hình xử lý song song, hệ thống máy tính và ngôn ngữ lập trình để song song hóa các thuật toán tuần tự tương ứng

Vì thế, việc nghiên cứu các thuật toán tìm đường đi và các thuật toán tìm luồng cực đại trên mạng đồ thị truyền thống và đồ thị mở rộng là rất cần thiết Các ứng dụng thực tế cho các thuật toán này đòi hỏi phải xử lý với khối dữ liệu lớn, thời gian giảm đi so với thuật toán tuần tự Đặc biệt, với các mô hình thực tế thì dữ liệu càng ngày càng lớn Do đó, xây dựng các thuật toán này theo hướng song song hóa

từ các thuật toán tuần tự là đòi hỏi hết sức cần thiết Xuất phát từ đó chúng tôi chọn

vấn đề “Song song hóa các thuật toán trên mạng đồ thị” làm đề tài nghiên cứu

của luận án với hy vọng rằng những nghiên cứu của luận án không chỉ đóng góp về mặt lý luận và thực tiễn của các thuật toán song song đã được đề xuất mà còn góp phần làm nền tảng để tiếp tục xây dựng các thuật toán song song khác trên mạng đồ thị

2 Tổng quan tình hình nghiên cứu

Trên thế giới, vấn đề xử lý song song cũng được quan tâm từ rất lâu John Weley và Sons [40] đã giới thiệu cách xử lý song song và đánh giá độ phức tạp trong tính toán song song Michael J Quinn [41] đã nghiên cứu về lý thuyết tính toán

song song và thực nghiệm, ông đã xây dựng các mô hình tính toán song song và đưa

ra các thuật toán song song cơ bản Tiếp theo đó, Seyed H Roosta [37] đã xây dựng

các mô hình cấu trúc máy tính Từ đó, ông đưa ra kiến trúc để xử lý song song, cách thực hiện chương trình song song, cách thiết kế thuật toán song song và xây dựng

Trang 3

các thuật toán song song trên đồ thị như: thuật toán tô màu đồ thị, bài toán người du lịch, thuật toán tìm chu trình và thuật toán tìm cây khung nhỏ nhất trên đồ thị

Năm 2002, Behrooz Parhami [39] đã nghiên cứu rất kỹ tại sao phải xử lý

song song và đưa ra mô hình xử lý song song: PRAM, bộ nhớ phân tán, kiến trúc song song SIMD, MIMD… Đồng thời khẳng định tính khả thi của việc sử lý song

song Ông cũng đã nêu ra động cơ để thúc đẩy việc xử lý song song là rất cần thiết

Năm 2000, các tác giả M Sasikumar, Dinesh Shikhare, P Ravi Prakash [42] đã giới

thiệu về xử lý song song, phân tích các kiến trúc xử lý song song và xây dựng các

hệ thống tính toán song song trên đa bộ xử lý Từ những cơ sở lý thuyết trên, luận

án sẽ xác định được những vấn đề liên quan đến xử lý song song: cách xây dựng thuật toán song song, song song hóa thuật toán đã có, chọn ngôn ngữ lập trình song song, mô hình xử lý song song, hệ thống thực nghiệm thuật toán và đánh giá độ phức tạp về mặt thời gian

Các tác giả trong các công trình [45], [47], [48], [49], [50], [51], [52], [58], [59], [60], [61], [62] đã xây dựng các thuật toán song song trên đồ thị và mạng đồ

thị Đặc biệt, các thuật toán tìm đường đi ngắn nhất, tìm cây phủ nhỏ nhất và tìm

luồng cực đại Đây là các thuật toán cơ bản trên đồ thị Các tác giả đã phân tích thuật toán tuần tự, chọn hệ thống máy tính để thực hiện song song, xây dựng thuật toán song song, chứng minh tính đúng đắn và chỉ ra độ phức tạp của thuật toán song

song Các tác giả hầu hết đều phân tích và so sánh mức độ tăng tốc (speedup) của

thuật toán song song so với thuật toán tuần tự thông qua biểu đồ hoặc bảng biểu

Bài toán tìm luồng cực đại trên mạng đồ thị là một trong số những bài toán tối ưu trên đồ thị được ứng dụng rộng rãi trong thực tế cũng như những ứng dụng thú vị trong lý thuyết tổ hợp Bài toán được đề xuất và giải quyết bởi hai nhà toán

học Mỹ Ford and Fulkerson [53], các tác giả đã dùng phương pháp đường đi tăng

luồng để tìm luồng cực đại Bài toán này sau đó được các nhà khoa học quan tâm

nghiên cứu Edmonds và Karp [54] đưa ra phương pháp khác Tuy nhiên, A Goldberg và R.E Tarjan [55] đã đề xuất phương pháp đẩy luồng trước Phương pháp này đề xuất cách tiếp cận khác để giải bài toán tìm luồng cực đại Khái niệm

Trang 4

mới ở đây là luồng trước Luồng trước là tập hợp các luồng trên cung , trong đó có

thể chấp nhâ ̣n tồn ta ̣i đỉnh có luồng vào lớn hơn luồng ra Trong phương pháp này , các tác giả duy trì các luồng trước cực đa ̣i và hiê ̣u chỉnh chúng thành luồng Mới

đây nhất, các phương pháp mới tìm luồng cực đại cũng đã được nghiên cứu [2] [3],

[4], [5], [6], [7], [8]

Các thuật toán song song tìm luồng cực đại cũng đã được nghiên cứu Năm

1988, A Goldberg và R.E Tarjan [57] đưa ra ý tưởng để xây dựng thuật toán song song Năm 1992, Anderson R J and Jo A C S [58] đã xây dựng thuật toán song song tìm luồng cực đại bằng phương pháp đẩy luồng trước Tiếp theo đó, Bader D and Sachdeva V [59] đã phát triển thuật toán song song bằng phương pháp đẩy

luồng trước theo các hướng khác nhau nhằm làm giảm thời gian tính toán của thuật

toán cũng như tận dụng được cấu trúc đa bộ xử lý Năm 2008, Hong B đã công bố

công trình [60], đây cũng là thuật toán song song cho bài toán tìm luồng cực đại

bằng phương pháp đẩy luồng trước Năm 2010, Zhengyu He, Bo Hong đã xây dựng thuật toán song song trong môi trường GPU dùng ngôn ngữ CUDA [61] Từ các

công trình đã phân tích ở trên, luận án sẽ tối ưu thuật toán song song đẩy luồng trước tìm luồng cực đại được kế thừa từ [61], đề xuất thuật toán song song hỗn hợp đẩy kéo luồng tìm luồng cực đại sao cho giảm được thời gian tính toán so với các thuật toán khác

Hơn nữa, trong thực tế cần xây dựng mạng đồ thị mở rộng, từ đó xây dựng thuật toán tìm luồng cực đại đồng thời chi phí giới hạn trên mạng giao thông mở rộng để giải quyết bài toán phân luồng giao thông Tuy nhiên, trên thực tế mạng lưới giao thông rất phức tạp nên việc thực hiện tuần tự sẽ tốn rất nhiều thời gian với

dữ liệu đầu vào lớn Do đó, chúng tôi sẽ đề xuất thuật toán song song tìm đường đi ngắn nhất trên đồ thị mở rộng và thuật toán song song tìm luồng cực đại đồng thời chi phí giới hạn trên mạng giao thông mở rộng

Tóm lại, xuất phát từ nhu cầu thực tế và kế thừa nghiên cứu trước đó Luận

án xác định rõ các nội dung cụ thể về lý thuyết như: Kiến trúc xử lý song song, mô hình xử lý song song và phân tích sự phụ thuộc dữ liệu Từ đó, đề xuất thuật toán

Trang 5

song song, tìm môi trường lập trình song song, hệ thống thực nghiệm, lập trình song song và cách đánh giá độ phức tạp thời gian tính toán song song Bên cạnh đó, luận

án sẽ đề xuất các thuật toán song song mới từ các thuật toán tuần tự tương ứng để làm giảm thời gian tính toán khi dữ liệu đầu vào lớn Đồng thời, luận án tối ưu thuật toán song song đẩy luồng trước tìm luồng cực đại dựa vào sự tồn tại của các nghiên cứu đã công bố như: vấn đề chia dữ liệu, môi trường thực nghiệm và đưa ra ví dụ minh họa Các thuật toán trong luận án là song song về dữ liệu, phân chia dữ liệu cho các bộ xử lý để các bộ xử lý cùng đồng thời thực hiện các công việc được giao Hay nói cách khác, song song dữ liệu là song song mà trong đó tập trung vào phân phối dữ liệu qua các bộ xử lý tính toán khác nhau để được xử lý song song

3 Mục tiêu của luận án

- Phân tích đánh giá về mặt lý thuyết và thuật toán để tìm ra các hạn chế của thuật toán song song trên mạng đồ thị Từ đó, cải tiến những hạn chế của thuật toán song song đã có

- Đề xuất, phân tích các thuật toán tuần tự về mặt câu lệnh và dữ liệu để đề xuất các thuật toán song song tương ứng

4 Đối tƣợng và phạm vi nghiên cứu

Đối tượng nghiên cứu

- Luận án nghiên cứu lý thuyết xử lý song song, các mô hình tính toán song song

- Luận án nghiên cứu lý thuyết đồ thị, chủ yếu là bài toán tìm đường đi ngắn nhất trên đồ thị mở rộng, các thuật toán tìm luồng cực đại trên trên mạng đồ thị truyền thống và mạng đồ thị mở rộng

Phạm vi nghiên cứu

- Đề xuất thuật toán song song tìm đường đi ngắn nhất trên đồ thị mở rộng

- Tối ưu thuật toán song song tìm luồng cực đại bằng phương pháp đẩy luồng trước từ thuật toán song song đã có

- Đề xuất thuật toán song song tìm luồng cực đại bằng phương pháp hỗn hợp đẩy kéo luồng

Trang 6

- Đề xuất thuật toán song song tìm luồng cực đại đồng thời chi phí giới hạn trên mạng giao thông mở rộng

5 Phương pháp nghiên cứu

- Tổng hợp, phân tích các kết quả nghiên cứu trước đây từ đó rút ra, tìm ra các vấn đề cần phải giải quyết và đút rút các phương pháp giải quyết vấn đề

- Tìm các phương pháp mở rộng bài toán, cải tiến, xây dựng các thuật toán mới để giải quyết các vấn đề đặt ra

- Từ thực nghiệm đến chứng minh bằng phương pháp toán học để chỉ ra tính vượt trội của cấu trúc mới, thuật toán mới

6 Điểm mới của luận án

- Đề xuất thuật toán song song tìm đường đi ngắn nhất trên đồ thị mở rộng Chúng tôi đề xuất thuật toán này để ứng dụng cho mạng giao thông phù hợp với thực tế Từ đó, phân tích độ phức tạp thời gian và đưa ra ví dụ minh họa rõ ràng

- Tối ưu thuật toán song song tìm luồng cực đại bằng phương pháp đẩy luồng trước từ thuật toán song song đã có Điểm mới ở đây là phân tích dữ liệu, chia dữ liệu cụ thể cho các bộ xử lý Phần thực nghiệm được thực hiện rõ ràng, chương trình được xây dựng trên hệ thống cụm máy tính Các kết quả được bình luận và so sánh

cụ thể

- Đề xuất thuật toán song song tìm luồng cực đại bằng phương pháp hỗn hợp đẩy kéo luồng Chúng tôi kết hợp thuật toán đẩy luồng trước và thuật toán kéo luồng sau để xây dựng thuật toán song song Các định lý liên quan đến thuật toán được chứng minh và các ví dụ minh họa được xây dựng cụ thể Do tính độc lập của thuật toán đẩy và kéo luồng nên thời gian thực hiện thuật toán song song giảm so với thời gian thực hiện của các thuật toán song song khác

- Đề xuất thuật toán song song tìm luồng cực đại đồng thời chi phí giới hạn trên mạng giao thông mở rộng Để giảm thời gian tính toán của thuật toán, chúng tôi

đã xây dựng thuật toán song song tìm luồng cực đại chi phí giới hạn Các định lý liên quan đến thuật toán được chứng minh Thuật toán song song làm giảm nhiều thời gian so với thuật toán tuần tự

Trang 7

7 Kết quả nghiên cứu

- Luận án đã đề xuất được các thuật toán song song mới trên cơ sở các yêu cầu thực tế đặt ra, chứng minh tính đúng đắn, phân tích độ phức tạp thời gian của thuật toán Đồng thời luận án cũng song song hóa thuật toán đã có, từ đó chỉ ra các

ưu điểm so với thuật toán đã có trước

- Luận án cũng đã xây dựng được chương trình thực nghiệm trên các hệ thống song song khác nhau Từ đó, đưa ra các số liệu cụ thể để: đánh giá, so sánh kết quả đạt được của thuật toán song song so với thuật toán tuần tự và so sánh với các thuật toán song song đã có trước đó

8 Bố cục của luận án

Ngoài phần mở đầu, kết luận, tài liệu tham khảo, luận án được trình bày thành ba chương cơ bản như sau:

Chương 1: Xử lý song song

Nội dung trong chương này chủ yếu trình bày lý thuyết về xử lý song song: kiến trúc song song, các mô hình về xử lý song song, cách xây dựng thuật toán song song và cách đánh giá độ phức tạp thời gian của thuật toán song song

Chương 2: Các thuật toán tuần tự và song song trên mạng đồ thị truyền thống

Nội dung thứ nhất trong chương này chủ yếu tối ưu thuật toán song song đẩy luồng trước tìm luồng cực đại được kế thừa từ các công trình đã được nghiên cứu Nội dung thứ hai, đề xuất thuật toán tuần tự hỗn hợp đẩy kéo luồng Từ đó, đề xuất thuật toán song song mới cho thuật toán hỗn hợp này

Chương 3: Một số thuật toán song song tìm đường đi ngắn nhất và tìm luồng cực đại trên mạng đồ thị mở rộng

Nội dung trong chương này chủ yếu kế thừa các thuật toán tuần tự để đề xuất các thuật toán song song tìm đường đi ngắn nhất trên đồ thị mở rộng và thuật toán song song tìm luồng cực đại chi phí giới hạn trên mạng giao thông mở rộng

Trang 8

CHƯƠNG 1 XỬ LÝ SONG SONG

Trong chương này, chúng tôi sẽ trình bày lý thuyết về xử lý song song: kiến trúc song song, các mô hình về xử lý song song, cách xây dựng thuật toán song song và cách đánh giá độ phức tạp thời gian của thuật toán song song Trên cơ sở

đó, chúng tôi đề xuất các thuật toán song song trong các chương tiếp theo Nội dung của chương này chủ yếu được kế thừa từ các tài liệu [1], [37], [39], [41]

1.1 Giới thiệu về xử lý song song

Các ứng dụng của lý thuyết đồ thị là rất lớn và rất phong phú trong nhiều lĩnh vực khác nhau như: kinh tế, giao thông, truyền thông, điện tử, y khoa… Vì vậy, các bài toán trên đồ thị cần phải xử lý với dữ liệu đầu vào là rất lớn để đáp ứng nhu cầu thực tế Do vậy, cần xây dựng các bài toán này theo hướng song song để giảm thời gian tính toán

Những vấn đề về xử lý ngôn ngữ tự nhiên, nhận dạng, xử lý ảnh ba chiều, dự báo thời tiết, mô hình và mô phỏng những hệ thống lớn trong thực tế đều đòi hỏi phải xử lý dữ liệu với tốc độ rất cao và khối lượng dữ liệu rất lớn Do đó, cần phải

có những hệ thống máy tính thật mạnh mới thực hiện được những yêu cầu trong thực tế một cách nhanh chóng và hiệu quả Điều này còn gặp nhiều khó khăn do khả năng giới hạn về vật lý Vì vậy, hướng xử lý song song là dùng các hệ thống máy tính đa bộ xử lý hoặc bộ xử lý đa nhân được lựa chọn để giải quyết các bài toán đặt

ra

Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một vấn đề, nói chung là thực hiện tính toán trên những hệ thống đa bộ xử lý [1]

Tính toán song song là một hình thức tính toán trong đó nhiều phép tính được thực hiện đồng thời,hoạt động trên nguyên tắc là những vấn đề lớn đều có thể chia thành nhiều phần nhỏ hơn để giải quyết đồng thời trên các bộ xử lý Các bộ xử

lý cùng kết hợp với nhau để giải quyết cùng một vấn đề cho nên giảm được thời gian xử

lý, vì mỗi thời điểm có thể có nhiều phép toán được thực hiện đồng thời

Trang 9

Phần lớn các hệ điều hành ngày nay đều đã hỗ trợ đa xử lý, đa nhiệm và cho

phép nghiên cứu, khai thác các phương pháp lập trình song song Bằng cách tăng số lượng bộ xử lý, ta hy vọng sẽ thực hiện nhiều công việc hơn với thời gian ít hơn so với hệ điều hành đơn bộ xử lý Hệ đa xử lý cho phép chia các công việc thành các phần nhỏ giao cho các bộ xử lý đảm nhận, cho phép tích hợp các hệ thống máy tính

đã có để tạo ra các hệ thống mới với sức mạnh tăng rất nhiều lần

Một trong các mục đích chính của xử lý song song là thực hiện tính toán nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời Cùng với tốc độ xử lý nhanh hơn, việc xử lý song song cũng sẽ giải được những bài toán phức tạp và yêu cầu khối lượng tính toán lớn

1.2 Kiến trúc máy tính song song

Theo Michael Flynn [79] và Seyed H Roosta [37], kiến trúc máy tính được

- MISD (Multiple Instructions Stream, Single Data Stream): Máy tính nhiều luồng lệnh, một luồng dữ liệu Máy tính loại MISD là ngược lại với SIMD Máy tính MISD có thể thực hiện nhiều lệnh trên cùng một mục dữ liệu Đây là lớp các máy

tính yêu cầu những đơn vị xử lý khác nhau có thể nhận được những chỉ lệnh khác nhau để thực hiện trên cùng một mục dữ liệu

- MIMD (Multiple Instruction Stream, Multiple Data Stream): Máy tính nhiều luồng lệnh, nhiều luồng dữ liệu Các máy MIMD nổi lên và được xem như

Trang 10

một kiến trúc đương nhiên phải chọn cho các máy nhiều bộ xử lý dùng trong các ứng dụng thông thường, một tập hợp các bộ xử lý thực hiện một chuỗi các lệnh

khác nhau trên các tập hợp dữ liệu khác nhau Máy tính loại MIMD còn gọi là đa bộ

xử lý Trong đó, mỗi bộ xử lý có thể thực hiện những luồng lệnh khác nhau trên các

luồng dữ liệu riêng Hầu hết các hệ thống MIMD đều có bộ nhớ riêng

1.2.1 Kiến trúc song song SIMD

Trong một máy SIMD, nhiều thành phần xử lý được giám sát bởi một đơn vị

điều khiển Tất cả những thành phần xử lý đều nhận cùng mệnh lệnh từ đơn vị điều khiển nhưng lại thực hiện trên những tập dữ liệu khác nhau và đến từ những luồng

dữ liệu khác nhau Một máy SIMD có những đặc điểm sau: xử lý phân tán trên một

số lượng lớn phần cứng, thực hiện đồng thời trên nhiều thành phần dữ liệu khác nhau và thực hiện cùng một câu lệnh trên các thành phần dữ liệu Mô hình kiến trúc

song song SIMD được Seyed H Roosta trình bày ở [37, tr 6] như trong Hình 1.1

1.2.2 Kiến trúc song song MIMD

Một máy tính MIMD là một hệ thống nhiều bộ xử lý và nhiều bộ nhớ, trong

đó mỗi bộ xử lý có một đơn vị xử lý riêng và thực hiện chương trình riêng Các bộ

xử lý thực hiện nhiều câu lệnh khác nhau trên các tập dữ liệu khác nhau, chia sẻ tài

nguyên chứa trong hệ thống bộ nhớ chính Các hệ thống MIMD thực hiện các phép

toán theo dạng song song không đồng bộ [34], [37]

Hình 1.1 Mô hình kiến trúc song song SIMD

Phần tử

xử lý 2

Tín hiệu điều khiển

Bộ nhớ Kết quả

dữ liệu n

Luồng

dữ liệu 2 Luồng

dữ liệu 1

Trang 11

Mô hình MIMD gồm hai loại: loại các bộ kết nối chặt và loại các bộ kết nối

rời tùy thuộc vào cách thức mà các bộ xử lý truy cập vào bộ nhớ

Những bộ xử lý kết nối chặt được chia sẻ từ một hệ thống bộ nhớ chung

được hiểu là hệ thống chia sẻ bộ nhớ Mô hình này được Seyed H Roosta trình bày

ở [37, tr 24] như trong Hình 1.2

Đối với hệ thống MIMD kết nối rời chia sẻ từ bộ nhớ hệ thống nhưng mỗi bộ

xử lý có một bộ nhớ riêng được hiểu như hệ thống truyền thông điệp Những máy tính truyền thông điệp gửi đến nhiều máy tính trong đó mỗi bộ xử lý có bộ nhớ

riêng và chỉ truy cập đến bộ xử lý đó Mô hình này được Seyed H Roosta trình bày

Trang 12

1.2.3 Mô hình máy tính PRAM

PRAM (Parallel Random Access Machine) là mô hình máy truy cập ngẫu nhiên song song được đưa ra bởi Fortune và Wyllie [80] vào năm 1978 và được đề

cập, phát triển nhiều trong [37], [39], [41] Thông thường khi xây dựng các thuật toán song song, chúng ta quy ước là phát triển thuật toán cho mô hình trừu tượng này

PRAM không phải là một môi trường thực thi cụ thể (mang tính vật lý), mà là một mô hình máy tính song song trừu tượng với cấu trúc bao gồm: k bộ xử lý có bộ

nhớ cục bộ riêng, một bộ nhớ dùng chung với một mô hình truy xuất bộ nhớ phải

được quy định (ví dụ, CREW – Concurrent Read, Exclusive Write - Cho phép xung

đột đọc và không cho phép xung đột ghi [37, tr 62]) và thời gian liên lạc là không

có Xử lý được bắt đầu với đầu vào lưu trong bộ nhớ toàn cục và một bộ xử lý được kích hoạt Tại mỗi bước, một bộ xử lý đang hoạt động có thể thực hiện một trong các thao tác: đọc dữ liệu từ bộ nhớ riêng cục bộ hay bộ nhớ toàn cục, ghi dữ liệu vào bộ

nhớ riêng cục bộ hay toàn cục hoặc kích hoạt bộ xử lý khác Các mô hình PRAM khác

nhau ở chỗ làm thế nào để giải quyết được các xung đột từ thao tác ghi và đọc vào bộ nhớ toàn cục

Theo Seyed H Roosta [37], Behrooz Parhami [39] và Michael J Quinn [41],

mô hình PRAM chia thành 3 loại:

- EREW (Exclusive Read, Exclusive Write): Không cho phép xung đột đọc và

ghi [37, tr 62-63]

- CREW (Concurrent Read, Exclusive Write): Cho phép xung đột đọc và

không cho phép xung đột ghi Tại cùng một thời điểm, nhiều bộ xử lý có thể đọc đến cùng một địa chỉ trong bộ nhớ toàn cục nhưng không có quá một bộ nhớ được phép ghi [37]

- CRCW (Concurrent Read, Concurrent Write):Cho phép xung đột đọc và

cho phép xung đột ghi Tại cùng một thời điểm, nhiều bộ xử lý có thể đọc hoặc ghi

cùng một địa chỉ trong bộ nhớ toàn cục [37] Mô hình PRAM được Michael J Quinn biểu diễn trong [41] như trong Hình 1.4

Trang 13

Với mô hình trừu tượng này thì độ phức tạp của một thuật toán song song

mới định nghĩa được Chú ý, như đã nói ở trên, mô hình PRAM không có thời gian

liên lạc, nhưng độ phức tạp sẽ được quy ra số bước để gửi và nhận kết quả

Độ phức tạp được quy ra số bước để gửi và nhận kết quả được đánh giá theo

hàm log Ví dụ, trong [37, tr 273-274] Seyed H Roosta đã phân tích, chứng minh được thời gian tính của thuật toán song song ký hiệu T k trên k bộ xử lý tìm cây khung (spanning tree) trên đồ thị n đỉnh là: T k = O(n2/k)+O(n log k) Với O(n log k)

là độ phức tạp bởi số bước gửi và nhận kết quả, O(n2/k) là thời gian tính toán Tương tự như vậy, Hua Wang [51] đã đề xuất thuật toán song song tìm đường đi

ngắn nhất của mọi cặp đỉnh trên đồ thị Ông cũng đã chỉ ra độ phức tạp bởi số bước

gửi và nhận kết quả là O(n2log k) và thời gian tính toán là O(n3/k)

Tuy nhiên, cần lưu ý rằng thời gian tính toán và thời gian truyền thông được quy định bởi số bước gửi và nhận kết quả là để phân tích đánh giá thời gian thực hiện song song, còn về mặt lý thuyết thì độ phức tạp của thuật toán tuần tự và song song là như nhau

Hơn nữa, thời gian thực hiện thuật toán song song trong môi trường thực tế còn phụ thuộc vào rất nhiều tham số khác như: kích cỡ thông điệp, cấu hình kết nối

Trang 14

mạng đường truyền và cách thức truyền thông điệp

Khi thực nghiệm thì không thể lặp lại mô hình PRAM trừu tượng, và do đó

phát sinh rất nhiều loại phí tổn khác nhau như đã đề cập ở trên Do có nhiều loại phí

tổn nên rõ ràng là mức độ tăng tốc (speedup) không thể lên cao được khi tăng số

lượng bộ xử lý lên nhiều lần

Như vậy, mục đích của mô hình PRAM là để xây dựng mô hình lý thuyết

Dựa trên mô hình này, chúng ta có thể đánh giá độ phức tạp về mặt thời gian của

thuật toán Đây là mô hình tổng quát cho máy tính song song kiểu MIMD

1.3 Thuật toán song song

1.3.1 Quy trình thiết kế thuật toán song song

Song song hóa thuật toán là chuyển một thuật toán tuần tự đã có thành một thuật toán song song Quy trình thiết kế thuật toán song song thực hiện qua bốn

công đoạn: phân rã (Partition), truyền thông (Communication), tích tụ (Agglomeration) và ánh xạ (Mapping) [37]

- Phân rã: Khi bài toán được xác định, công việc tính toán và dữ liệu của bài toán

được phân rã thành nhiều tác vụ Ta cố gắng chú trọng vào việc xác định được nhiều tác vụ càng nhiều càng tốt nếu có thể Số lượng tác vụ có thể lớn hơn nhiều so với số lượng bộ xử lý để linh hoạt hơn khi áp dụng vào mô hình thực tế Trong giai đoạn này ta chưa đề cập đến vấn đề truyền thông, cấu trúc máy tính song song mà chỉ đề cập đến việc xác định được các khả năng thực hiện song song của bài toán Mục đích của công đoạn này là ta tìm ra tập các tác vụ độc lập với nhau của bài toán

và chú ý việc kết hợp dữ liệu, xác định kết hợp tính toán với dữ liệu như thế nào

- Truyền thông: Công đoạn truyền thông được thể hiện thông qua luồng thông tin

sao cho các tác vụ được tạo ra trong công đoạn trên sẽ được thực hiện đồng thời Tính toán thực hiện trong một tác vụ thường sẽ yêu cầu dữ liệu kết hợp với các dữ liệu khác Sau đó, dữ liệu phải được truyền giữa các tác vụ để cho phép thực hiện tính toán

- Tích tụ: Công đoạn này sẽ gộp các tác vụ nhỏ đã tạo ra ở công đoạn phân rã thành

các tác vụ có kích thước lớn hơn Khi tích tụ các tác vụ nhỏ thành các tác vụ lớn thì

Trang 15

chi phí truyền thông sẽ giảm đi nhưng sẽ làm giảm tiềm năng thực hiện đồng thời

- Ánh xạ: Đây là công đoạn cuối cùng, mỗi tác vụ sẽ được ấn định vào một bộ xử lý

Trang 16

1.3.2 Nguyên lý thiết kế thuật toán song song

Những thuật toán, trong đó có một số thao tác có thể thực hiện đồng thời

được gọi là thuật toán song song Tổng quát hơn, thuật toán song song là một tập

các tiến trình hoặc các tác vụ có thể thực hiện đồng thời và có thể trao đổi dữ liệu

với nhau để kết hợp cùng giải một bài toán đặt ra

Có năm nguyên lý chính trong thiết kế thuật toán song song [1]:

1 Các nguyên lý lập lịch: Tạo lịch trình để giảm tối thiểu các bộ xử lý sử dụng

trong thuật toán sao cho thời gian tính toán là không tăng (xét theo khía cạnh độ phức tạp)

2 Nguyên lý hình ống: Nguyên lý này được áp dụng khi bài toán xuất hiện một dãy các thao tác {T1, T2, , Tn}, trong đó T i+1 thực hiện sau khi T i kết thúc

3 Nguyên lý chia để trị: Chia bài toán thành những phần nhỏ hơn tương đối độc

lập với nhau và giải quyết chúng một cách song song

4 Nguyên lý đồ thị phụ thuộc dữ liệu: Phân tích mối quan hệ dữ liệu trong tính

toán để xây dựng đồ thị phụ thuộc dữ liệu và dựa vào đó để xây dựng thuật toán song song

5 Nguyên lý điều kiện tương tranh : Nếu hai tiến trình cùng muốn truy cập vào

cùng một mục dữ liệu chia sẻ thì chúng phải tương tranh với nhau, nghĩa là chúng có thể cản trở lẫn nhau

Ngoài những nguyên lý nêu trên, khi thiết kế thuật toán song song còn một

số điểm cần quan tâm:

1 Hiệu quả thực hiện của thuật toán song song có thể rất khác nhau, mà yếu tố quan trọng nhất ảnh hưởng tới độ phức tạp tính toán là cấu hình tô pô liên kết mạng

2 Thuật toán song song phải được thiết kế dựa trên những kiến thức về kiến trúc máy tính, ngôn ngữ lập trình song song và các phương pháp tính toán

1.3.3 Các cách tiếp cận trong thiết kế

Có ba cách tiếp cận để thiết kế thuật toán song song:

1 Thực hiện song song hoá những thuật toán tuần tự, biến đổi những cấu trúc

Trang 17

tuần tự để tận dụng được những khả năng song song tự nhiên của tất cả các thành phần trong hệ thống xử lý

2 Thiết kế những thuật toán song song mới phù hợp với kiến trúc song song

3 Xây dựng những thuật toán song song từ những thuật toán song song đã được xây dựng cho phù hợp với cấu hình tô pô mạng và môi trường song song thực tế

1.3.4 Phân tích, đánh giá thuật toán song song

Độ phức tạp tính toán về thời gian của thuật toán song song không chỉ phụ thuộc vào kích cỡ của dữ liệu đầu vào mà còn phụ thuộc vào kiến trúc máy tính

song song và số lượng các bộ xử lý được phép sử dụng trong hệ thống

Độ phức tạp thời gian là thước đo quan trọng nhất đánh giá mức độ hiệu quả

của thuật toán song song Độ phức tạp thời gian của thuật toán song song được xác

định bởi số các phép toán cơ sở và số các bước truyền tải dữ liệu giữa các bộ xử lý với nhau Từ đó suy ra, độ phức tạp thời gian của thuật toán song song không chỉ phụ thuộc vào mô hình tính toán song song mà còn phụ thuộc vào số bộ xử lý được

sử dụng

Mức độ tăng tốc (Speedup) [37, tr 228-231] của thuật toán song song sử dụng p bộ xử lý được xác định như sau:

S p = T S /T p (1) Trong đó,

T S là thời gian thực hiện tính toán trên một bộ xử lý

T p là thời gian thực hiện tính toán trên p bộ xử lý

Để sử dụng hiệu quả các thuật toán song song, chúng ta cần phải biết cách đánh giá nó

Để đánh giá được độ phức tạp tính toán của các thuật toán song song, ngoài

số bước tính toán chúng ta còn cần đánh giá thời gian truyền thông của các tiến

trình Thời gian thực hiện song song, ký hiệu là t p gồm hai phần t comp và t comm

t p = t comp + t comm (2)

Trong đó, tcomp là thời gian tính toán và t comm thời gian truyền thông dữ liệu

Trang 18

1.4 Kết luận chương

Để giải những bài toán đặt ra một cách hiệu quả trên những máy tính mà chúng ta có, vấn đề chính là làm thế nào để xây dựng được những thuật toán song song Cách làm khá thông dụng là biến đổi các thuật toán tuần tự về song song, hay chuyển từ một dạng song song về dạng song song phù hợp hơn nhưng vẫn bảo toàn được tính tương đương trong tính toán

Dựa vào bốn công đoạn và những nguyên lý thiết kế chính: nguyên lý lập lịch, nguyên lý hình ống, nguyên lý chia để trị, nguyên lý đồ thị phụ thuộc dữ liệu, nguyên lý điều kiện tranh đua để xây dựng một số thuật toán song song

Để đánh giá được tính hiệu quả của thuật toán song song thường phải dựa vào độ phức tạp thời gian của thuật toán Độ phức tạp thời gian của thuật toán song song không chỉ phụ thuộc vào kích cỡ của dữ liệu đầu vào mà còn phụ thuộc vào kiến trúc máy tính song song và số lượng các bộ xử lý được phép sử dụng trong hệ thống

Trang 19

CHƯƠNG 2 CÁC THUẬT TOÁN TUẦN TỰ VÀ SONG SONG TRÊN MẠNG ĐỒ THỊ TRUYỀN THỐNG

Nội dung chính trong chương này gồm hai phần: Phần thứ nhất là kế thừa thuật toán tuần tự và song song đẩy luồng trước tìm luồng cực đại đã được nghiên cứu trong [55], [56] [61] Từ đó, chúng tôi tối ưu thuật toán song song đẩy luồng trước này Phần thứ hai, đề xuất thuật toán tuần tự hỗn hợp đẩy kéo luồng Dựa vào

đó, đề xuất thuật toán song song cho thuật toán hỗn hợp đẩy kéo luồng để tìm luồng cực đại

Đồ thị ở Hình 2.1 là mạng với nguồn là đỉnh a và đích là đỉnh z, ta có khả năng thông qua c a, b =3, c b, c =2, c a, d =5, c d, c =2, c d, e =2, c c, z =4, c e, z=4

Trang 20

(i) 0 f i, j c i, j(i, j)E (4) (ii) Với mọi đỉnh k không phải nguồn hoặc đích

j k E

k (

Với mọi đỉnh kV, tổng

E k i

k if

) , (

, gọi là luồng vào của đỉnh k và tổng

i z E

i

z i E

a i

a i E

i a

i

f

i) , (

, z)

, (

, )

, (

, )

, (

i z E

z i

z i E

a i

a i E

i a

i

f f

v

) , (

, )

, (

, )

, (

, )

, (

,)

2.2 Bài toán luồng cực đại

Trong thực tế ta thường gặp bài toán gọi là bài toán tìm luồng cực đại như sau: Cho mạng G với nguồn a, đích z và khả năng thông qua c i, j , (i, j)E Trong số

Trang 21

các luồng trên mạng G tìm luồng có giá trị lớn nhất

Bài toán luồng cực đại có thể biểu diễn như bài toán quy hoạch tuyến tính [3]

( ) max

) ( )

i a

i

f f

(

a V k f

f

E k

j k E

k i

i a

c f

v

) (

)( và tồn tại luồng {f i, j = 0, (i, j)E} nên

theo lý thuyết quy hoạch tuyến tính, tồn tại luồng cực đại

2.3 Thuật toán đẩy luồng trước tìm luồng cực đại

2.3.1 Thuật toán tuần tự

Trong mục này, chúng tôi chủ yếu trình bày các nội dung liên quan đến thuật toán tuần tự đẩy luồng trước Nội dung được kế thừa từ [55], [56] nhưng xây dựng lại các bước của thuật toán cụ thể hơn Chứng minh các định lý và mệnh đề liên quan đến thuật toán một cách đầy đủ và rõ ràng

2.3.1.1 Giới thiệu

Bài toán tìm luồng cực đại được đề xuất và giải quyết bởi hai nhà toán học

Mỹ Ford và Fulkerson [53] và ngày càng được các nhà khoa học quan tâm nghiên cứu Edmonds và Karp [54] đưa ra phương pháp với độ phức tạp O(V.E2) Tuy nhiên, A Goldberg và R.E Tarjan [55] đã xây dựng phương pháp đẩy luồng trước

với độ phức tạp O(V2

.E) Trong phần tiếp theo, chúng tôi sẽ trình bày chi tiết thuật toán đẩy luồng trước tìm luồng cực đại được kế thừa từ [55], [56]

2.3.1.2 Các khái niệm cơ bản

Mạng thặng dư (residual network) G f

Cho luồng f trên mạng G=(V, E, c) Ta định nghĩa mạng thặng dư, ứng với luồng f là G f (V, E f , c f ) tập cung E f và khả năng thông qua c f được xác định như sau:

- (u, v) E, nếu f(u, v) > 0 thì (v, u)E f với khả năng thông qua:

Trang 22

c f (v, u)=f(u, v)

- (u, v)  E, nếu c(u, v)f(u, v)>0 thì (u, v)E f với khả năng thông qua:

c f (u, v)=c(u, v) f(u, v)

Luồng trươ ́ c (pre-flow)

Cho ma ̣ng G = (V, E, c) Luồng trước là tập hợp các luồng trên cung

f = {f i, j | (i, j) E} thỏa:

(i) 0 f i, j c i, j(i, j)E

(ii) Vơ ́ i mo ̣i đỉnh k không phải nguồn hoă ̣c đích, luồng vào không nhỏ hơn

luồng ra, tức là:

j k E

k i

k

f

) ( )

(

Những đỉnh có luồng vào lớn hơn luồng ra go ̣i là đỉnh lê ̣ch (unbalanced)

Hiê ̣u luồng vào và luồng ra ta ̣i các đỉnh lê ̣ch go ̣i là độ lê ̣ch luồng (excess)

Ý tưởng của phương pháp này là cân bằng hóa luồng vào và luồng ra tại các

đỉnh lê ̣ch bằng cách luồng dư được đẩy xuôi theo các cung ra hoă ̣c đẩy ngược trên

các cung vào Quá trình cân bằng hóa đỉnh lệch được lặp lại cho đến khi không còn

đỉnh lê ̣ch thì ta nhâ ̣n được luồng cực đa ̣i Các đỉnh lệ ch được lưu trong hàng đợi

Mô ̣t công cu ̣ go ̣i là hàm độ cao được sử du ̣ng để giúp cho ̣n cung trong ma ̣ng thă ̣ng

dư để loa ̣i đỉnh lê ̣ch Bây giờ ta giả thiết tâ ̣p đỉnh của ma ̣ng được ký hiê ̣u

V={0, 1, , |V|-1}

Hàm độ cao (height function) của luồng trước trong mạng G=(V, E, c) là

tâ ̣p hợp các tro ̣ng số đỉnh không âm h(0), , h(|V| 1) thỏa h(z) = 0 vơ ́ i đỉnh đích z

và h(u) ≤ h(v) +1 với mo ̣i cung (u, v)E f Những cung (u, v) thỏa h(u) = h(v) + 1

gọi là các cung ưu tiên

Ta xây dựng hàm đô ̣ cao như sau: h(v) là khoảng cách ngắn nhất tính theo số

cung từ v đến đỉnh đích z Ta có thể xác đi ̣nh hàm đô ̣ cao này bằng phương pháp

duyê ̣t đồ thi ̣ ngư ợc theo chiều rô ̣ng xuất p hát từ z Hàm này thực sự là hàm độ cao

vì h(z) = 0 và với mỗi cung (u, v) trong ma ̣ng thă ̣ng dư Gf , h(u) ≤ h(v) + 1, vì đường

đi từ u đến z bắt đầu bởi cung (u, v) và đi theo đường đi ngắn nhất từ v đến z

Trang 23

(h(v)+1 phải không ngắn hơn đường đi ngắn nhất từ u đến z là h(u))

Mê ̣nh đề 2.1 Cho luồng trước f trong ma ̣ng G và hàm độ cao h tương ứng Khi

đó, đô ̣ cao h(v) của mỗi đỉnh v (v có đường đi đến z) không lớn hơn đô ̣ dài đường đi ngắn nhất tính theo số cung từ v đến đỉnh đích z trong ma ̣ng thă ̣ng dư

đỉnh lê ̣ch lớn hơn đô ̣ cao của đỉnh nguồn thì cần phải đẩy luồng ngược về đỉnh nguồn

Hê ̣ quả 2.1 Nếu đô ̣ cao của mô ̣t đỉnh v nào đó lớn hơn |V|, thì không có đường đi

từ đỉnh v đến đỉnh đích trong mạng thặng dư Gf

Chứng minh: Giả sử nếu ta có một đường đi từ đỉnh v nào đó đến đích z mà

độ cao của v lớn hơn |V| thì theo mệnh đề 2.1 ta có độ cao của v không lớn hơn độ dài đường đi nên suy ra độ dài đường đi từ v đến z lớn hơn |V| Điều này không thể đúng bởi vì mạng chỉ có |V| đỉnh

Vậy theo hệ quả trên đối với các đỉnh v không có đường đi đến đỉnh z thì có h(v)>|V| và do độ cao của đỉnh a không lớn hơn |V| nên ta không thể đẩy luồng từ đỉnh v về đỉnh đích z mà chỉ đẩy ngược về a (nếu có) Suy ra không có luồng từ a đến v

2.3.1.3 Phương pháp đẩy luồng trước tổng quát

Bước 1 Khởi tạo: xây dựng luồng trước xuất phát với các cung đi từ đỉnh nguồn có

Trang 24

luồng bằng khả năng thông qua, còn các cung khác có luồng là 0, chọn hàm

độ cao h nào đó trong ma ̣ng G

Bước 2 Tiêu chuẩn dừng: nếu không có đỉnh lê ̣ch thì dừng , luồng trước f trở thành

luồng cực đa ̣i

Bước 3 Xử lý đỉnh lê ̣ch: chọn đỉnh lệch u

Nếu tồn ta ̣i cung ưu tiên (u, v)E f thì đẩy trên cung (u, v) một luồng có giá tri ̣

min{delta, c f (u, v)}, trong đo ́ delta là độ lệch luồng của đỉnh u

Nếu không tồn tại cung ưu tiên đi từ u thì tăng độ cao của đỉnh u như sau: h(u)= 1 + min{h(v) | (u, v) E f }

Quay la ̣i bước 2

Mê ̣nh đề 2.2 Phương pháp đẩy luồng trước luôn bảo toàn tính chất của hàm đô ̣

cao

Chứng minh:

(i) Trường hợp tồn ta ̣i cung ưu tiên (u, v)E f, ta có h(u) = h(v) + 1 Sau khi đẩy

trên cung (u, v) mô ̣t luồng có giá tri ̣ min{delta, cf (u, v)}, tứ c:

f(u, v)=f(u, v) + min{delta, c f (u, v)} thì nếu (v, u)  Ef ta vẫn có :

2.3.1.4 Thuâ ̣t toán đẩy luồng trước

Đây là thuâ ̣t toán cu ̣ thể thuô ̣c phương pháp đẩy luồng trước Ở đây các đỉnh

lê ̣ch được đẩy vào hàng đợi Với mỗi đỉnh lê ̣ch lấy từ hàng đợi , ta sẽ đẩy luồng vào các cung ưu tiên một cách tối đa cho tới khi đỉnh trở thành không lê ̣ch hoă ̣c không còn cung ưu tiên nữa Nếu không còn cung ưu tiên nữa và đỉnh còn lê ̣ch thì ta tăng

đô ̣ cao và đẩy nó vào hàng đợi

Chú ý rằng hàng đợi không chứa đỉnh nguồn và đỉnh đích Thuật toán được

mô tả như sau:

Trang 25

- Đầu vào: Mạng G = (V, E, c) với nguồn a, đích z, khả năng thông qua

c= {c i, j | (i, j)E} (13)

- Đầu ra: Luồng cực đại

f = {f i, j | (i, j)E} (14)

- Các bước:

Bước 1 Khởi tạo: xây dựng luồng trước xuất phát với các cung đi từ đỉnh nguồn có

luồng bằng khả năng thông qua , còn các cung khác có luồng bằng 0 Chọn

hàm độ cao h(v) là độ dài đường đi ngắn nhất từ v đến đỉnh đích z

Đẩy các đỉnh lệch va ̀o hàng đơ ̣i Q

Bước 2 Tiêu chuẩn dừng : nếu Q = ∅, luồng trước f trở thành luồng cực đa ̣i Kết

thúc Nếu Q ∅, sang bước 3

Bước 3 Xử lý đỉnh lê ̣ch: lấy đỉnh lê ̣ch u từ hàng đợi

- Duyệt các cung ưu tiên (u, v)E f Đẩy trên cung (u, v) một luồng có giá tri ̣

min{delta, c f (u, v)}, trong đo ́ delta là độ lệch luồng của đỉnh u

- Nếu đỉnh v là đỉnh lệch mới, thì đẩy đỉnh v vào hàng đợi Q

- Nếu u vẫn co ̀n lê ̣ch, thì tăng độ cao của u: h(u)= 1 + min{h(v)|(u, v)E f }

Sau đó đẩy u vào hàng đợi Q Quay la ̣i bước 2

Mê ̣nh đề 2.3 Trong quá trình thực hiê ̣n thuâ ̣t toán đẩy luồng trước , luôn tồn ta ̣i

đường đi từ mỗi đỉnh lê ̣ch đến đỉ nh nguồn trong ma ̣ng thă ̣ng dư và không tồn tại

đường đi từ đỉnh nguồn đến đỉnh đích trong ma ̣ng thă ̣ng dư

Chứng minh: Chứng minh quy na ̣p theo các lần hiê ̣u chỉnh luồng trước

Khởi tạo luồng trướ c xuất phát có các cung đi từ đỉnh nguồn có luồng bằng

khả năng thông qua , còn các cung khác có luồng bằng 0 Khi đó các đỉnh cuối của

các cung đi từ đỉnh nguồn là lệch Với mo ̣i đỉnh lê ̣ch v ta có (v, a)E f và (a, v)E f

(vì f(a, v)=c(a, v) theo khái niệm của mạng thặng dư), suy ra tồn ta ̣i đường đi từ v

đến a và không tồn tại đường đi từ đỉnh nguồn a đến đỉnh đích z trong ma ̣ng thă ̣ng

dư Gf Như vậy mê ̣nh đề đúng với luồng xuất phát

Tiếp theo, đỉnh lê ̣ch mới v chỉ xuất hiện khi một luồng được đẩy từ một đỉnh

lê ̣ch cũ u trên cung ưu tiên (u, v) Khi đó ma ̣ng thă ̣ng dư sẽ có thêm cung (v, u) Do

Trang 26

tồn ta ̣i đường đi từ u đến a trong ma ̣ng thă ̣ng dư theo giả thiết quy na ̣p , nên cũng tồn ta ̣i đường đi từ v đến a trong ma ̣ng thă ̣ng dư (chứng minh xong vế thứ nhất)

Để chứng minh không tồn ta ̣i đường đi từ đỉnh nguồn a đến đỉnh đích z trong mạng thặng dư G f ta lập luâ ̣n như sau:

Trước tiên, với các đỉnh u kề đỉnh nguồn a, tức (a, u)E, do luồng xuất phát

trên cung (a, u) bằng khả năng thông qua , theo khái niệm mạng thặng dư nên muốn

(a, u)E f thì ở bước nào đó phải thực hiện thao tác đẩy luồ ng ngược từ u về a Khi đó (u, a) là cạnh ưu tiên , tức h(u)=h(a)+1>h(a) Như vâ ̣y mo ̣i đỉnh kề a có thể đạt đươ ̣c từ a trong ma ̣ng thă ̣ng dư phải có đô ̣ cao lớn hơn đô ̣ cao của a

Cho đỉnh bất kỳ u đa ̣t được từ a trong ma ̣ng thă ̣ng dư Tồn ta ̣i đường đi từ a đến u trong ma ̣ng thă ̣ng dư Khi đó ta giả sử đường đi đó là: 𝑎 → 𝑢1 → 𝑢2 →

⋯ 𝑢𝑘 → 𝑢

Lâ ̣p luâ ̣n tương tự như trên ta có h(u) > h(uk ) > > h(u2) > h(u1) > h(a) Như vâ ̣y mo ̣i đỉnh đ ạt được từ a phải có độ cao lớn hơn đ ộ cao của a Mă ̣t

khác độ cao của đỉnh đích là luôn luôn b ằng 0 nên độ cao đỉnh đích không thể lớn

hơn độ cao của đỉnh a, nên đỉnh đích không thể đa ̣t được từ a Suy ra không tồn ta ̣i đường đi từ đỉnh nguồn a đến đỉnh đích z trong ma ̣ng thă ̣ng dư Gf

Hê ̣ quả 2.2 Độ cao các đỉnh luôn nhỏ hơn 2.|V|

Chứng minh: Ta chỉ cần xét các đỉnh lê ̣ch, vì độ cao đỉnh không lệch hoặc không

thay đổi, hoă ̣c chỉ tăng 1 so với đô ̣ cao khi nó là đỉnh lê ̣ch ở thời điểm gần nhất Lâ ̣p

luâ ̣n tương tự như chứng minh mê ̣nh đề 2.1, đường đi từ đỉnh lê ̣ch đến nguồn đảm bảo rằng độ cao của đỉnh lệch không lớn hơn độ cao đỉnh nguồn cộng |V| 2 (đỉnh

đích không thể nằm trên đường đi) Do đô ̣ cao của nguồn không lớn hơn |V|, nên đô ̣ cao đỉnh lê ̣ch không lớn hơn 2.|V|  2 Suy ra độ cao đỉnh bất kỳ không lớn hơn

2.|V|

Đi ̣nh lý 2.2 Thuật toán đẩy luồng trước tìm luồng cực đại là đúng

Chứng minh: Trước hết ta chứng minh thuật toán dừng sau hữu ha ̣n bước Ta khẳng

đi ̣nh rằng sau hữu ha ̣n bước sẽ không còn đỉnh lê ̣ch nữa Ta chứng minh bằng phản

chứng Giả sử dãy các đỉnh lệch là vô hạn thì sẽ tồn tại đỉnh u nào đó xuất hiện vô

Trang 27

hạn lần trong dãy đó Vì số đỉnh của mạng là hữu hạn nên sẽ tồn tại đỉnh vu sao cho có luồng được đẩy trên cung (u, v) và (v, u) vô hạn lần Do (u, v) và (v, u) là các cung ưu tiên trong Gf vô hạn lần nên từ quan hệ h(u) = h(v)+1 và h(v) = h(u)+1 suy

ra độ cao của u và v sẽ tăng vô hạn và điều đó mâu thuẫn với hệ quả trên

Khi thuật toán dừ ng ta nhâ ̣n đươ ̣c luồng cực đại Theo mê ̣nh đề 2.3 không tồn ta ̣i đường đi từ nguồn đến đích trong G f Theo thuật toán đường đi tăng luồng [3], đây là luồng cực đa ̣i

Độ phức tạp của phương pháp đẩy luồng trước là O(|V|2|E|) ([55], [56]

2.3.1.5 Ví dụ minh họa

Tìm luồng cực đại của mạng G như trong Hình 2.3

Ghi chu ́ Tại mỗi đỉnh v ta có hai tham số v(h(v), e(v)), trong đó h(v) là độ cao của

v và e(v) là độ lệch luồng của v Ở giữa mỗi cung có hai tham số c i, j , f i, j trong đó c i, j

là khả năng thông qua của cung (i, j), f i, j là luồng của cung (i, j) được biểu diễn như

trong Hình 2.4

Thứ tự các đỉnh là a, b, c, d, e, z

Bước 1: Khởi tạo

Trang 28

- Luồng trướ c xuất phát với các cung đi từ đỉnh nguồn có luồng bằng khả năng thông qua, còn các cung khác có luồng bằng 0 Tất cả các tham số này được biểu diễn trên mạng đồ thị khởi tạo như trong Hình 2.4

- Hàng đợi Q: b|d (Q sẽ chứa các đỉnh có độ lệch luồng dương theo thứ tự

các đỉnh)

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q  ∅, nên sang bước 3

Bước 3: Lấy đỉnh lệch b từ hàng đợi Q để xử lý (cân bằng b) vòng lặp 1

- Việc cân bằng b được thực hiện như sau: đẩy trên cung (b, c)E f một luồng

có giá trị min{delta, c f (b, c)}=min{3, 2}=2 Đỉnh c là đỉnh lệch mới nên đẩy

c vào hàng đợi Q, đỉnh b có e(b)=1 nên đỉnh b vẫn còn lệch và chỉ có duy nhất một cung (b, a)E f, nhưng nó không phải cung ưu tiên Vì vậy, ta phải tăng độ cao của đỉnh b theo công thức:

h(b)=1 + min{d(a) | (b, a)E f } = 1 + d(a) = 1 + 3 = 4 Đẩy b vào Q

- Các tham số vừa tính được ở bước 3 được biểu diễn như trong Hình 2.5

- Hàng đợi Q: b | d | c | b

Quay lại bước 2

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q ∅, nên sang bước 3

Bước 3: Lấy đỉnh lệch d từ hàng đợi Q để xử lý (cân bằng d) vòng lặp 2

- Đẩy trên cung (d, c) và (d, e)E f một luồng có giá trị

min{delta, c f (d, c)}= min{4, 2}=2 Suy ra f d, c =2, f d, e =2

- Đỉnh e là đỉnh lệch mới nên đẩy e vào hàng đợi Q, đỉnh d có e(d)=1 nên đỉnh d vẫn còn lệch và chỉ có duy nhất một cung (d, a) E f, nhưng nó không phải cung ưu tiên Vì vậy ta phải tăng độ cao của đỉnh d theo công thức h(b)= 1 + min{d(a) |(d, a)E f } = 1 + d(a) = 1 + 3 = 4

- Đẩy d vào Q

- Các tham số vừa tính được ở bước 3 của vòng lặp thứ 1 và 2 được biểu diễn

như trong Hình 2.5 Hàng đợi Q bây giờ là Q: b | d | c | b | e | d

Quay lại bước 2

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q ∅, nên sang bước 3

Trang 29

Bước 3: Lấy đỉnh lệch c từ hàng đợi Q để xử lý (cân bằng c) vòng lặp 3

- Đẩy trên cung (c, z)E f luồng có giá trị min{delta, c f (c, z)}= min{4, 4}= 4

- Hàng đợi Q mới bây giờ là Q: b | d | c | b | e | d Quay lại bước 2

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q  ∅, nên sang bước 3

Bước 3: Lấy đỉnh lệch b từ hàng đợi Q để xử lý (cân bằng b) vòng lặp 4

- Theo vai trò của hàm độ cao thì do độ cao của đỉnh lệch b lớn hơn độ cao đỉnh nguồn a nên ta đẩy ngược về hướng đỉnh nguồn a suy ra ta đẩy ngược trên cung (a, b)E f một luồng có giá trị min{delta, c f (a, b)} = min{1, 3}=1

- Các tham số vừa tính được ở bước 3 của vòng lặp thứ 3 và thứ 4 được biểu diễn như trong Hình 2.6

Hàng đợi Q mới bây giờ là Q: b | d | c | b | e | d

Quay lại bước 2

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q  ∅, nên sang bước 3

Bước 3: Lấy đỉnh lệch e từ hàng đợi Q để xử lý (cân bằng e) vòng lặp 5

- Đẩy trên cung (e, z)E f một luồng bằng min{delta, c f (e, z)}=min{2, 4}=2

- Hàng đợi Q mới bây giờ là Q: b | d | c | b | e | d

Trang 30

Quay lại bước 2

Bước 2: Kiểm tra tiêu chuẩn dừng vì Q ∅, nên sang bước 3

Bước 3: - Lấy đỉnh lệch d từ hàng đợi Q để xử lý (cân bằng d) vòng lặp 6

- Theo vai trò của hàm độ cao thì do độ cao của đỉnh lệch d lớn hơn độ cao đỉnh nguồn a nên ta đẩy ngược về hướng đỉnh nguồn a Suy ra, ta đẩy ngược trên cung (a, d)E f một luồng có giá trị min{delta, c f (a, d)} = min{1, 5} =1

- Các tham số vừa tính được ở bước 3 của vòng lặp thứ 5 và 6 được biểu diễn như trong Hình 2.7

- Hàng đợi Q mới bây giờ là Q: b | d | c | b | e | d Quay lại bước 2

Bước 2: Kiểm tra Q =∅, Kết thúc và luồng cuối cùng là luồng cực đại với giá trị

luồng là 6

2.3.2 Thuật toán song song

2.3.2.1 Giới thiệu

Các công trình nghiên cứu về thuật toán song song bằng thuật toán đẩy luồng

trước được công bố trong [58], [59], [60] Năm 2010, Zhengyu He, Bo Hong [61] đã xây dựng thuật toán song song đẩy luồng trước trên môi trường CUDA Tuy nhiên,

các công trình trên còn hạn chế là: dữ liệu của bài được chia cho các bộ xử lý như thế nào, các bước thực hiện song song rất khó lập trình và việc phân tích độ phức tạp thời gian chưa được đề cập đến Trong phần này, chúng tôi sẽ tối ưu thuật toán song song trong [61] bằng cách trình bày từng bước cụ thể hơn, chia dữ liệu cho các

bộ xử lý thực hiện, có ví dụ để minh họa cho các bước của thuật toán Đồng thời, thuật toán sẽ xây dựng tổng quát cho tất cả các hệ thống tính toán song song khác

Trang 31

nhau và phân tích thời gian tính toán của thuật toán song song Vì vậy, sự cải tiến của thuật toán được đề xuất so với [61] là đề xuất sự phân chia dữ liệu, các bộ xử lý gửi và nhận dữ liệu được thực hiện rõ ràng và có phân tích độ phức tạp trong các trường hợp tổng quát Dữ liệu thử nghiệm của thuật toán được tạo ngẫu nhiên

Nội dung chính trong mục này, chúng tôi đã đăng trong chuyên san Công nghệ thông tin và được liệt kê ở tài liệu [3] trong danh mục các công trình của tác gỉa đã công bố liên quan đến luận án

2.3.2.2 Ý tưởng của thuật toán song song

Chúng tôi xây dựng thuật toán song song trên m bộ xử lý Trong m bộ xử lý

sẽ có một bộ xử lý chính đóng vai trò quản lý dữ liệu, đồng thời gửi và nhận dữ liệu

từ các bộ xử lý phụ

Các bộ xử lý phụ đẩy và đổi nhãn, rồi chuyển kết quả về bộ xử lý chính

Bộ xử lý chính sau khi nhận các kết quả mà các bộ xử lý phụ gửi đến sẽ thực hiện đổi các nhãn cho đến khi tìm được luồng cực đại

Trong thuật toán song song, điều kiện dừng của thuật toán là không còn đỉnh

lệch trên mạng đồ thị (trừ đỉnh a, z) Từ thuật toán tuần tự trên, ta nhận thấy rằng

khi thuật toán kết thúc thì tổng độ lệch luồng của các đỉnh bằng 0 Giá trị e(z) là giá

trị luồng cực đại cần tìm

2.3.2.3 Xây dựng thuật toán song song

- Đầu vào: Mạng G = (V, E, c) với nguồn a, đích z, khả năng thông qua

Trang 32

dư G f , Q: tập các đỉnh hoạt động (không kể đỉnh a và z) là các đỉnh có độ

lệch luồng dương Việc khởi tạo giống như khởi tạo ở thuật toán tuần tự

(1.2) Chia tập đỉnh V thành m-1 tập con V i cho các bộ xử lý phụ tương ứng

P i (i=1, 2, …, m-1) sao cho:

𝑉𝑖 ∩ 𝑉𝑗 = ∅, 𝑖 ≠ 𝑗

𝑉1 ∪ 𝑉2 ∪ … ∪ 𝑉𝑚−1 = 𝑉 (17)

Cách chia cụ thể theo thuật toán sau:

Giả sử ta có n đỉnh và m-1 bộ xử lý phụ P1,…, P m-1 Gọi n i là số đỉnh tương ứng của bộ xử lý phụ Pi (i=1,…, m-1)

- Nếu n chia hết cho m-1 thì:

Bước 3: Bộ xử lý chính kiểm tra nếu tập các đỉnh hoạt động mà rỗng thì kết thúc,

luồng trước f trở thành luồng cực đại

Ngược lại sang bước 4

Bước 4: Bộ xử lý chính chuyển e, h, f, c, cf tương ứng với các đỉnh đến các bộ xử lý

phụ

Bước 5: m-1 bộ xử lý phụ thực hiện

(5.1) Nhận các tham số e, h, f, c, c f tương ứng cho các đỉnh trên các bộ xử lý phụ mà bộ xử lý chính gửi đến ở bước 4

(5.2) Xử lý đỉnh lệch (đẩy và đổi nhãn) như trong bước 3 của thuật toán tuần

tự Tức là nếu tồn tại cung ưu tiên (u, v)E f thì đẩy trên cung (u, v) một

luồng có giá tri ̣ min{delta, cf (u, v)}, trong đó delta là độ lệch luồng của đỉnh

);

1/( 

n i

Trang 33

u Nếu không tồn ta ̣i cung ưu tiên đi từ u, thì ta tăng đô ̣ cao của đỉnh u như

sau:

h(u)= 1 + min{h(v)|(u, v)E f }

(5.3) Gửi e, h, f, c f về bộ xử lý chính

Bước 6: Bộ xử lý chính thực hiện một số công việc khác

(6.1) Nhận e, h, f, c f , từ bộ xử lý phụ gửi về từ bước 5.3, Thay đổi tham số

của các cung, các đỉnh mà hai đỉnh của các cung đó không nằm trên cùng một bộ xử lý

(6.2) Đây là bước khác biệt so với thuật toán tuần tự để đồng bộ hóa dữ liệu, sau khi nhận dữ liệu ở (6.1) thì bộ xử lý chính kiểm tra nếu với mọi cung

(u, v)E, nếu h(u)>h(v)+1 thì bộ xử lý chính sẽ đổi nhãn cho u, v như sau: f(u, v)= f(u, v)+min{delta, c f (u, v); //delta là độ lệch luồng của đỉnh u

e(u)= e(u)–c f (u, v); e(v)= e(v)+c f (u, v)

Đưa đỉnh lệch mới vào tập Q

(6.3) Nếu uV mà e(u)=0 thì loại u ra khỏi tập Q

Quay lại bước 3

2.3.2.4 Ví dụ minh họa

Tìm luồng cực đại của mạng G như trong Hình 2.8 trên ba bộ xử lý Trong

đó, có một bộ xử lý chính gọi là P0 và hai bộ xử lý phụ gọi là P1, P2

Các pha của ba bộ xử lý được thể hiện như sau:

Bước 3: Bộ xử lý chính P0 kiểm tra tập Q ∅, sang bước 4

Bước 4: Bộ xử lý chính P0 gửi e, c f , h đến hai bộ xử lý phụ P1, P2

Bước 5: Hai bộ xử lý phụ P1, P2 thực hiện

(5.1) - bộ xử lý phụ P1, P2 nhận các tham số e, c f , h cho các đỉnh tương ứng

Trang 34

(5.2) - bộ xử lý P1 thực hiện: do không tồn ta ̣i cung ưu tiên đi từ b, d nên ta

tăng đô ̣ cao của đỉnh b và d như sau: h(b)=h(a)+1=4 và h(d)= h(a)+1=4

- Bộ xử lý phụ P2 thực hiện: vì các đỉnh trên bộ xử lý P2 có độ lệch luồng

bằng 0 nên không thực hiện

(5.3) Gửi các tham số tính được ở (5.2) về P0

Tại thời điểm này các tham số trên hai bộ xử lý được biển diễn như trong

Hình 2.8

Bước 6: Bộ xử lý chính P0 thực hiện

(6.1) Nhận dữ liệu gửi về từ bước (5.3)

(6.2) Bộ xử lý chính thực hiện thay thế trên toàn bộ các đỉnh u, v thỏa yêu cầu: tất các cạnh (u, v)E mà có h(u)>h(v)+1

Việc thay thế như sau: ta có h(b)>h(c)+1 và h(d) > h(c)+1, h(d) > h(e) + 1, nên f b, c = min{3, 2}=2

Tương tự như vậy ta có f d, c = min{5, 2}=2, f d, e = min{5-2, 2} = 2 và độ lệch luồng của các đỉnh b, c, d, e được tính lại như sau: e(b) = e(b) - c f (b, c)=3- 2=1, e(c)= e(c) + c f (b, c) + c f (d, c) =0 + 2 + 2 = 4, e(e) = e(e) + c f (d, e) = 0 +

Trang 35

Đưa đỉnh lệch mới c, e vào tập Q Suy ra Q={b, d, c, e}

(6.3) Không loại đỉnh nào ra khỏi tập Q

Quay lại bước 3

Bước 3: Bộ xử lý chính P0 kiểm tra tập Q ∅, sang bước 4

Bước 4: Bộ xử lý chính P0 gửi e, c f , h đến hai bộ xử lý phụ P1, P2

Bước 5: Hai bộ xử lý phụ P1, P2 thực hiện

(5.1) - Bộ xử lý phụ P1, P2 nhận các tham số e, c f , h cho các đỉnh tương ứng (5.2) - Bộ xử lý P1 thực hiện: cân bằng hai đỉnh b, d ta có:

+ Theo vai trò của hàm độ cao thì độ cao của đỉnh lệch b lớn hơn độ cao đỉnh nguồn a nên ta đẩy ngược về hướng đỉnh nguồn a, Suy ra, ta đẩy ngược trên cung (a, b)E f một luồng có giá trị min{delta, c f (a, b)}=min{1, 3}=1, f a, b =3-

1=2 và độ lệch luồng của b, a là:

e(b)= e(b) - c f (a, b)=1-1=0, e(a)=e(a)+c f (a, b)=-8+1=-7

+ Theo vai trò của hàm độ cao thì do độ cao của đỉnh lệch d lớn hơn độ cao đỉnh nguồn a nên ta đẩy ngược về hướng đỉnh nguồn a Suy ra, ta đẩy ngược trên cung (a, d)E f một luồng có giá trị min{delta, c f (a, d)}= min{1, 5}=1, f a,

d =5-1=4 và độ lệch luồng của d, a là:

e(d)=e(d)-c f (a, d)=1-1=0, e(a)=e(a)+c f (a, d)=-7+1=-6

- Bộ xử lý phụ P 2 thực hiện: cân bằng hai đỉnh c, e

+ Cân bằng c: đẩy trên cung (c, z)E f một luồng có giá trị:

min{delta, c f (c, z)}=min{4, 4}=4 Suy ra f c, z =4 và độ lệch luồng của c, z là: e(c)=e(c)-c f (c, z)=4-4=0, e(z)=e(z)+c f (c, z)=0+4=4

Trang 36

+ Cân bằng e: đẩy trên cung (e, z)E f một luồng có giá trị:

min{delta, c f (e, z)} = min{2, 4}=2 Suy ra f e, z =2 Độ lệch luồng của e, z là: e(e)=e(e)-c f (e, z)=2-2=0, e(z)=e(z)+c f (e, z)=4+2=6

(5.3) Gửi các tham số tính được ở (5.2) về P0

Tại thời điểm này các tham số trên hai bộ xử lý được biển diễn như trong Hình 2.10

Bước 6: Bộ xử lý chính P 0 thực hiện

(6.1) Nhận dữ liệu gửi về từ bước 5.3

(6.2) Không có cạnh (u, v) E mà có h(u)>h(v)+1 và e(u)≠0 Nên không thay thế Vì không có đỉnh lệch mới nên không có đỉnh nào được đẩy vào tập Q (6.3) Bộ xử lý chính kiểm tra các đỉnh b, d, c, e đều có độ lệch luồng bằng 0, loại b, d, c, e ra khỏi Q Suy ra Q=∅

Quay lại bước 3

Bước 3: Bộ xử lý chính kiểm tra Q=∅ Kết luận luồng cực đại có giá trị là 6

2.3.2.5 Phân tích độ phức tạp thời gian

Độ phức tạp của thuật toán tuần tự là O(|V|2|E|) Khi thực hiện song song thì thời gian tính toán trên m-1 bộ xử lý phụ sẽ có độ phức tạp tính toán bằng thời gian tuần tự chia cho m-1 như công thức (20)

Từ cách xây dựng thuật toán song song và ví dụ thực nghiệm, ta nhận thấy

)1

|

|

|

|(

2

m

E V

Trang 37

rằng độ phức tạp thời gian của thuật toán song song sẽ giảm đi đáng kể so với độ phức tạp của thuật toán tuần tự Trong trường hợp tổng quát thời gian của thuật toán song song theo công thức (21)

2

) 1

|

|

|

| (

2

m

E V

Dữ liệu thực nghiệm được tạo ngẫu nhiên theo cấu trúc sau:

Mạng đồ thị có n nút tùy ý được nhập vào trong mục NumNode như trong

Hình 2.11 và độ giãn nở được nhập vào trong mục Expansion coefficient như trong Hình 2.11

Mạng đồ thị ở đây là đồ thị thưa các cạnh được nối với nhau theo độ giãn nở

Ví dụ mạng đồ thị có 10 đỉnh và độ giãn nở là 3 thì đỉnh 1 nối với 3 đỉnh tiếp theo

là 2, 3, 4 Đỉnh 2 nối với 3 đỉnh tiếp theo là 3, 4, 5 Cứ tiếp tục như vậy cho các đỉnh còn lại

Bằng cách tạo đồ thị ngẫu nhiên như Hình 2.11 ta có thể thay đổi số đỉnh và

độ giãn nở để có được các đồ thị khác nhau phục vụ cho thực nghiệm thuật toán

Trang 38

b Môi trường thực nghiệm

Thuật toán được mô phỏng trên hệ thống cụm máy tính song song của trường

Đại học Sư phạm Hà Nội (laund1@ccs1.hnue.edu.vn) Đây là một trong những hệ

thống tính toán song song lớn ở Việt Nam, có trên 100 bộ xử lý và có thể mô phỏng trên hệ thống này rất tiện lợi Còn ở [61], [62] các tác giả mô phỏng trên môi trường

CUDA, điều này đòi hỏi máy tính phải có Card màn hình NVIDIA tốc độ lớn

c Kết quả thực nghiệm

Thuật toán được thực nghiệm với đồ thị đầu vào như ví dụ ở Hình 2.8 thì kết

quả cho đúng ở Hình 2.12 Tuy nhiên, kết quả này không phản ảnh và so sánh được thời gian thực hiện của thuật toán vì đồ thị quá nhỏ mà chỉ để kiểm tra tính đúng đắn của thuật toán

Hình 2.12 Biểu diễn kết quả ví dụ Hình 2.11 Giao diện tạo mạng đồ thị ngẫu nhiên

Trang 39

Chúng tôi tạo hai mạng đồ thị ngẫu nhiên gồm 5000 đỉnh và 7000 đỉnh với số cạnh tương ứng là 14994 cạnh và 20994 cạnh, chúng tôi cho chạy song song trên 2, 4,

6, 8 bộ xử lý thì kết quả được biểu diễn như trong Hình 2.13 (T s là thời gian chạy

tuần tự, T p là thời gian chạy song song, T s /T p là mức độ tăng tốc (speedup)) Khi

thực hiện song song thì thời gian giảm đi đáng kể

d Nhận xét

Với dữ liệu nhỏ thì không so sánh được thời gian thực hiện giữa thuật toán song song và thuật toán tuần tự Sự quan hệ giữa thời gian tính toán và thời gian truyền thông được thể hiện như sau: Với dữ liệu đầu vào nhỏ thì gian gian tính toán

ít Do đó, nếu dữ liệu nhỏ mà ta thực hiện song song thì thời gian tính toán của thuật toán song song sẽ nhiều hơn thời gian tính toán của thuật toán tuần tự, vì lúc này khi thực hiện song song thì thời gian truyền thông sẽ lớn hơn so với thời gian tính toán của thuật toán Với dữ liệu đầu vào lớn thì thời gian tính toán song song sẽ giảm đi đáng kể, vì lúc này thời gian tính toán lớn còn thời gian truyền thông là không đáng

kể so với thời gian tính toán Tuy nhiên, nếu ta tăng số bộ xử lý lên quá lớn thì tốc

Trang 40

độ hội tụ đạt đến một ngưỡng giới hạn nào đó Đến một lúc nào đó thời gian thực hiện song song sẽ không còn giảm, thậm chỉ có thể thời gian sẽ tăng đi khi tăng số lượng bộ xử lý

2.3.2.7 Kết luận

Trong mục này, chúng tôi đã trình bày thuật toán song song đẩy luồng trước tìm luồng cực đại trên mạng đồ thị Thuật toán này đã thực nghiệm trên nhiều đồ thị khác nhau được tạo ngẫu nhiên như trong giao diện ở Hình 2.11 và cho kết quả chính xác Đặc biệt, với đồ thị đầu vào có số đỉnh lớn thì thuật toán song song cho kết quả tốt thể hiện qua mức độ tăng tốc như trong Hình 2.13 Thuật toán đã giải quyết được dữ liệu lớn, tận dụng được cấu trúc đa bộ xử lý Từ đó, giải quyết các bài toán trên mạng đồ thị có kích thước dữ liệu lớn Hơn nữa, thuật toán được xây dựng có bước phân chia dữ liệu, thuật toán trình bày rõ ràng theo các bước, xây dựng trên môi trường song song tổng quát và có ví dụ minh họa cụ thể để kiểm tra tính đúng đắn của thuật toán

2.4 Thuật toán hỗn hợp đẩy kéo luồng

2.4.1 Thuật toán tuần tự kéo luồng sau

2.4.1.2 Các khái niệm cơ bản

Luồng sau (post-flow)

Cho ma ̣ng G = (V, E, c) Luồng sau là tập hợp các luồng trên cung

f = {f i, j (i, j)E} (23)

thỏa mãn

Ngày đăng: 23/12/2015, 14:45

HÌNH ẢNH LIÊN QUAN

Hình 1.2. Mô hình MIMD chia sẻ bộ nhớ - Song song hóa các thuật toán trên mạng đồ thị
Hình 1.2. Mô hình MIMD chia sẻ bộ nhớ (Trang 11)
Hình 1.3. Mô hình MIMD truyền thông điệp - Song song hóa các thuật toán trên mạng đồ thị
Hình 1.3. Mô hình MIMD truyền thông điệp (Trang 11)
Hình 1.5. Quy trình thiết kế thuật toán song song - Song song hóa các thuật toán trên mạng đồ thị
Hình 1.5. Quy trình thiết kế thuật toán song song (Trang 15)
Hình 2.13. Biểu diễn mức độ tăng tốc trên các bộ xử lý của đồ thị 7000 đỉnh - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.13. Biểu diễn mức độ tăng tốc trên các bộ xử lý của đồ thị 7000 đỉnh (Trang 39)
Hình 2.15. Khởi tạo mạng đồ thị - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.15. Khởi tạo mạng đồ thị (Trang 44)
Hình 2.21. Mạng đồ thị cân bằng h - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.21. Mạng đồ thị cân bằng h (Trang 46)
Hình 2.23. Mạng đồ thị G - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.23. Mạng đồ thị G (Trang 49)
Hình 2.27. Mạng đồ thị cân bằng c, f - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.27. Mạng đồ thị cân bằng c, f (Trang 50)
Hình 2.33. Mạng đồ thị cân bằng b ở bộ xử lý P 1 , và cân bằng h ở bộ xử lý P 2 - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.33. Mạng đồ thị cân bằng b ở bộ xử lý P 1 , và cân bằng h ở bộ xử lý P 2 (Trang 55)
Hình 2.34. Mạng đồ thị cân bằng d ở bộ xử lý P 1  và cân bằng i ở bộ xử lý P 2 - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.34. Mạng đồ thị cân bằng d ở bộ xử lý P 1 và cân bằng i ở bộ xử lý P 2 (Trang 56)
Hình 2.37. Giao diện Server - Song song hóa các thuật toán trên mạng đồ thị
Hình 2.37. Giao diện Server (Trang 58)
Hình 3.2. Đồ thị mở rộng G - Song song hóa các thuật toán trên mạng đồ thị
Hình 3.2. Đồ thị mở rộng G (Trang 67)
Hình 3.4. Giao diện Server - Song song hóa các thuật toán trên mạng đồ thị
Hình 3.4. Giao diện Server (Trang 69)
Hình 3.7. Mức độ tăng tốc trên các bộ xử lý với dữ liệu của thành phố Đà Nẵng - Song song hóa các thuật toán trên mạng đồ thị
Hình 3.7. Mức độ tăng tốc trên các bộ xử lý với dữ liệu của thành phố Đà Nẵng (Trang 85)
Hình 3.8. Giao diện Server - Song song hóa các thuật toán trên mạng đồ thị
Hình 3.8. Giao diện Server (Trang 86)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w