Thuật toán nhánh cận trên môi trường song song

33 223 0
Thuật toán nhánh cận trên môi trường song song

Đ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

Thuật toán nhánh cận trên môi trường song song

- 1 - TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CƠNG NGHỆ THƠNG TIN -------***------- B ÁO C ÁO KHOA H ỌC Chun đề : Xử lí song song Đề tài: Th uật tốn nhánh cận trên mơi trường song song Giáo viên hướng dẫn : Th.s Đỗ Trung Kiên Sinh viên thực hiện : Nguyền Thị Bích Nhật Phạm Thị Thuỳ Trần Thị Thanh Tâm Bùi Thu Hường Trần Thị Hoa Nguyễn Chí Cơng Hà Nội, 15/04/2008 THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 2 - MỤC LỤC Chương 1 : TỔNG QUAN VỀ THUẬT TỐN NHÁNH CẬN . - 3 - 1.1. Thuật tốn nhánh cận - 3 - 1.2. Một số ví dụ cụ thể áp dụng thuật tốn nhánh cận . - 5 - Chương 2 : XÂY DỰNG KHUNG THUẬT TỐN NHÁNH CẬN . - 7 - * Nhóm các lớp u cầu . - 8 - * Nhóm các lớp cung cấp . - 10 - 2.1. Xây dựng khung nhánh cận - 12 - 2.1.1. Cấu trúc dữ liệu - 12 - 2.1.2. Thuật tốn - 12 - 2.2. Xây dựng khung nhánh cận tuần tự - 15 - 2.3. Xây dựng khung nhánh cận song song . - 16 - 2.3.1. Lược đồ song song dữ liệu tập trung . - 19 - 2.3.2. Lược đồ song song dữ liệu phân tán - 22 - 2.4. Cơng cụ phát triển hệ thống - 25 - 2.5. Lựa chọn mơ hình phát triển hệ thống - 25 - Chương 3 : SỬ DỤNG THUẬT TỐN NHÁNH CẬN ĐỂ GIẢI QUYẾT BÀI TỐN TSP . - 27 - * Bài tốn TSP (Bài tốn người du lịch) - 27 - 3.1. Giới thiệu bài tốn - 27 - 3.2. Định nghĩa bài tốn . - 27 - 3.3. Sử dụng thuật tốn nhánh cận để giải bài tốn TSP . - 28 - 3.4. Chương trình thực thi - 32 - THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 3 - Chương 1 : TỔNG QUAN VỀ THUẬT TỐN NHÁNH CẬN Thuật tốn nhánh cận là phương pháp chủ yếu để giải các bài tốn tối ưu tổ hợp. Ta sẽ thực hiện việc đánh giá theo từng bước, nếu khơng có khả năng tìm thấy kết quả tốt hơn thì sẽ cắt nhánh đó, khơng thực hiện tìm tiếp mà chuyển ngay sang nhánh khác. Khi đó, chỉ ghi nhận các kết quả tốt hơn lúc ban đầu. Nghiệm của bài tốn sẽ tốt dần lên do khi tìm ra kết quả tốt hơn ta sẽ cập nhật lại giá trị hiện thời của bài tốn. 1.1. Thuật tốn nhánh cận Một trong những bài tốn đặt ra trong thực tế là tìm một nghiệm của bài tốn thỏa mãn một số điều kiện nào đó và nghiệm đó là tốt nhất theo một tiêu chí cụ thể, nghiên cứu lời giải các bài tốn tối ưu thuộc về lĩnh vực quy hoạch tốn học. mơ hình được sử dụng để tìm kiếm là mơ hình cây phân cấp . việc tìm nghiệm của các bài tốn thường phải dựa vào việc liệt kê tồn bộ các cấu hình có thể và đánh giá tìm ra cấu hình tốt nhất. Ví dụ: Bài tốn người du lịch: khơng gian trạng thái là N! Bài tốn K- median : khơng gian trạng thái là )!(! ! knk n C k n − = Khi đó, khơng gian tìm kiếm của bài tốn là rất lớn trong khi nhiều trường hợp có thể loại bỏ được ngay. Điều này gây nên tình trạng lãng phí bộ nhớ và mất rất nhiều thời gian. Vấn đề đặt ra là trong q trình liệt kê lời giải cần tận dụng những thơng tin đã có để loại bỏ sớm những phương án chắc chắn khơng tối ưu. Thuật tốn nhánh cận được sử dụng để khắc phục những vấn đề trên Tư tưởng cơ bản của thuật tốn là trong q trình tìm kiếm lời giải, ta sẽ phân hoạch tập các phương án của bài tốn thành hai hay nhiều tập con biểu diễn như một THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 4 - nút của cây tìm kiếm và cố gắng bằng phép đánh giá cận các nút, tìm cách loại bỏ các nhánh cây (những tập con các phương án của bài tốn) mà ta biết chắc chắn khơng phải là phương án tối ưu. Mặc dù trong trường hợp tồi nhất thuật tốn sẽ trở thành duyệt tồn bộ, nhưng những trường hợp cụ thể nó rút ngắn đáng kể thời gian tìm kiếm. Để áp dụng phương pháp nhánh cận đối với 1 tập các bài tốn tối ưu chúng ta cần làm theo các bước sau: • Bước1 ( khởi tạo): L:={П 0 }, Q: ={П 0 },bs:= -∞ và T:= (tập hợp rỗng). • Bước 2( tìm kiếm): đi tới Bước 9 nếu L = đi đến Bước 3 sau khi lựa chọn Пi:= s(Ls) để kiểm tra. • Bước 3 (cập nhật ): Nếu lower_bound(Пi)> bs, thì bs:= lower_bound(Пi) và T:={σ } với σ là lời giải khả thi của Пi sao cho f(x,σ )= lower_bound(П i). Đi tới bước 4. • Bước 4 : đi tới Bước 8 nếu Пi ∈ G (tập hợp các bài tốn bộ phận Пi được giải trong tiến trình tính tốn cận trên của Пi). ngược lại thì đi đến Bước 5. • Bước 5: ( kiểm tra cận trên): đi đến bước 8 nếu cận trên nhỏ hơn bs: upper_bound(Пi) ≤ bs. Ngược lại đi tới bước 6. • Bước 6: đi tới bước 8 nếu tồn tại một Пk (≠ Пi) ∈ Q mà f(Пk) ≥ f(Пi). Ngược lại đi tới bước 7. • Bước7: (phân nhánh): Phân và cập nhật . Quay trở lại bước 2. • Bước 8 ( kết thúc bài tốn con): gán L:= L - Пi sau đó quay trở lại bước 2. • Bước 9 ( kết thúc tồn bộ ) : Dừng. bs = f(П 0 ) và T lưu trữ một lời giải tối ưu của П 0 , nếu bs = - ∞ , П 0 khơng có lời giải THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 5 - 1.2. Một số ví dụ cụ thể áp dụng thuật tốn nhánh cận Bài 1: Bài tốn người du lịch( TSP) • Phát biểu bài tốn : Một người du lịch muốn đi thăm quan n thành phố T1 , T2 , … , Tn .Xuất phát từ một thành phố nào đó người du lịch muốn đi qua tất cả các thành phố còn lại, mối thành phố đúng một lần, rồi quay trở lại thành phố xuất phát. Biết ci,j là chi phí từ thành phố Ti đến thành phố Tj . Hãy tìm hành trình với tổng chi phí nhỏ nhất • Xây dựng cơng thức : Phương án : π = (π1, π2, … πn) là hốn vị của 1, 2, …, n Hành trình : T π1 → T π2 → …… → T πn Chi phí : f(π) = c π1, π2 + c π2, π3 + …. + c πn, π1 Π : tập tất cả các hốn vị => min {f(π) : π ∈ Π } • Tư tưởng của thuật tốn nhánh cận: Cố định thành phố 1 Tìm cực tiểu của hàm : f(x2, x3, . . , xn) = c[1,x2] + c[x2,x3] + . + c[xn,1] => min x2, x3, . . , xn là hốn vị của các số 2, 3, …, n Ký hiệu : cmin = min{c[i,j]; i, j = 1,2,…,n, i≠j} Giả sử có phương án bộ phận (u1,u2, …, uk) – Chi phí phải trả là : σ = c[1,u2] + c[u2,u3] + . + c[uk-1, uk] – Cận dưới là : g (u1,u2, …, uk) = σ + (n-k+1)*cmin THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 6 - 1. Phương pháp phân nhánh: + Nếu bài tốn con có g() > f -(Kỉ lục tạm thời) thì cắt ln nhánh của bài tốn này + Nếu khơng thì phân nhánh tiếp bài tốn con cho đến khi tính được kỉ lục của bài tốn con này. Nếu kỉ lục của bài tốn con nhỏ hơn f() thì cập nhật lại kỉ lục tạm thời f() 2. Phương pháp tính cận: tính cận trên của bài tốn con dựa vào cơng thức σ = c[1,u2] + c[u2,u3] + . + c[uk-1, uk] g (u1,u2, …, uk) = σ + (n-k+1)*cmin Bài 2: Bài tốn cái túi • Phát biểu bài tốn : Một nhà thám hiểm cần đem theo một cái túi có trọng lượng khơng q b. Có n đồ vật có thể đem theo. Đồ vật thứ j có trọng lượng a và giá trị sử dụng là c . Hỏi rằng nhà thám hiểm cần đem theo các đồ vật nào để cho tổng giá trị sử dụng của các đồ vật đem theo là lớn nhất. • Xây dựng cơng thức : Phương án x = {x1,x2, …, xn} Giá trị đồ vật đem theo Tổng trọng lượng đồ vật  min{f(x) : g(x) ≤ b} THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 7 - Chương 2 : XÂY DỰNG KHUNG THUẬT TỐN NHÁNH CẬN Thuật tốn nhánh cận được xây dựng với mong muốn giải quyết được tập các bài tốn tối ưu tổ hợp. Có nghĩa là tất cả các bài tốn đó sẽ được giải quyết dựa trên một khung chung của thuật tốn để khi vào một bài tốn cụ thể người viết chương trình chỉ cần thêm vào khung đó những dữ liệu phù hợp với bài tốn của mình. Nó giảm bớt thời gian xây dựng thuật tốn đồng thời nó hữu ích cho những người khơng biết kỹ thuật nhánh cận trên mơi trường song song vẫn có thể cài đặt song song. Chương này sẽ trình bày việc xây dựng khung của kĩ thuật nhánh cận và kỹ thuật nhánh cận trên mơi trường tuần tự hoặc song song. Hệ thống gồm hai nhóm : một nhóm các lớp cung cấp (Provided) bao hàm các thủ tục chung cho thuật tốn nhánh cận (ví dụ như khung của thuật tốn nhánh cận tuần tự, khung của thuật tốn nhánh cận song song .) và nhóm các lớp u cầu (Required) bao hàm các thủ tục riêng để giải quyết một bài tốn cụ thể sử dụng kỹ thuật nhánh cận (ví dụ như các thủ tục tính cận, thủ tục phân nhánh, .). Để giải quyết một bài tốn bằng kỹ thuật nhánh cận, người sử dụng chỉ cần viết các khai báo và xây dựng các hàm trong nhóm u cầu mà khơng cần xây dựng lại nhóm cung cấp. Hình 4.1 diễn tả mơ hình UML tổng quan của hệ thống. THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 8 - * Nhóm các lớp u cầu Mơ hình chung của nhóm các lớp u cầu Hình 2 diễn tả các lớp và thủ tục chính trong nhóm u cầu. Hình 1 : Mơ hình UML Hình 2 : Các lớp u cầu THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 9 - Các lớp u cầu được sử dụng để lưu trữ dữ liệu cơ bản của thuật tốn : bài tốn, trạng thái khơng gian tìm kiếm. Nó bao gồm các lớp chính sau : - Bài tốn (Problem): Diễn tả các tham số của bài tốn cần giải quyết. - Bài tốn con (Subproblem) : Diễn tả vùng khơng gian chưa được khai thác và cung cấp các chức năng sau : o InitSubProblem(pbm) : Sinh ra bài tốn con đầu tiên từ bài tốn ban đầu o LowerBound(pbm, sol) : Tính tốn cận dưới của hàm mục tiêu cho lời giải bộ phận sol của bài tốn pbm. o UpperBound(pbm, sol) : Tính giá trị hàm mục tiêu của lời giải tồn cục sol của bài tốn pbm. o Branch(pbm, sps) : Sinh ra một tập các bài tốn con của bài tốn đang xét và lưu vào sps. Lớp bài tốn con diễn tả một bài tốn bộ phận. Một bài tốn con được xác định bởi các dữ liệu sau : vector sol chứa các chỉ số đỉnh làm median của bài tốn con (hay là lời giải bộ phận của bài tốn cần giải quyết) và được sắp xếp theo thứ tự tăng dần, chỉ số đỉnh cuối eV của lời giải bộ phận, và cận dưới cost ứng với lời giải bộ phận sol. Lớp bài tốn con phải cung cấp các hàm chính sau : - InitSubProblem(pbm): sinh ra bài tốn con ban đầu với - Các hàm tính cận dưới (LowerBound), tính cận trên (UpperBound), phân nhánh (Branch). THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - 10 - * Nhóm các lớp cung cấp Trước khi mơ tả lớp cung cấp chúng ta cần xem xét cấu trúc dữ liệu để lưu các bài tốn con chưa được giải quyết trong q trình tính tốn. Vì số lượng các bài tốn con là rất lớn và khơng biết trước nên ta sử dụng một danh sách liên kết kép để quản lý chúng. Lớp Solver : Làm nhiệm vụ đưa ra và duy trì các thơng tin có liên quan tới trạng thái tìm kiếm trong suốt q trình thực hiện class Solver { protected: const Problem& pbm;// bài tốn cần giải quyết Direction dir; SubProblem sp; // bài tốn con hiện thời cần giải quyết Solution sol; // giải pháp tốt nhất hiện thời container<SubProblem> HP;// danh sách các bài tốn con cần giải quyết Bound high;// cận trên của nhánh bài tốn con Bound low;// cận dưới của nhánh bài tốn con Bound bestSol;// kỉ lục hiện thời của bài tốn public: Solver(const Problem &problem); THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN [...]... như một lớp trên chuẩn MPI 2.5 Lựa chọn mơ hình phát triển hệ thống Phân lớp thuật tốn nhánh cận song song Có ba cách tiếp cận chính trong việc thiết kế thuật tốn nhánh cận song song - Song song loại 1 : Tiến hành song song hóa các hoạt động trên bài tốn con, ví dụ như tính cận song song trên bài tốn con Cách tiếp cận này khơng ảnh hưởng tới cấu trúc chung của thuật tốn nhánh cận - Song song loại 2... thuật tốn nhánh cận tuần tự - 15 - THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 4: Thuật tốn nhánh cận tuần tự 2.3 Xây dựng khung nhánh cận song song Để song song hóa khung sử dụng kỹ thuật nhánh cận chúng ta sử dụng chiến lược chủ - thợ Chiến lược này có thể được định nghĩa như sau: một bộ xử lý chủ giữ tất cả thơng tin về khơng gian trạng thái, nơi mà chứa đựng số lượng các bài tốn con chưa được phân nhánh trên. .. tiếp cận song song loại 2 để thiết kế thuật tốn nhánh cận song song Lựa chọn mơ hình phát triển thuật tốn Có hai hệ thống tính tốn song song chủ yếu là bộ nhớ dùng chung và bộ nhớ phân tán Chúng tơi lựa chọn hệ thống bộ nhớ phân tán để tiến hành thiết kế thuật tốn vì một số lý do sau : - 25 - THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN - Lý do đầu tiên xuất phát từ thực tế đó là có thể tiến hành các thuật tốn song song... VIỆN ĐIỆN TỬ TRỰC TUYẾN Chương 3 : SỬ DỤNG THUẬT TỐN NHÁNH CẬN ĐỂ GIẢI QUYẾT BÀI TỐN TSP Trong chương này chúng tơi đưa ra các kết quả thực nghiệm nhằm đánh giá hiệu suất của mơ hình thuật tốn nhánh cận song song đề xuất ở trên Thuật tốn tuần tự được lựa chọn để so sánh có cùng cách tính cận, phân nhánh và lựa chọn bài tốn con như trong mơ hình thuật tốn song song * Bài tốn TSP (Bài tốn người du lịch)... thuật tốn nhánh cận - Song song loại 2 : Xây dựng cây nhánh cận một cách song song bằng việc thực hiện các hoạt động trên các bài tốn con một cách đồng thời Vì thế nó có thể ảnh hưởng tới việc thiết kế thuật tốn - Song song loại 3 : Một vài cây nhánh cận được xây dựng một cách song song Các cây được đặc thù bởi các hoạt động khác nhau (phân nhánh, tính cận, kiểm tra ước lượng hay lựa chọn), và thơng tin... các bài tốn con của kĩ thuật nhánh cận 2.1.2 Thuật tốn Các bài tốn sử dụng nhánh cận để giải quyết đều phải sử dụng khung của thuật tốn Điều này nhấn mạnh rằng người dùng nếu giải bài tốn của mình trên mơi trường tuần tự hoặc song song thì chỉ cần thêm một số phương thức, dữ liệu phù hợp mà khơng cần suy nghĩ đến việc phải thiết kế các bước như thế nào Dưới đây là khung chung của thuật tốn: - 12 - THƯ... tính cận dưới (LowerBound), tính cận trên (UpperBound), phân nhánh( Branch) • Lớp Solution lưu giữ lời giải hiện tại Class Solution() { …… } - 30 - THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN * Trên mơi trường tuần tự Khi thực thi trên mơi trường tuần tự người dùng chỉ cần gọi phương thức run() của lớp Solver_Seq: void Solver_Seq::run() { if (dir == Minimize) { minimizing(); } else { maximizing(); } } * Trên mơi trường. .. argc, char** argv) để giải quyết bài tốn một cách song song trên mơi trường mạng LAN Với tham số truyền vào của hàm chính là các tên máy tham gia vào q trình tính tốn Người sử dụng muốn thực hiện theo phương thức nào (song song hay tuần tự) thì tạo ra một đối tượng tương ứng sau đó gọi tới thủ tục run Ví dụ chúng ta muốn tiến hành thuật tốn nhánh cận tuần tự để giải quyết bài tốn TSP có đoạn mã của... phố 3.3 Sử dụng thuật tốn nhánh cận để giải bài tốn TSP Để đi tìm lời giải chính xác cho bài tốn TSP khơng còn cách nào khác ngồi việc chúng ta phải duyệt tất cả các lời giải có thể, tuy nhiên số lượng này là q lớn (= n!), trong đó rất lãng phí các lời giải khơng cần thiết Cách tiếp cận hiệu quả nhất từ trước tới nay trong chiến lược này đó chính là thuật tốn nhánh cận( có thể cắt các nhánh ở các lời... mà heap khơng thể lưu trữ được Queue gồm 3 lớp sau : • Class bbnode : Định nghĩa các nút trên cây • Class BandbQueue : Lớp trừu tượng này miêu tả một queue • Class BranchQueue : Lớp này sử dụng trong suốt giai đoạn phân nhánh 2.2 Xây dựng khung nhánh cận tuần tự Ta có thể tóm lược hoạt động của thuật tốn nhánh cận tuần tự như sau : Tại thời điểm khởi tạo, tập hoạt động L chứa bài tốn ban đầu, và giá

Ngày đăng: 27/04/2013, 21:43

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan