1. Trang chủ
  2. » Công Nghệ Thông Tin

Xử lý song song áp dụng đối với một số bài toán trong lý thuyết đồ thị

68 343 0

Đ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 68
Dung lượng 1 MB

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

Nội dung

Một số thuật toán sắp xếp song song...47 3.1.1 Thuật toán sắp xếp đánh số...47 Thuật toán trên có thể cải tiến khi sử dụng để xác định vị trí tức là việc so sánh với các phần tử khác tr

Trang 1

LỜI CẢM ƠN

Trong quá trình học tập và nghiên cứu tại lớp Cao học khóa 9 chuyên ngànhKhoa học máy tính tại Trường Đại học Công nghệ thông tin và Truyền thông - Đạihọc Thái Nguyên, Tôi đã nhận được rất nhiều sự giúp đỡ nhiệt tình của các thầy, côgiáo trong Trường Đại học Công nghệ thông tin và Truyền thông; Viện công nghệthông tin thuộc Viện khoa học và Công nghệ Việt Nam Các thầy, cô luôn giúp đỡ,tạo điều kiện cho tôi trong quá trình học tập Tôi xin bày tỏ lời cảm ơn chân thànhtới tập thể các thầy, cô giáo trong Trường Đại học Công nghệ thông tin và Truyềnthông; Viện công nghệ thông tin thuộc Viện khoa học và Công nghệ Việt Nam

Đặc biệt Tôi xin gửi lời cảm ơn sâu sắc tới thầy giáo TS Vũ Vinh Quang đã định

hướng và tận tình hướng dẫn tôi hoàn thành nội dung bản luận văn này

Tôi xin cảm ơn các bạn đồng nghiệp và người thân đã động viên, giúp đỡ tôitrong quá trình nghiên cứu và thực hiện luận văn

Trong một khoảng thời gian ngắn, với kiến thức của bản thân còn hạn chế nênluận văn không tránh khỏi những thiếu sót về mặt khoa học, tôi rất mong nhận đượcnhững đóng góp ý kiến của các Thầy cô giáo cùng bạn bè để bản luận văn đượchoàn chỉnh hơn

Xin trân trọng cảm ơn!

Thái Nguyên, ngày tháng năm 2013

Học viên

Võ Quang Huy

Trang 2

MỤC LỤC

Võ Quang Huy i

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

1.5 Phân tích và đánh giá thuật toán song song 12

1.7.2 Lập trình song song với PVM 21

Hình 2.1 Sơ đồ mạng máy tính với đa kênh thông báo 26

3.1 Một số thuật toán sắp xếp song song 47

3.1.1 Thuật toán sắp xếp đánh số 47

Thuật toán trên có thể cải tiến khi sử dụng để xác định vị trí tức là việc so sánh với các phần tử khác trong dãy cũng được thực hiện song song Trong trường hợp này, độ phức tạp thuật toán sẽ là 49

3.1.2 Thuật toán sắp xếp so sánh và đổi chỗ 49

Bảng 3.1 Sắp xếp theo nguyên tắc hình ống sử dụng 8 bộ xử lý 50

3.1.3 Thuật toán sắp xếp MergeSort 51

Trang 3

DANH MỤC CÁC HÌNH VẼ

Võ Quang Huy i

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

1.5 Phân tích và đánh giá thuật toán song song 12

1.7.2 Lập trình song song với PVM 21

Hình 2.1 Sơ đồ mạng máy tính với đa kênh thông báo 26

3.1 Một số thuật toán sắp xếp song song 47

3.1.1 Thuật toán sắp xếp đánh số 47

Thuật toán trên có thể cải tiến khi sử dụng để xác định vị trí tức là việc so sánh với các phần tử khác trong dãy cũng được thực hiện song song Trong trường hợp này, độ phức tạp thuật toán sẽ là 49

3.1.2 Thuật toán sắp xếp so sánh và đổi chỗ 49

Bảng 3.1 Sắp xếp theo nguyên tắc hình ống sử dụng 8 bộ xử lý 50

3.1.3 Thuật toán sắp xếp MergeSort 51

Trang 4

LỜI NÓI ĐẦU

Trong thực tế, có rất nhiều lĩnh vực như xử lý đồ họa, trí tuệ nhận tạo, lý

thuyết đồ thị, lý thuyết nhận dạng, dự báo thời tiết đều dẫn đến các bài toán xử lý

một khối lượng dữ liệu rất lớn dẫn tới yêu cầu cần phải có những hệ thống máy tínhthật mạnh mới thực hiện được những yêu cầu của thực tế Hầu hết những bài toánnày, những máy tính xử lý tuần tự kiểu von Neumann là không đáp ứng yêu cầu.Trong thời gian gần đây, vấn đề nghiên cứu xử lý song song là một hướng nghiêncứu đang được quan tâm trong lĩnh vực toán học và Công nghệ thông tin Một trongnhững bài toán nổi bật là các bài toán tối ưu trên mô hình lý thuyết đồ thị

Với mục đích nghiên cứu vấn đề thiết kế các thuật toán song song dựa trên cácthuật toán tuần tự, luận văn đặt vấn đề nghiên cứu về lý thuyết xử lý song song vàứng dụng trên một số bài toán trong mô hình đồ thị

Cấu trúc của luận văn gồm phần mở đầu và 3 chương nội dung như sau

Phần mở đầu giới thiệu về hướng nghiên cứu và các mục đích nghiên cứuChương 1: luận văn trình bày các khái niệm về vấn đề xử lý song song, môhình máy tính song song, thuật toán song song cùng một số ngôn ngữ song song.Đây là các khái niệm quan trọng làm cơ sở cho các vấn đề được đưa ra trong cácchương tiếp sau

Chương 2: luận văn đưa ra các khái niệm cơ bản về lý thuyết đồ thị, mô hìnhcác bài toán tối ưu và mô tả các thuật toán tuần tự kinh điển giải các bài toán tươngứng, đánh giá độ phức tạp của các thuật toán tuần tự

Chương 3: Trên cơ sở các thuật toán đã trình bày trong chương 2 kết hợp với

lý thuyết xử lý song song, luận văn đưa ra một số hướng thiết kế các thuật toán songsong giải các bài toán tối ưu trên mô hình đồ thị, đánh giá độ phức tạp của các thuậttoán tương ứng

Kèm theo luận văn là các phần mềm thử nghiệm các thuật toán tuần tự đượcviết bằng ngôn ngữ C++

Trang 5

Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ XỬ LÝ SONG SONG

1.1 Khái niệm cơ bản về xử lý song song

Trong những thập niên 60, nền tảng để thiết kế máy tính đều dựa trên mô hình

của John Von Neumann (Xem ), với một đơn vị xử lý được nối với một vùng lưu trữ

làm bộ nhớ và tại một thời điểm chỉ có một lệnh được thực thi

Hình 1.1 Mô tả kiến trúc Von Neumann

Với những bài toán yêu cầu về khả năng tính toán và lưu trữ lớn thì mô hìnhkiến trúc này còn hạn chế Để tăng cường sức mạnh tính toán giải quyết các bài toánlớn có độ tính toán cao, người ta đưa ra kiến trúc mới, với ý tưởng kết hợp nhiều bộ

xử lý vào trong một máy tính, mà hay gọi là xử lý song song (Multiprocessor) hoặckết hợp sức mạnh tính toán của nhiều máy tính dựa trên kết nối mạng (gọi là máytính song song - multicomputer)

Trong thời đại thông tin bùng nổ, con người càng ngày càng trở nên bận rộnthì nhu cầu của xử lý song song ngày càng được nâng cao nhằm xử lý được mộtlượng dữ liệu lớn nhất trong thời gian nhanh nhất có thể Xử lý song song ngàycàng được quan tâm trên thế giới vì 2 lý do chính sau đây:

- Đạt được hiệu năng cao hơn trong khi tiết kiệm được thời gian và tiền bạc

Về lý thuyết, càng đầu tư nhiều tài nguyên cho một nhiệm vụ nào đó thì càng rútngắn được thời gian thực hiện nhiệm vụ đó, đồng thời tiết kiệm được càng nhiều chi

Trang 6

phí Hơn nữa, nhiều hệ thống xử lý song song có thể được xây dựng từ những thànhphần rẻ tiền và phổ biến.

- Khả năng xử lý các bài toán lớn Nhiều bài toán trong thực tế đòi hỏi tàinguyên tính toán lớn đến mức không một máy tính đơn lẻ nào có thể đáp ứng nổi.Nhiều lĩnh vực mới như đồ họa máy tính, trí tuệ nhận tạo, phân tích số, v.v đòi hỏiphải xử lý một khối lượng dữ liệu rất lớn do đó cần phải có những hệ thống máytính thật mạnh mới thực hiện được những yêu cầu của thực tế Những vấn đề về xử

lý ngôn ngữ tự nhiên, nhận dạng, xử lý ảnh ba chiều (3-D), dự báo thời tiết, mô hình

và mô phỏng những hệ thống lớn, v.v đều đòi hỏi phải xử lý dữ liệu với tốc độc rấtcao, với khối lượng dữ liệu rất lớn Hầu hết những bài toán này, những máy tính xử

lý tuần tự kiểu von Neumann là không đáp ứng yêu cầu

Mặc dù tốc độ xử lý của các BXL tăng nhiều trong những năm qua, nhưng dogiớ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ềunà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 máy tính thìđích cuối cùng là phải khai thác được khả năng xử lý song song của chúng

Xét về mặt công nghệ, việc xây dựng, quản trị và ứng dụng một hệ thống xử lýsong song cũng không phải dễ dàng Thông thường, chi phí phải trả cho việc quảntrị một hệ thống xử lý song song trong 1 năm còn cao hơn nhiều so với chi phí bỏ ra

để mua cả hệ thống Ví dụ, một cluster có tốc độ tính toán 1 TeraFlops có chi phívào khoảng 100 nghìn USD, gần bằng chi phí phải trả cho một người quản trị hệthống trong một năm

Nghiên cứu về xử lý song song vì vậy không chỉ mang ý nghĩa khoa học, màcòn có ý nghĩa thực tiễn rất lớn Việc nghiên cứu về xử lý song song, từ lý thuyếtcho đến ứng dụng, không chỉ giúp chúng ta nắm được nền tảng công nghệ, mà còngiúp chúng ta nhìn thấy tiềm năng to lớn của xử lý song song trong công nghệ nóiriêng và các lĩnh vực kinh tế quốc dân nói chung

Trang 7

Định nghĩa: 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ệntrên những hệ thống đa bộ xử lý

Sự khác nhau giữa song song với tuần tự:

+ Trong tính toán tuần tự với một BXL thì mỗi thời điểm chỉ thực hiện đượcmột phép toán

+ Trong tính toán song song thì một số BXL cùng kết hợp với nhau để giảiquyế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

Ba yếu tố chính dẫn đến việc xử lý song song:

1 Hiện nay giá thành của phần cứng (CPU) giảm mạnh, tạo điều kiện để xâydựng những hệ thống có nhiều BXL với giá thành hợp lý

2 Sự phát triển của công nghệ mạch tích hợp VLSI cho phép tạo ra những

hệ phức hợp có hàng triệu transistor trên một chip.

3 Tốc độ xử lý của các BXL theo kiểu von Neumann đã dần tiến tới giới hạn,không thể cải tiến thêm được do vậy dẫn tới đòi hỏi phải thực hiện xử lýsong song

Vấn đề xử lý song song liên quan trực tiếp đến kiến trúc máy tính, phần mềm

hệ thống (hệ điều hành), thuật toán và ngôn ngữ lập trình, v.v

Các máy tính song song có thể phân thành nhiều loại dựa vào các đặc trưngcủa các kiến trúc và thể thực thao tác khác nhau Cụ thể là có thể dựa vào các chỉtiêu về kiểu và số lượng các BXL, sự kết nối giữa chúng, dựa vào sơ đồ truyềnthông và các thao tác vào/ra, v.v

Phần lớn các hệ điều hành ngày nay đều đã hỗ trợ đa xử lý / đa nhiệm và chophép nghiên cứu, khai thác các phương pháp lập trình song song Vấn đề là chúng taphải có nhiều BXL (các đơn vị tính toán độc lập) cùng hoạt động Nhưng điều quantrọng là chúng phải tham gia "cùng giải một bài toán" Nói cách khác, những tiến

Trang 8

trình thực hiện trên mỗi BXL phải kết hợp, trao đổi với nhau để giải quyết một bàitoán cho trước

1.2 Các mô hình máy tính song song

Định nghĩa: Một máy tính song song là tuyển tập các BXL, thường là cùng

một loại, kết nối với nhau theo một cách nào đó để có thể hợp tác với nhau tronghoạt động và trao đổi dữ liệu được với nhau

Dựa vào các đặc tính về số lượng BXL, số chương trình thực hiện, cấu trúc bộnhớ, v.v., Michael Flynn (1966) đã đưa ra cách phân loại nổi tiếng được nhiềungười chấp nhận

1 Mô hình SISD (Single Instruction, Single Data Stream - Đơn dòng lệnh,đơn dòng dữ liệu) Đây thực chất chính là kiến trúc Von Neumann

2 SIMD (Single Instruction, Multiple Data Stream - Đơn dòng lệnh, đa dòng

dữ liệu) Kiến trúc này bao gồm các bộ xử lý kiểu vectơ cũng như các bộ xử lý songsong cực lớn (MPP)

3 Mô hình MISD (Multiple Instruction, Single Data Stream - Đa dòng lệnh,đơn dòng dữ liệu)

4 Mô hình MIMD (Multiple Instruction, Multiple Data Stream - Đa dònglệnh, đa dòng dữ liệu) Kiến trúc này bao gồm các hệ đa vi xử lý truyền thống cũngnhư các mạng máy trạm

Sau đây chúng ta nghiên cứu chi tiết các mô hình trên:

1.2.1 Mô hình SISD: Đơn luồng lệnh, đơn luồng dữ liệu

Máy tính loại SISD chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉđọc, ghi một mục dữ liệu Tất cả các máy tính SISD chỉ có một thanh ghi register đượcgọi là bộ đếm chương trình (program counter) được sử dụng để nạp địa chỉ của lệnh tiếptheo khi xử lý tuần tự và kết quả là thực hiện theo một thứ tự xác định của các câu lệnh.Hình 1.2 mô tả hoạt động của máy tính theo mô hình SISD

Trang 9

Hình 1.2 Mô hình của kiến trúc SISD

Mô hình SISD còn được gọi là SPSD, đơn chương trình và đơn luồng dữ liệu.Đây chính là mô hình máy tính truyền thống kiểu von Neumann

1.2.2 Mô hình SIMD: Đơn luồng lệnh, đa luồng dữ liệu

Máy tính loại SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử

lý (nhiều hơn một đơn vị) thực hiện theo một luồng các câu lệnh CPU phát sinh tínhiệu điều khiển tới tất cả các phần tử xử lý, những BXL này cùng thực hiện mộtphép toán trên các mục dữ liệu khác nhau, nghĩa là mỗi BXL có luồng dữ liệu riêng.Đây là kiểu tính toán lặp lại các đơn vị số học trong CPU, cho phép những đơn vịkhác nhau thực hiện trên những toán hạng khác nhau, nhưng thực hiện cùng mộtlệnh Máy tính SIMD có thể hỗ trợ xử lý kiểu vector, trong đó có thể gán các phần

tử của vector cho các phần tử xử lý để tính toán đồng thời Máy tính vector và cácBXL mảng là mô hình chủ yếu thuộc loại này Hình 1-3 mô tả hoạt động của máytính theo mô hình SIMD, còn được gọi là SPMD

Hình 1.3 Mô hình của kiến trúc SIMD

Mô hình SIMD còn được gọi là SPMD, đơn chương trình và đa luồng dữ liệu.Đây chính là mô hình máy tính phổ biến có trên thị trường như: ILLIAC IV, DAP

và Connection Machine CM-2

Đơn vị điều khiển

h

BXL số học

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

Đơn vị điều khiển (CU)

Phần tử

xử lý 1

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

Trang 10

1.2.3 Mô hình MISD: Đa luồng lệnh, đơn 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ệnnhiều chương trình (nhiều lệnh) trên cùng một mục dữ liệu, nên còn được gọi làMPSD (đa chương trình, đơn luồng dữ liệu) Kiến trúc kiểu này có thể chia thànhhai nhóm:

 Lớp các máy tính yêu cầu những đơn vị xử lý (PU) 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 Đây là kiếntrúc khó và hiện nay chưa có loại máy tính nào được sản xuất theo loại này

 Lớp các máy tính có các luồng dữ liệu được chuyển tuần tự theo dãy các

CPU liên tiếp Đây là loại kiến trúc hình ống thực hiện xử lý theo vector thông qua

một dãy các bước, trong đó mỗi bước thực hiện một chức năng và sau đó chuyểnkết quả cho PU thực hiện bước tiếp theo Hoạt động của máy tính theo kiến trúc loạinày giống như hệ tuần hoàn nên còn được gọi là hệ tâm thu

Hình 1.4 Mô hình của kiến trúc MISD 1.2.4 Mô hình MIMD: Đa luồng lệnh, đa luồng dữ liệu

Máy tính loại MIMD còn gọi là đa BXL, trong đó mỗi BXL có thể thực hiệnnhững luồng lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng Hầu hếtcác hệ thống MIMD đều có bộ nhớ riêng và cũng có thể truy cập vào được bộ nhớchung (global) khi cần, do vậy giảm thiểu được sự trao đổi giữa các BXL trong hệ

CU 1

Phần tử

xử lý 2

Luồng lệnh 1

CU 2

CU n

.

Luồng lệnh 2

Luồng lệnh n

Luồng

dữ liệu

Trang 11

thống Đây là kiến trúc phức tạp nhất, nhưng nó là mô hình hỗ trợ xử lý song songcao nhất và đã có nhiều máy tính được sản xuất theo kiến trúc này, ví dụ: BBNButterfly, Alliant FX, iSPC của Intel, v.v.

Mô hình của kiến trúc MIMD được mô tả như hình 1.5

Hình 1.5 Mô hình của kiến trúc MIMD

Theo sự phân loại của Flynn thì có hai họ kiến trúc quan trọng cho các máytính song song đó là SIMD và MIMD Những kiến trúc khác có thể xếp theo haimẫu đó Mẫu hình các kiến trúc xử lý song song có thể phân chia như hình 1.6

Hình 1.6 Các mẫu hình kiến trúc xử lý song song

CU 1

Phần tử

xử lý 2 Luồng lệnh 1

CU 2

CU n

.

Luồng lệnh 2

Luồng lệnh n

Luồng dữ liệu 1

Luồng dữ liệu 2

Luồng dữ liệu n

MIMD

SIMD

HybridMISD

MultiprocessorMulticomputerData Flow MachineArray ProcessorPipelined Vector ProcessorPipelined Vector ProcessorSystolic Array

SIMD-MIMDMIMD-SIMD

Trang 12

Những kiến trúc khác nhau có thể tạo ra những khả năng khác nhau cho việc

xử lý song song Ngay trong kiến trúc tuần tự chúng ta cũng có thể tận dụng đốc độcực nhanh của các BXL để thực hiện xử lý song song theo nguyên lý chia sẻ thờigian và chia sẻ tài nguyên Tất nhiên đối với những kiến trúc máy tính song song thìmục đích chính là khai thác triệt để khả năng của kiến trúc song song để viết cácchương trình song song

1.3 Khái niệm về thuật toán song song

Một trong các mục đích chính của xử lý song song là nghiên cứu và xây dựngnhững thuật toán thích hợp để cài đặt trên các máy tính song song, nghĩa là pháttriển các thuật toán song song Câu hỏi tự nhiên là việc thiết kế một thuật toán songsong như thế nào được gọi là thích hợp cho xử lý song song? Đối với thuật toántuần tự thì chúng ta có thể thống nhất cách đánh giá dựa vào thời gian thực hiệnthuật toán, không gian bộ nhớ và khả năng lập trình, v.v việc đánh giá thuật toánsong song thì phức tạp hơn nhiều, ngoài những tiêu chuẩn trên còn phải bổ sungthêm những tham số về số BXL, khả năng của các bộ nhớ cục bộ, sơ đồ truyềnthông, và các giao thức đồng bộ hoá, v.v

Để cài đặt các thuật toán song song trên các máy tính song song chúng ta phải

sử dụng những ngôn ngữ lập trình song song Nhiều ngôn ngữ lập trình song songđang được sử dụng như: Fortran 90, nCUBE C, Occam, C-Linda, PVM với C/C++,CDC 6600, v.v

1.3.1 Định nghĩa

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 Thuật toán song song có thể xem như là một tập hợp các đơn thể độc lập, một số

trong số chúng có thể thực hiện tương tranh trên máy tính song song

Để thiết kế được các thuật toán song song cần phải trả lời các câu hỏi sau:

 Việc phân chia dữ liệu cho các tác vụ như thế nào?

 Dữ liệu được truy cập như thế nào, những dữ liệu nào cần phải chia sẻ?

 Phân các tác vụ cho các tiến trình (bộ xử lý) như thế nào?

Trang 13

 Các tiến trình được đồng bộ ra sao?

Các nguyên lý chính trong thiết kế thuật toán song song:

1 Các nguyên lý lập lịch: Sử dụng các thuật toán lập lịch cho các bộ xử lý để

giảm tối thiểu thời gian tính toán

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 {T T1, , ,2 T n}, 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

1.3.2 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úctuầ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ànhphầ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ô và môi trường song song thực tế Như vậy, cách làm 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 sao vẫn bảotoàn được tính tương đương trong tính toán Do đó, khi biến đổi chúng ta cần trả lờihai câu hỏi:

1 Kiến trúc nào phù hợp cho bài toán?

2 Những bài toán loại nào sẽ xử lý hiệu quả trong kiến trúc song song cho trước?

1.4 Đánh giá các chương trình song song

Sau đây chúng ta đưa ra cơ sở của phương pháp đánh giá độ phức tạp củathuật toán song song

Thời gian thực hiện song song

Để đá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

Trang 14

Trong một hệ thống truyền thông, thời gian truyền thông cũng phải được xem trongthời gian thực hiện của thuật toán.

Thời gian thực hiện song song, ký hiệu là tp gồm hai phần tcomptcomm

đảm bảo do vậy, việc đánh giá thời gian tính toán của những hệ như thế là rất phức tạp

Thời gian truyền thông tcommlại phụ thuộc vào kích cỡ của các thông điệp, vàocấu hình kết nối mạng đường truyền và cả cách thức truyền tải thông điệp, v.v.Công thức ước lượng thời gian truyền thông được xác định như sau:

ata

comm startup d

Trong đó

+tstartup là thời gian cần thiết để gửi những thông điệp không phải là dữ liệu.

Nó bao gồm cả thời gian để đóng gói thông điệp ở nơi gửi và thời gian mở gói ở nơinhận Để đơn giản chúng ta giả thiết thời gian này là hằng số

+ tdata là thời gian cần thiết để chuyển một từ dữ liệu (một mục dữ liệu) từ nơi

gửi tới nơi nhận, được giả thiết là hằng số và n là số từ dữ liệu được trao đổi trong

Trang 15

máy tính thứ hai khi được tính xong sẽ được chuyển về máy tính thứ nhất để nócộng hai kết quả bộ phận với nhau Bài toán này được phát biểu như sau:

3 Máy tính thứ hai chuyển kết quả tính được về máy tính thứ nhất

4 Máy tính thứ nhất cộng hai kết quả để có kết quả cuối cùng

Thời gian tính toán (ở bước 2 và 4):

Độ phức tạp tính toán là O n ( ) và độ phức tạp truyền thông cũng là O n ( ),

do vậy độ phức tạp nói chung của thuật toán trên cũng là O n ( ).

1.5 Phân tích và đánh giá thuật toán song song

Đánh giá thuật toán tuần tự có thể căn cứ chủ yếu vào thời gian thực hiện đượctính theo hàm của kích cỡ dữ liệu vào (input) Hàm này được gọi là độ phức tạp tínhtoán thời gian f(n) của thuật toán và được ký hiệu là O f n( ( )) Một cách hình thức( ( ))

Định nghĩa: Một thuật toán có độ phức tạp tính toán f x( )=O g x( ( ))Û ( )f x =

= O g x( ( )) ⇔ Tồn tại số C dương và số nguyên x0 sao cho 0 ≤ f x( ) ≤ C * g(x), vớimọi số lượng dữ liệu vào x ≥ x0

Hiển nhiên g x( ), f x( ) là hai hàm có giá trị dương O(1) ký hiệu cho một hằng

số bất kỳ

Trang 16

Độ phức tạp tính toán 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 Chúng ta giả thiết rằng mô hình tính toán có p bộ xử lý.

Nghĩa là mức độ song song là có giới hạn Ngược lại, mức độ song song không bịgiới hạn khi số các bộ xử lý là không bị chặn

Độ phức tạp thời gian của thuật toán song song sử dụng p bộ xử lý để giải một

bài toán có kích cỡ n là hàm f(n,p) xác định thời gian cực đại trôi qua giữa thời điểm

bắt đầu thực hiện thuật toán bởi một bộ xử lý và thời điểm kết thúc của các bộ xử lýđối với bộ dữ liệu vào bất kỳ Có hai loại thao tác khác nhau trong các thuật toánsong song:

1 Các phép toán cơ sở như +, -, *, /, AND, OR, v.v.

2 Các phép toán truyền dữ liệu trên các kênh truyền.

Độ 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éptoá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ìnhtính toán mà còn phụ thuộc vào số bộ xử lý được sử dụng

Nói chung, chương trình tính toán song song thường bắt đầu bằng việc nhập

dữ liệu vào bộ nhớ và kích hoạt một phần tử xử lý Mỗi bước tính toán, phần tử xử

lý này có thể đọc một số dữ liệu từ bộ nhớ, thực hiện một số phép toán cơ sở và ghikết quả vào bộ nhớ riêng hoặc bộ nhớ chung Đồng thời mỗi bước tính toán, mộtphần tử xử lý có thể kích hoạt một hay một số phần tử xử lý khác Thực tế thì cácmáy tính đều có số bộ xử lý là hữu hạn, nên những thuật toán song song không bịgiới hạn chỉ có nghĩa sử dụng khi chúng có thể chuyển đổi về thuật toán song song

bị giới hạn

Có ba cách định nghĩa khái niệm liên quan đến độ phức tạp của thuật toánsong song:

Trang 17

Định nghĩa 1: Một thuật toán song song có độ phức tạp tính toán O T( ) với P

bộ xử lý khi nó thực hiện nhiều nhất là O T P( * ) phép toán cơ sở (định lý Brent)

Định nghĩa 2: Một thuật toán song song có độ phức tạp tính toán O T( ) sửdụng rất nhiều bộ xử lý để thực hiện O e( ) phép toán cơ sở khi cài đặt với P bộ xử lý

Định nghĩa 2 chỉ ra rằng khi số bộ xử lý được sử dụng giảm xuống trong mộtphạm vi nhất định thì thuật toán tiếp tục làm việc nhưng thời gian thực hiện sẽ tăng lên.Định nghĩa 3 khẳng định rằng có cách để cài đặt thuật toán song song khi số các bộ xử lý được sử dụng bị giảm xuống

Mức độ hiệu quả của thuật toán được thể hiện ở mức độ song song của thuật toán.Mức độ song song của thuật toán là số lượng cực đại các phép toán độc lập cóthể thực hiện đồng thời ở mỗi thời điểm thực hiện của thuật toán

Ký hiệu P(W) là độ song song của thuật toán, thì thuật toán hiệu quả giải để giải bài toán có cỡ W là những thuật toán chỉ cần sử dụng nhiều nhất P(W) bộ xử lý.

Ngoài ra, để đánh giá được thuật toán song song chúng ta còn phải xét tới hệ

+ 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ý.

Với giả thiết là bộ xử lý tuần tự và bộ xử lý song song là như nhau

Trang 18

1.6 Khái niệm chương trình dịch, hệ điều hành

Đối với các hệ thống song song thì một thành phần rất quan trọng là chươngtrình dịch song song Chương trình dịch làm giảm được thời gian thực hiện chươngtrình (song song) bằng cách chia nhỏ bài toán thành các khối công việc và nhữngkhối này được xử lý đồng thời bởi nhiều đơn vị xử lý Một số chương trình chỉ làmnhiệm vụ phát hiện những khối công việc thực hiện được song song và thực hiện phânchia các đơn vị chức năng, một số khác tinh tế hơn, có thể lập lịch cho cả bài toán Có

ba cách tiếp cận để xây dựng chương trình dịch cho các máy tính song song:

1 Run Time Partitioning and Run Time Scheduling Cách tiếp cận này khá

phù hợp với một số ứng dụng thực tế Tuy nhiên, nó có hạn chế là việc lậplịch và phân hoạch được thực hiện lúc chạy chương trình sẽ làm giảm hiệuxuất của hệ thống

2 Compile Time Partitioning and Run Time Scheduling Đây là mô hình

chung để xây dựng chương trình dịch cho những đa bộ xử lý Lập lịch phânviệc được thực hiện lúc chương trình chạy, nhưng việc phân hoạch côngviệc thành các khối được thực hiện bởi người lập trình và chương trìnhdịch Theo cách tiếp cận này, sự đồng bộ hóa các tiến trình và truyền thôngphải được xác định rõ trong hệ thống

3 Compile Time Partitioning and Compile Time Scheduling Phân hoạch

công việc và lập lịch được thực hiện ở giai đoạn dịch chương trình Do vậy,chương trình dịch loại này đòi hỏi phải rất hoàn hảo Nhưng điều này khákhó, bởi vì rất khó đánh giá được thời gian thực hiện chương trình, đặc biệt

là vấn đề lập lịch trước sẽ không thể thực hiện tối ưu được

Nói chung, cho đến hiện nay khá nhiều chương trình dịch cho các máy tínhsong song được xây dựng là cho ngôn ngữ lập trình Fortran

Ví dụ chương trình dịch Paraphrase (do Kuck viết năm 1984) cho máy tính

Cedar Multiprocessor được phát triển ở Đại học Illinois, sử dụng đồ thị độc lập dữ

Trang 19

liệu để biến đổi chương trình Fortran từ dạng tuần tự sang dạng thích hợp để thựchiện song song Chương trình dịch này thực hiện theo hai giai đoạn:

1. Giai đoạn 1: thực hiện biến đổi độc lập với máy tính, chuyển chương

trình sang dạng trung gian thể hiện được dạng song song của mã chương trình.

2. Giai đoạn 2: thực hiện ánh xạ để chuyển từ dạng trung gian sang kiến

trúc song song của máy tính

Chương trình dịch Paraphrase được sử dụng khá thành công trên máy tính máy tính các bộ xử lý vector như Cray X/MP, khai thác tốt các khả năng song song

của chương trình Fortran

Một ví dụ khác là chương trình dịch song song Fortran D (Fox xây dựng năm

1991, Hiranandani cải tiến 1992, 1993) Fortran D mở rộng của Fortran, trong đócho phép người lập trình xác định được sự phân rã dữ liệu của chương trình songsong Hai vấn đề: ánh xạ sử dụng phương pháp gán mảng và ánh xạ sử dụng phân

rã, phân tán dữ liệu đã được giải quyết hiệu quả trong Fortran D

Hệ điều hành là một chương trình làm nhiệm vụ phối hợp các hoạt động củamáy tính Hệ điều hành thực hiện các chức chính sau:

 Khởi động hệ thống

 Phân đoạn chương trình và lập lịch cho các tiến trình

 Trao đổi và đồng bộ hóa các tiến trình

 Quản lý và điều hành hệ thống, v.v

Về mặt khái niệm, mục đích chính của hệ điều hành cho máy tính đơn bộ xử lý

có một chút khác với những hệ cho máy tính đa bộ xử lý Trong hệ điều hành tập

trung (đơn bộ xử lý), mọi quyết định được thực hiện dựa trên sự hiểu biết về trạng

thái tổng thể và tức thời của cả hệ thống Ngược lại, hệ điều hành đa bộ xử lý có thểthực hiện mà không cần thiết phải biết trước về trạng thái của hệ thống phân tán.Nhiệm vụ chính của hệ điều hành đa bộ xử lý là tích hợp các tài nguyên tínhtoán và các bộ xử lý trao đổi với nhau thông qua mạng liên kết để tạo thành một hệthống nhất làm việc cho hiệu quả

Trang 20

Nói chung, hệ điều hành đa bộ xử lý cũng giống như hệ điều hành tập trung,phải chứa các thành phần quản trị hệ thống như: quản trị các tiến trình, quản trị bộnhớ, quản trị tài nguyên và quản trị các tệp (file) Người ta phân các hệ điều hànhcho các máy tính song song thành ba loại:

1. Những hệ điều hành mở rộng và phát triển từ những hệ đơn bộ xử lý đểchạy được trên những kiến trúc song song, như VMS, UNIX

2. Những hệ điều hành được thiết kế riêng cho những kiến trúc song song,như: hệ Hydra cho C.mmp, Medusa cho Cm*, cả hai đều được phat triển ởCarnegie-Mellon University

3. Những hệ điều hành tổng hợp được thiết kế để cài đặt được trên những kiếntrúc song song khác nhau, ví dụ MACH Multiprocessor

Hầu hết các version mới của hệ điều hành UNIX đều thực hiện trên các hệ đa

bộ xử lý Trong số đó có thể kể ra như Solaris của Sun, HP UNIX của HP, DigitalUNIX của Digital, AIX của IBM, v.v Những hệ điều hành mới nhất như Window

NT của Microsoft cũng được thiết kế để chạy trên những hệ thống đa bộ xử lý

1.7 Một số ngôn ngữ lập trình song song

1.7.1 Lập trình song song với OCCAM

Occam là ngôn ngữ lập trình song song được Inmos Company phát triển năm

1988, mục đích chính là để thiết kế và cài đặt các chip được gọi là transputer

Transputer là một máy tính một chip đơn với một bộ xử lý, bộ nhớ riêng vàbốn kênh vào/ra Transputer có hai loại 16 bit hoặc 32 bit với tốc độ 10 triệu phéptính /giây và mỗi kênh có khả năng truyền tải 10 megabit/giây

Chương trình Occam thường nhiều tiến trình và chúng có thể được ánh xạsang một số các transputer bất kỳ để thực hiện song song và trao đổi dữ liệu vớinhau thông qua các kênh vào/ra Nói chung số lượng các transputer trong mạng cóthể tăng, hoặc giảm và chương trình có thể thực hiện mà không cần có sự thay đổinào cả

Occam là ngôn ngữ lập trình bậc cao, được sử dụng để lập trình cho những

hệ thống gồm nhiều máy tính kết nối với nhau, hoặc các hệ phân tán Tuy nhiên, so

Trang 21

với các ngôn ngữ lập trình bậc cao khác thì Occam còn thiếu một số đặc tính như hỗtrợ cơ chế đệ qui, định nghĩa kiểu dữ liệu hay con trỏ.

Trong Occam, một hành động có thể thực hiện song song được gọi là mộttiến trình và mỗi câu lệnh cần phải khai báo như một tiến trình Khi lập trình chúng

ta phải chỉ rõ là các tiến trình sẽ kết hợp với nhau một cách tuần tự hay song song.Các tiến trình cơ bản trong Occam

Có ba tiến trình nguyên thuỷ trong Occam:

Tiến trình gán: thay đổi giá trị của các biến

Tiến trình Input: nhận dữ liệu vào từ các kênh vào (cổng vào)

Tiến trình Output: gửi dữ liệu ra các kênh ra.

Ví dụ: Giả sử hai tiến trình A và B nhận các dữ liệu vào, tính bình phương của

chúng và gửi cho tiến trình C

user ? x Tiến trình A đọc dữ liệu vào cho x từ kênh user

C ! x * x Tiến trình A gửi x2 cho C

user ? y Tiến trình A đọc dữ liệu vào cho y từ kênh user

C ! y * y Tiến trình A gửi y2 cho C

Các cấu trúc điều khiển

Tiến trình trong Occam còn được xây dựng từ tổ hợp ba cấu trúc điều khiểnsau để tạo ra những tiến trình phức hợp hơn

 SEQ: cấu trúc tuần tự, các thành phần của các tiến trình trong đó thực hiện

lần lượt theo thứ tự và tiến trình này kết thúc khi thành phần cuối cùng kếtthúc

 PAR: cấu trúc song song, các thành phần của các tiến trình trong đó thực

hiện đồng thời và tiến trình này kết thúc khi tất cả các thành phần của nókết thúc

 ALT: cấu trúc tuyển chọn, chọn một trong các thành phần của các tiến

trình để thực hiện nếu nó thoả mãn điều kiện lựa chọn và tiến trình này kếtthúc khi thành phần được lựa chọn kết thúc

Trang 22

Ngoài ra, còn có những cấu trúc điều khiển IF, gọi là tiến trình điều kiện để chọnmột tiến trình thành phần khi biểu thức Boolean có giá trị true và cấu trúc lặpWHILE, gọi là tiến trình lặp để thực hiện lặp lại tiến trình thành phần cho đến khibiểu thức điều kiện Boolean nhận giá trị true.

Ví dụ: Giả sử có hai tiến trình giống nhau cùng nhận dữ liệu vào và cộng

dồn vào tổng

CHAN In1, In2:

CHAN Out1, Out2:

VAR Sum1, Sum2:

SEQ

Sum1:= 0Sum2:= 0PAR

Tiến trình thứ nhấtWhile TRUE

VAR Item1:

SEQ

In1 ? Item1Sum1:= Sum1 + Item1Out1 ! Sum1

Tiến trình thứ haiWhile TRUE

VAR Item1:

SEQ

In2 ? Item2Sum2:= Sum2 + Item2Out2 ! Sum2

Sự trao đổi giữa các tiến trình

Trang 23

Trong ví dụ trên, các tiến trình không cần trao đổi với nhau vì mỗi tiến trìnhđều sử dụng các biến cục bộ của riêng mình Khi có nhiều tiến trình muốn trao đổi

dữ liệu với nhau thì phải trao đổi với nhau trên cùng một kênh truyền dữ liệu Mộttiến trình gửi dữ liệu ra một kênh truyền và tiến trình kia nhận dữ liệu từ kênh đó.Trong chương trình Occam, mỗi tiến trình thực hiện trên một bộ xử lý và truyềnthông điệp tới những bộ xử lý lân cận theo kiến trúc hình khối (hình 2-8)

Ví dụ: chương trình đơn giản trong Occam để tính số π sử dụng tích phâncủa đường cong 4/(1+x2) trong khoảng 0 và 1 Các dòng 1-3 định nghĩa các hằng N

là số các đoạn con tối đa để tính tích phân, PROCESS là số các tiến trình được tạo

ra và CHUNK lá số đoạn giao cho mỗi tiến trình Trong các dòng 6-17 thì các tiếntrình thực hiện song song và sau đó, tiến trình cuối cùng thực hiện các lệnh từ 18-31

6 PAR i = [0 FOR PROCESS]

7 REAL64x, localsum, width:

10 width:= 1.0 / N

11 x:= ((i * CHUNK) + 0.5) * width

12 SEQ i = [0 FOR CHUNK]

Trang 24

27 ALT i = [0 FOR PROCESS]

28 (got[i] = FALSE) & sum’i]? Y

30 pi:= pi + y

31 output ! “So Pi gần đúng là: “; pi

1.7.2 Lập trình song song với PVM

Phần này chúng ta giới thiệu tóm tắt cách phát triển các chương trình songsong thực hiện trên những máy tính nối mạng trong môi trường UNIX, hoặc mạngLAN PVM là hệ thống cho phép một tuyển tập các trạm máy tính không thuần nhất

và các máy tính kết nối với nhau để xử lý song song Nó có những đặc tính chính:

 Thực hiện theo mô hình truyền thông điệp tường minh

 Hỗ trợ sự kết nối không thuần nhất: PVM hỗ trợ sự kết hợp của các máytính, mạng máy tính và nhiều loại chương trình ứng dụng

 Hỗ trợ đa bộ xử lý: PVM sử dụng những khả năng truyền thông điệp trong

hệ đa bộ xử lý để khai thác hết khả năng của phần cứng

 Tính toán dựa trên tiến trình: Đơn vị điều khiển thực hiện song song trongPVM là một tác vụ, đó là một luồng (Thread) làm nhiệm vụ điều khiển sựtruyền thông và tính toán

 Thay đổi cấu hình theo yêu cầu: Các chương trình có thể thực hiện trên tậpcác máy được lựa chọn theo yêu cầu của NSD

Trang 25

PVM xử lý tất cả các vấn đề định tuyến truyền thông điệp, chuyển đổi dữliệu, lập lịch trong mạng máy tính Hệ thống PVM gồm hai thành phần chính:

 Khối pvmd hoặc pvm3 đặt thường trú trên tất cả các máy tính để tạo ra máy ảo

 Thư viện các chương trình con giao diện của pvm: chứa các chương trìnhcon để truyền thông điệp, quản lý các tiến trình, phối hợp các tác vụ và thayđổi các máy ảo

Mô hình tính toán của PVM được xác định như hình 1.7 và một dạng kiến trúc

Nhập dữ liệu và phân đoạn

Xuất dữ liệu và hiển thị kết quả

MPP

Bridg e

SIMD

Trang 26

Hình 1.8 Một kiến trúc của PVM

Phương thức thực hiện chương trình trong PVM như sau:

 Những chương trình viết bằng C/C++, Fortran 77 có thể chứa những lời gọicác hàm thự viện của PVM Đây là những ngôn ngữ lập trình được PVM hỗ trợ

 Các chương trình được dịch theo kiến trúc của hệ thống (host pool), các tệp

mã đích (object file) được đặt vào những nơi mà mọi máy tính đều truy cậpđược

 NSD tạo ra một bản sao của tác vụ chủ (master) hoặc khởi động một tác

vụ Một tiến trình được bởi động bởi một tiến trình khác được gọi là tiến

trình tớ (slave) Những tiến trình này thực hiện một số tính toán cục bộ và

trao đổi với nhau để giải quyết bài toán đặt ra

Ví dụ: Chương trình in ra màn hình định danh của tác vụ (số nguyên) nhận được từ pvm_myid(), sau đó sử dụng:

pvm_spawn() để tạo ra một bản sao và gọi chương trình hello_other

pvm_recv() để nhận thông điệp

pvm_exit() để kết thúc chương trình trong PVM

pvm_parent() nhận một tác vụ của tiến trình tớ từ tiến trình chủ

pvm_initsend() khởi tạo buffer để gửi

pvm_pkstr() đặt một xâu vào buffer để gửi đi

pvm_upkstr() đọc một xâu vào buffer

pvm_send() chuyển dữ liệu ở buffer tới tiến trình nhận được xác định bởi ptid.

/* Chương trình chủ có tên Hello.c */

Trang 27

cc = pvm_spawn(“Hello_other”, (char**)0, 0, “”, 1, &tid);

if(cc== 1){

msg = 1;

pvm_recv(tid, msg);

pvm_upkstr(buf);

printf(“From master %x: %s\n”, tid, buf);

} else printf(“Cannot start hello_other\n”);

Kết luận: Nội dung chính của chương 1 đã giới thiệu các kiến thức cơ bản

nhất về vấn đề xử lý song song, các mô hình của máy tính song song cũng như khái

Trang 28

niệm về thuật toán song song và nguyên tắc đánh giá độ phức tạp thuật toán Các

kiến thức này làm nền tảng cho việc nghiên cứu các chương tiếp sau của luận văn

Chương 2 CÁC THUẬT TOÁN TỐI ƯU TRÊN MÔ HÌNH ĐỒ THỊ

2.1 Một số khái niệm đồ thị

2.1.1 Mô hình đồ thị

Giả sử V là tập hữu hạn, không rỗng các phần tử nào đó Bộ G = (V,E) được gọi là đồ thị hữu hạn Mỗi phần tử của V gọi là một đỉnh và mỗi phần tử u = (x,y) của E được gọi là một cạnh của đồ thị G = (V,E).

Xét một cạnh u của E khi đó tồn tại hai đỉnh x, y của V sao cho u = (x,y), ta nói rằng x nối với y hoặc x và y phụ thuộc u.

- Nếu u = (x,x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên.

- Nếu u = (x,y) mà x, y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến y thì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh vào.

Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị đểbiểu diễn, như sơ đồ mạng máy tính, sơ đồ mạng lưới giao thông, sơ đồ thi côngmột công trình

Định nghĩa 1 Đơn đồ thị vô hướng là tập G = (V,E) trong đó V là các tập

đỉnh và E là các tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi

là các cạnh.

Định nghĩa 2 Đa đồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và E

là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh Hai cạnh e 1 và e 2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh.

Trang 29

Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào cũng làđơn đồ thị, vì trong đa đồ thị có thể có hai (hoặc có nhiều hơn) cạnh nối một cặpđỉnh nào đó.

Hình 2.1 Sơ đồ mạng máy tính với đa kênh thông báo

Trong thực tế, các mạng máy tính có thể có những kênh thoại nối một máy nào

đó với chính nó (chẳng hạn với mục đích thông báo) Mạng như vậy được cho tronghình 4 Khi đó đa đồ thị không thể mô tả được mạng như vậy, bởi vì có nhữngkhuyên (cạnh nối một đỉnh với chính nó) Trong trường hợp này chúng ta cần sử

dụng đến khái niệm giả đồ thị vô hướng, được định nghĩa như sau.

Định nghĩa 3 Giả đồ thị vô hướng G = (V,E) bao gồm V là các tập đỉnh, và E

là họ các cặp không có thứ tự (không nhất thiết phải khác nhau) của V gọi là các cạnh Cạnh e được gọi là khuyên nếu nó cú dạng e = (u,u).

Các kênh thoại trong mạng máy tính có thể chỉ cho phép truyền tin theo một

chiều Chẳng hạn trong hình 2.2 máy chủ ở a chỉ có thể nhận tin từ các máy ở máy

khác, có một số máy chỉ có thể gửi tin đi, còn các kênh thoại cho phép truyền tintheo cả hai chiều được thay thế bởi hai cạnh có hướng ngược chiều nhau

h

g e

b a

Trang 30

Hình 2.2 Mạng máy với các kênh thoại một chiều

Ta đi đến định nghĩa sau

Định nghĩa 4 Đơn đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E

là các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung.

Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng đến khái

niệm đa đồ thị có hướng:

Định nghĩa 5 Đa đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E

là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung Hai cung

e 1 , e 2 tương ứng cùng với một cặp đỉnh được gọi là cung lặp.

Trong các phần tử tiếp theo chủ yếu chúng ta sẽ làm việc với đơn đồ thị vôhướng và đơn đồ thị có hướng Vì vậy, để ngắn gọn, ta bỏ qua tính từ đơn khi nhắcđến chúng

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

Trong phần này chúng ta sẽ trình bày một số thuật ngữ cơ bản của lý thuyết đồ thị

Định nghĩa 1 Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu

(u,v) là cạnh của đồ thị G Nếu e = (u,v) là cạnh của đồ thị thì ta nói cạnh này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu của cạnh (u,v).

Định nghĩa 2 Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên

thuộc với nó và sẽ ký hiệu là deg(v).

Đỉnh bậc 0 gọi là đỉnh cô lập Đỉnh bậc 1 gọi là đỉnh treo

Định lý 1 Giả sử G = (V,E) là đồ thị vô hướng với m cạnh Khi đó:

Trang 31

Chứng minh Rõ ràng mỗi cạnh e = (u,v) được tính một lần trong deg(u) và

một lần trong deg(v) Từ đó suy ra tổng tất cả các bậc của các đỉnh bằng hai lần

Do deg(v) chẵn với v là đỉnh trong U nên tổng thứ hai trong vế phải ở trên là

số chẵn Từ đó suy ra tổng thứ nhất (chính là tổng bậc của các đỉnh lẻ) cũng phải là

số chẵn, do tất cả các số hạng của nó sẽ là số lẻ nên tổng này phải gồm một số chẵncác số hạng Vì vậy số đỉnh bậc lẻ phải là số chẵn

Ta xác định thuật ngữ tương tự cho đồ thị có hướng

Định nghĩa 3 Nếu e = (u,v) là cung của đồ thị có hướng G thì ta nói hai đỉnh

u và v là kề nhau, và nói cung (u,v) nối đỉnh u với đỉnh v hoặc cũng nói cung này là

đi ra khỏi đỉnh u và đi vào đỉnh v Đỉnh u(v) sẽ được gọi là đỉnh đầu (cuối) của cung (u,v).

Định nghĩa 4 Ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có

hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg + (v)(deg - (v)).

Hình 2.3 Đồ Thị có hướng G Thí dụ 3 Xét đồ thị cho trong hình 2.3 Ta có

deg - (a) = 1, deg - (b) = 2, deg - (c) = 2, deg - (d) = 2, deg - (e) = 2.

d e

c b

a

Trang 32

deg + (a) = 3, deg + (b) = 1, deg + (c) = 1, deg + (d) = 2, deg + (e) = 2.

Do mỗi cung (u,v) sẽ được tính một lần trong bán bậc vào của đỉnh v và một lần trong bán bậc ra của đỉnh u nên ta có:

Định lý 2 Giả sử G = (V,E) là đồ thị có hướng Khi đó

2.1.3 Đường đi, chu trình Đồ thị liên thông

Định nghĩa 1 Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số

nguyên dương, trên đồ thị vô hướng G =(V E, )là dãy x x0, , ,1 x n-1,x n trong đó

Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi Đường đi có

đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình Đường đi hay chu

trình được gọi là đơn nếu như không có cạnh nào bị lặp lại

Khái niệm đường đi và chu trình trên đồ thị có hướng được định nghĩa hoàntoàn tương tự như trường hợp đồ thị vô hướng, chỉ khác là ta có chú ý đến hướngtrên các cung

2.1.4 Cây và cây khung của đồ thị

Định nghĩa 1: Cây là một đồ thị vô hướng liên thông, không chứa chu trình và

có ít nhất hai đỉnh

Định nghĩa 2: Trong đồ thị liên thông G, nếu ta loại bỏ cạnh nằm trên chu

trình nào đó thì ta sẽ được đồ thị vẫn là liên thông Nếu cứ loại bỏ các cạnh ở cácchu trình khác cho đến khi nào đồ thị không còn chu trình (vẫn liên thông) thì ta thu

được một cây nối các đỉnh của G Cây đó gọi là cây khung hay cây bao trùm của đồ thị G.

Định nghĩa 5: Một cây có gốc T được gọi là cây m-phân nếu mỗi đỉnh của T

có nhiều nhất là m con Với m=2, ta có một cây nhị phân.

2.2 Mô hình các bài toán tối ưu

Trang 33

2.2.1 Bài toán cây khung nhỏ nhất

Bài toán cây khung nhỏ nhất của đồ thị là một trong số những bài toán tối ưutrên đồ thị tìm được ứng dụng trong nhiều lĩnh vực khác nhau trong đời sống Trongmục này chúng ta sẽ trình bày những thuật toán cơ bản để giải bài toán này Trướchết chúng ta phát biểu nội dung của bài toán

Cho G = (V, E) là một đồ thị vô hướng liên thông Với V= {1,2, , n } và tập cạnh E gồm m cạnh Với mỗi cạnh e của đồ thị được gán với một số không âm c(e) gọi là độ dài của nó Giả sử H=(V, T) là cây khung của đồ thị G (T tập cạnh nhỏ nhất của cây khung) Ta gọi độ dài C(H) của cây khung H là tổng độ dài của các

cạnh của nó: C(H) =

T e e

c )(

Bài toán đặt ra là trong số tất cả các cây khung của đồ thị G hãy tìm cây khung

với độ dài nhỏ nhất Cây khung như vậy gọi là cây khung nhỏ nhất của đồ thị và bàitoán đặt ra được gọi là bài toán cây khung nhỏ nhất

Trước khi tìm hiểu về các thuật toán chúng ta xét một số bài toán thực tế sau:

Bài toán xây dựng hệ thống đường sắt:

Cần xây dựng một hệ thống đường sắt nối n thành phố sao cho hành khách có

thể đi từ bất kỳ một thành phố nào đến bất kỳ một trong các thành phố còn lại Mụctiêu là phải xây dựng sao cho chi phí xây dựng hệ thống đường sắt là nhỏ nhất

Bài toán nối mạng máy tính:

Cần nối mạng một hệ thống mạng truyền thông nối n trung tâm máy tính với

nhau Bất kỳ hai trung tâm nào cũng có thể được kết nối với nhau bằng điện thoại.Cần phải kết nối như thế nào để đảm bảo giữa hai trung tâm máy tính bất kỳ luôn cóđường truyền thông sao cho tổng số tiền thuê bao của toàn mạng là tối thiểu?

Ta có thể mô hình bài toán này bằng một đồ thị trọng số, trong đó mỗi đỉnh làmột trung tâm máy tính, mỗi cạnh là một đường truyền thông được thuê bao, còntrọng số của mỗi cạnh là tiền thuê bao hàng tháng của đường truyền thông đượcbiểu thị bằng cạnh đó Ta có thể giải bài toán này bằng cách tìm cây khung sao cho

Trang 34

tổng các trọng số của các cạnh của cây đạt cực tiểu đây chính là cây khung nhỏnhất của đồ thị.

Do tính chất của cây, nên nếu đồ thị G có n đỉnh thì cây khung có đúng n-1 cạnh 2.2.1.1 Thuật toán Kruskal

Thuật toán KRUSKAL:

+ Input: Đồ thị G=(V,E);

+ Output: Tập các cạnh T của cây khung nhỏ nhất.

+ Bước 1: Sắp xếp các cạnh của đồ thị G theo thứ tự tăng dần của trọng số Ci,j

+ Bước 2: Xuất phát từ T=φ

+ Bước 3: Kết nạp dần các cạnh vào T theo nguyên tắc:

Duyệt trong danh sách cạnh đã sắp xếp, từ cạnh có độ dài nhỏ đến cạnh có độ

dài lớn, tìm ra cạnh mà việc bổ sung nó vào tập T không tạo thành chu trình trong tập này Thuật toán sẽ dừng khi T chứa đúng n-1 cạnh.

Ngày đăng: 15/04/2017, 20:48

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[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 Sách, tạp chí
Tiêu đề: Toán rời rạc
Nhà XB: Nhà xuất bản Giáo dục
[2] Rosen K.H. Discrete Mathematíc and its Applications, McGraw-Hill Book Copany, 1999 Sách, tạp chí
Tiêu đề: Discrete Mathematíc and its Applications
[3] Joseph JaJa, An Introduction to Parallel Algorithms, Addison - Wesley, 1992 Sách, tạp chí
Tiêu đề: An Introduction to Parallel Algorithms
[4] K. Mani Changdy, J. Misra, Parallel Program Design, Addison-Wesley, 1989 Sách, tạp chí
Tiêu đề: Parallel Program Design
[5] Michael J. Quinn, Parallel Computing Theory and Practice, MaGraw-Hill, 1994 Sách, tạp chí
Tiêu đề: Parallel Computing Theory and Practice
[6] C. A. R. Hoare, Communicating Sequencatial Processes, Prentice Hall, 1985 Sách, tạp chí
Tiêu đề: Communicating Sequencatial Processes
[7] Barry Wilkingson, Michael Allen, Parallel Programming, Technigues and Applications Using Networked Workstations and Parallel Computers, Prentice Hall New Jersey, 1999 Sách, tạp chí
Tiêu đề: Parallel Programming, Technigues andApplications Using Networked Workstations and Parallel Computers
[8] M. Sasikumar, Dinesh Shikhare, P. Ravi Prakash, Introduction to Parallel Processing, Prentice - Hall, 2000 Sách, tạp chí
Tiêu đề: Introduction to ParallelProcessing

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