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

Báo cáo bài tập lớn môn phân tích thiết kế giải thuật

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Báo Cáo Bài Tập Lớn Môn: Phân Tích Thiết Kế Giải Thuật
Tác giả Nguyễn Tâm Hy, Nguyễn Văn Mạnh, Phan Bảo Thành, Lê Vũ Trường, Nguyễn Anh Tường
Người hướng dẫn Nguyễn Văn Huy
Trường học Trường Đại Học Giao Thông Vận Tải Tp Hồ Chí Minh
Chuyên ngành Phân Tích Thiết Kế Giải Thuật
Thể loại báo cáo
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 1,23 MB

Nội dung

Bài toán này có thể được giải quyết bằng nhiều phương pháp khác nhau, mỗi phương pháp có ưu và nhược điểm riêng.Báo cáo này sẽ trình 4 giải thuật để giải bài tô màu đồ thị : vét cạn, tha

Trang 1

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

TP HỒ CHÍ MINH

BÁO CÁO BÀI TẬP LỚN

MÔN: PHÂN TÍCH THIẾT KẾ GIẢI THUẬTGiáo viên: Nguyễn Văn Huy

Sinh viên thực hiện:

1.Nguyễn Tâm Hy 22H11200722.Nguyễn Văn Mạnh 22H11200743.Phan Bảo Thành 22H11200804.Lê Vũ Trường 22H11200885.Nguyễn Anh Tường 22H1120090

Trang 2

Lời mở đầu 2

Phần I: Giới thiệu về bài toán tô màu đồ thị 3

1 Giới thiệu: 3

2 Yêu cầu ràng buộc: 4

Phần II: Phân tích các giải thuật 4

a Vét cạn : 4

a Giải thuật vét cạn là gì ? 4

b Tư Tưởng của giải thuật ? 4

c Nhận xét : 5

d Áp dụng vào bài toán tô màu đồ thị : 5

b. Greedy ( tham lam ) 7

a Giới thiệu thuật toán 7

c Ý tưởng : 7

d Đặc điểm của giải thuật : 8

e Nhận xét : 8

f Áp dụng vào bài toán tô màu đồ thị : 8

c Giải thuật di truyền : 10

a Giới thiệu giải thuật : 10

b Giải thích thuật toán: 10

d Code: 13

d Math model 13

a Giới thiệu 13

b Áp dụng vào bài tô màu đồ thị 15

c Đặc điểm của thuật toán Math Model 20

Phần III: So sánh các giải thuật 22

Phần IV : Kết luận 23

Trang 3

Lời mở đầu

Bài toán tô màu đồ thị là một bài toán kinh điển trong lĩnh vực khoa học máy tính với nhiều ứng dụng thực tế Nó yêu cầu tô màu cho các đỉnh của một đồ thị sao cho không có hai đỉnh kề nhau có cùng màu Bài toán này có thể được giải quyết bằng nhiều phương pháp khác nhau, mỗi phương pháp có ưu và nhược điểm riêng.Báo cáo này sẽ trình 4 giải thuật để giải bài tô màu đồ thị : vét cạn, tham lam, genetic, math model

Mục tiêu của bài báo cáo này là :

- Hiểu được các giải thuật đã trình bày trong bài

- Cài đặt các giải thuật

- So sánh hiệu năng của các giải thuật

Tác giả hy vọng rằng báo cáo này sẽ cung cấp cho người đọc một cái nhìn tổng quan về bài toán tô màu đồ thị và các giải thuật để giải quyết nó Báo cáo cũng mong muốn góp phần thúc đẩy nghiên cứu và ứng dụng của bài toán này trong thực tế

Trang 4

Phần I: Giới thiệu về bài toán tô màu đồ thị

1 Giới thiệu:

Bài toán tô màu đồ thị là một bài toán kinh điển trong khoa học máy tính vớinhiều ứng dụng thực tế Nó yêu cầu tô màu cho các đỉnh của một đồ thị sao cho không có hai đỉnh kề nhau có cùng màu Bài toán này có thể được giải quyết bằng nhiều phương pháp khác nhau, mỗi phương pháp có ưu và nhược điểm riêng

2 Yêu cầu ràng buộc:

- Đầu vào: Một đồ thị G được biểu diễn bằng danh sách cạnh hoặc ma trận kề

- Yêu cầu: Tô màu cho mỗi đỉnh của đồ thị G sao cho không có hai đỉnh kề nhau có cùng màu

- Ràng buộc: Số lượng màu sử dụng là tối thiểu

Phần II: Phân tích các giải thuật

b Tư Tưởng của giải thuật ?

Dùng để giải bài toán liệt kê các cấu hình Mỗi cấu hình được xây dựng bằng từng phần tử Mỗi phần tử lại được chọn bằng cách thử tất cả các khả năng

Các bước trong việc liệt kê cấu hình dạng X[1 n]:

 Xét tất cả các giá trị X[1] có thể nhận, thử X[1] nhận các giá trị đó Với mỗi giá trị của X[1] ta sẽ:

 Xét tất cả giá trị X[2] có thể nhận, lại thử X[2] cho các giá trị đó Với mỗigiá trị X[2] lại xét khả năng giá trị của X[3] tiếp tục như vậy cho tới bước:

 Xét tất cả giá trị X[n] có thể nhận, thử cho X[n] nhận lần lượt giá trị đó

Trang 5

 Thông báo cấu hình tìm được.

Cấu trúc mã giả của thuật toán quay lui vét cạn

c Nhận xét :

-Ưu điểm: Việc quay lui là thử tất cả các tổ hợp để tìm được một lời giải Thế mạnh của phương pháp này là nhiều cài đặt tránh được việc phải thử nhiều trường hợp chưa hoàn chỉnh, nhờ đó giảm thời gian chạy

-

- Nhược điểm: Trong trường hợp xấu nhất độ phức tạp của quay lui vẫn

là cấp số mũ Vì nó mắc phải các nhược điểm sau:

- Rơi vào tình trạng "thrashing": qúa trình tìm kiếm cứ gặp phải bế tắc vớicùng một nguyên nhân

- Thực hiện các công việc dư thừa: Mỗi lần chúng ta quay lui, chúng ta cần phải đánh giá lại lời giải trong khi đôi lúc điều đó không cần thiết

- Không sớm phát hiện được các khả năng bị bế tắc trong tương lai Quaylui chuẩn, không có cơ chế nhìn về tương lai để nhận biết đc nhánh tìm kiếm sẽ

đi vào bế tắc

d Áp dụng vào bài toán tô màu đồ thị :

- Bắt đầu bằng đỉnh thứ nhất với màu được tô là i

- Đệ qui:ta sẽ gọi lại hàm với đỉnh tiếp theo ,kiểm tra xem đỉnh đó có phù

hợp với màu i hay không (thõa mãn điều kiện hai đỉnh kề nhau không dược trùng màu)

- Lặp lại bước 2 cho đến khi đệ qui hết qua các đỉnh Nếu số đỉnh đã tô hết

thì ta xuất ra tô n đỉnh cần i màu.Ngược lại chuyển sang bước 4

- Quay lui (backtrack):khi ta đã đi đến một bước không thể tiếp tục (đệ qui

qua tất cả các đỉnh) ta sẽ quay lui lại và thử với màu khác i=i+1.quay lui giúp chúng ta thử các lựa chọn màu khác xem phù hợp với đỉnh không.quay lại bước 2

Trang 6

e Mã giả cho bài toán :

int Graph::try_to_color(int i, int& count) {

for (int color = 1; color <= n; color++) {

if (be_color(i, color) && colors[i] == 0) {count++;

colors[i] = color;

}

if (i == n - 1) {

if (count == n) {return count;

}}

if (i != n - 1)

{

int result = try_to_color(i + 1, count);

if (result == n) {return result;

}}

}

return 0;

}

Trang 7

b Greedy ( tham lam )

a Giới thiệu thuật toán.

Giải thuật tham lam (tiếng Anh: Greedy algorithm) là một thuật toán giải quyết một bài toán theo kiểu metaheuristic để tìm kiếm lựa chọn tối ưu địa phương ở mỗi bước đi với hy vọng tìm được tối ưu toàn cục

b Các thành phần của thuật toán :

Một tập hợp các ứng viên (candidate), để từ đó tạo ra lời giải

Một hàm lựa chọn, để theo đó lựa chọn ứng viên tốt nhất để bổ sung vào lời giải

Một hàm khả thi (feasibility), dùng để quyết định nếu một ứng viên có thể được dùng để xây dựng lời giải

Một hàm mục tiêu, ấn định giá trị của lời giải hoặc một lời giải chưa hoànchỉnh

Một hàm đánh giá, chỉ ra khi nào ta tìm ra một lời giải hoàn chỉnh

Trang 8

Khác với các chiến lược trước đó, ở chiến lược Tham lam, chúng ta sẽ tìm cách tối ưu lựa chọn ở từng thành phần nghiê •m Giả sử đã xây dựng được thành phần của nghiê𝑖i •m là 𝑥1, 2,…, , 1, 2,…,𝑥 𝑥𝑖x x xi, thì khi xây dựng thànhphần 𝑥𝑖+1,xi+1, ta hãy cố gắng chọn nó là ứng cử viên "tốt nhất" trong tâ•p ứng

cử viên 𝑆𝑖+1Si+1 Để đánh giá được đô• tốt của các ứng cử viên thì các bạn cần xây dựng mô •t hàm chọn để làm điều đó Tiếp tục xây dựng như vâ •y cho tới khi tạo ra đủ thành phần của nghiê𝑛n •m

d Đặc điểm của giải thuật :

- Thuật toán giải quyết vấn đề của nó bằng cách tìm ra giải pháp tối ưu Giải pháp này có thể là giá trị tối đa hoặc tối thiểu Nó đưa ra lựa chọndựa trên tùy chọn tốt nhất hiện có

- Thuật toán nhanh và hiệu quả với độ phức tạp về thời gian là O(n log n) hoặc O(n) Do đó được ứng dụng vào việc giải các bài toán có quy

+ Phân tích thời gian chạy của các thuật toán tham lam dễ dàng hơn nhiều

so với các kỹ thuật khác vì không có sự phân nhánh hoặc quay lui

+ Dễ hiểu, dễ thực hiện

- Nhược điểm:

+ Nó không đưa ra giải pháp tốt nhất

f. Áp dụng vào bài toán tô màu đồ thị :

- Ý tưởng

Tô màu (đỉnh) đồ thị là việc thực hiện gán màu cho mỗi đỉnh của đồ thị, sao cho hai đỉnh kề nhau không cùng một màu, và số màu được sử dụng là ít nhất Số màu ít nhất có thể sử dụng để tô màu đồ thị được gọi là sắc số của đồ thị đó.ta tô màu I cho đỉnh thứ nhất và Duyệt lần lượt các đỉnh và chỉ tô màu i cho các đỉnh không kề với đỉnh đã có màu i Kiểm tra nếu tất cả các đỉnh đã được tô màu thì thuật toán kết thúc, đồ thị đã sử dụng i màu để tô Ngược lại, nếu vẫn còn đỉnh chưa được tô thì ta sẽ tăng màu i=i+1 và tiếp tục duyệt qua tất

cả các đỉnh.và cứ như vậy cho đến khi tô được hết tất cả các đỉnh

Trang 9

- Các bước của thuật toán:

Tô màu i cho đỉnh đầu tiên trong danh sách Duyệt lần lượt các

Bước 1:

đỉnh khác và chỉ tô màu i cho các đỉnh không kề đỉnh đã có màu i

Bước 2: Kiểm tra nếu tất cả các đỉnh đã được tô màu thì thuật toán kết thúc, đồ thị đã sử dụng i màu để tô Ngược lại, nếu vẫn còn đỉnh chưa được tô thì chuyển sang bước 3

Bước 3: Gán i := i + 1 và quay lại bước 1

Mã giả thuật toán greedy cho tô màu đồ thị

bool Graph::be_color(int i, int color) //kiểm tra xem đỉnh I tô được màu color //hay không

Trang 10

colors[i] = somau;

}}

c Giải thuật di truyền :

a Giới thiệu giải thuật :

Giải thuật di truyền là một phương pháp tối ưu hóa được lấy cảm hứng từ quá trình tiến hóa tự nhiên Nó được sử dụng để tìm kiếm giải pháp tốt nhất cho các vấn đề tối ưu hóa, đặc biệt là trong các vấn đề liên quan đến tối ưu hóa tổ hợp hoặc tối ưu hóa đa biến

b Giải thích thuật toán:

+Giải thuật này cũng sẽ sử dụng các quá trình tiến hóa giống như hiện tượng

"di truyền" trong tự nhiên, như: Quần thể ban đầu, chọn lọc tự nhiên, sinh sản, đột biến, tiến hóa

+Thì để nắm rõ hơn về thuật toán này thì chúng ta cùng nhìn vào hình sau:

Trang 11

Quá trình này cứ thế cho đến khi tìm ra quần thể có tính thích nghi cao nhất.

những đặc tính khác nhau, những đặc tính này sẽ quy định khả năng sinh sản, sinh tồn, khả năng đáp ứng điều kiện môi trường của từng cá thể

khả năng sinh tồn sẽ bị loại b’ bởi những tác nhân như tranh chấp chuỗi thức ăn, môi trường tác độc, bị loài khác tiêu diệt, … Cuối cùng sẽ còn lạinhững cá thể có đặc tính ưu việt hơn sẽ được giữ lại

kế thừa lại những đặc tính của cả cha và mẹ Sau một thời gian sinh sống, một quần thể sẽ đặt tới giới hạn của các cặp gen của con được tạo nên từ gen của bố

mẹ Để đạt được tới sự tiến hóa, Đột Biến chính là một trong những nguyên nhân chính, có vai trò đóng góp nguyên liệu cho quá trình Chọn lọc tự nhiên

mạnh mẽ và có đủ khả năng sinh tồn, Chọn lọc tự nhiên sẽ chọn ra những cá thể đột biến nhưng có thể thích nghi với môi trường sống tốt hơn những cá thể khác trong quần thể Sau một thời gian sinh sản, những gen đột biến sẽ chiếm

ưu thế và chiếm đa số trong quần thể

c Áp dụng giải bài :

+ Biểu đồ giải thích thuật toán:

Trang 12

Thuật toán sẽ dừng lại khi tìm được cá thể đáp ứng được nhu cầu đề ra

sau mỗi thế hệ mới Quá trình sản sinh thế hệ tiếp theo sẽ là một vòng lặp (Khơi

những thành phần chính trong thuật toán để giải quyết bài toán này

+ Khởi tạo quần thể: Đối với bài graph coloring thì quần thể sẽ gồm các tập nghiệm và gen là các đỉnh sẽ được tô màu ngẫu nhiên

Ví dụ đồ thì có 5 đỉnh và quần thể có 2 tập nghiệm thì :

Nghiệm 1:

đỉnh 1 – màu 1đinh 2 – màu 1 đỉnh 3 – màu 2

đỉnh 4 – màu 2

đỉnh 5 – màu 3Nghiệm 2:

đỉnh 1 – màu 2 1 đinh 2 – màu 1 1 đỉnh 3 – màu 1 2

đỉnh 4 – màu 2 2

đỉnh 5 – màu 2 3

Trang 13

+ Đánh giá quần thể: đánh giá từng nghiệm trong quần thể đó có đáp ứng nhu cầu là các đỉnh kề nhau có giống màu nhau hay là không, quần thể nào đáp ứng các đỉnh kề không trùng màu thì ta tính tiếp độ thích nghi (là số màu mà nghiệm đó sử dụng), ở ví dụ trên thì nghiệm 1 có độ thích nghi là 3, còn nghiệm

2 là 2

+ Sau khi đánh giá quần thể, mình sẽ tìm một độ thích nghi phù hợp làm ngưỡng và nếu nghiệm nào độ thích nghi nào có giá trị bé hơn ngưỡng thì giữ nguyên ( vì bài này yêu cầu là số màu bé nhất cho nên phải cần lấy độ thích nghi là thấp )

+ Tới phần sinh sản, mình sẽ lấy ngẫu nhiên gen cha ghép với gen mẹ Lấy ví dụ đầu tiên thì sau khi lai ghép nó có thể ra đời con như sau:

Đỉnh 1 – màu 2 Đỉnh 2 – màu 1 Đỉnh 3 – màu 2 Đỉnh 4 – màu 2 Đỉnh 5 – màu 3+ Đến phần đột biến thì mình sẽ cho ngẫu nhiên một nghiệm đột biến mộtgen ngẫu nhiên ( ngẫu nhiên 1 đỉnh tô 1 màu ngẫu nhiên )

+Giờ mình chỉ cần di truyền cho nó nữa là xong: đầu tiên mình sẽ khởi tạo quần thể sau đó sẽ là vòng lặp tuần hoàn đi từ đánh giá -> chọn lọc -> lai ghép -> đột biến , cứ như vậy sẽ càng cho ra tập nghiệm đúng nhất

Mô hình toán học (tiếng Anh: Math Model) là một mô hình trừu tượng sử dụng

ngôn ngữ toán học để mô tả một hệ thống hoặc hiện tượng nào đó Mô hình toánhọc có thể bao gồm các phương trình, bất đẳng thức, hàm số, đồ thị, v.v để môph’ng hành vi của hệ thống hoặc hiện tượng được nghiên cứu

Thuật toán là một tập hợp các hướng dẫn chi tiết, có thứ tự được sử dụng để

giải quyết một bài toán hoặc thực hiện một nhiệm vụ cụ thể Thuật toán có thểđược biểu diễn bằng ngôn ngữ tự nhiên, ngôn ngữ lập trình hoặc sơ đồ

Thuật toán Math Model là thuật toán được sử dụng để xây dựng, triển khai và

giải quyết các mô hình toán học Thuật toán này có thể bao gồm các bước sau:

Trang 14

1 Xác định vấn đề: Xác định rõ ràng vấn đề cần giải quyết hoặc hiện

tượng cần mô ph’ng

2 Thu thập dữ liệu: Thu thập dữ liệu liên quan đến vấn đề hoặc hiện

tượng

3 Lựa chọn mô hình: Lựa chọn mô hình toán học phù hợp để mô tả vấn đề

hoặc hiện tượng

4 Xây dựng mô hình: Xây dựng mô hình toán học bằng cách sử dụng các

phương trình, bất đẳng thức, hàm số, v.v

5 Giải quyết mô hình: Giải quyết mô hình toán học bằng cách sử dụng các

phương pháp toán học phù hợp

6 Phân tích kết quả: Phân tích kết quả thu được từ việc giải quyết mô hình

để rút ra kết luận và đưa ra dự đoán

7 Kiểm tra và xác nhận mô hình: Kiểm tra và xác nhận mô hình bằng

cách so sánh kết quả thu được với dữ liệu thực tế

8 Cập nhật mô hình: Cập nhật mô hình nếu cần thiết để cải thiện độ chính

xác và hiệu quả của mô hình

Các thành phần chính của thuật toán tô màu đồ thị bằng lập trình tuyến tính

Thuật toán tô màu đồ thị sử dụng lập trình tuyến tính bao gồm các thành phần chính sau:

1 Biến:

 Biến quyết định: Đại diện cho việc gán màu cho mỗi đỉnh trong đồ thị Biến này thường là biến Boolean, có thể nhận giá trị 0 hoặc 1, tương ứng với việc đỉnh không được tô hoặc được tô một màu cụ thể

 Biến phụ: Có thể được sử dụng để biểu thị các khái niệm trung gian hoặc

hỗ trợ việc giải quyết bài toán Ví dụ, biến phụ có thể được sử dụng để đếm số lượng màu đã sử dụng cho một đỉnh hoặc một tập hợp các đỉnh

2 Ràng buộc:

 Ràng buộc tô màu: Đảm bảo rằng mỗi đỉnh chỉ được tô một màu

 Ràng buộc không có cạnh liền kề cùng màu: Đảm bảo rằng không có hai đỉnh liền kề được tô cùng một màu

 Ràng buộc khác: Có thể có thêm các ràng buộc tùy thuộc vào yêu cầu cụ thể của bài toán, ví dụ như ràng buộc về số lượng màu tối đa, ràng buộc

về màu sắc được sử dụng cho một số đỉnh nhất định, v.v

3 Hàm mục tiêu:

 Hàm mục tiêu thường được xác định là số lượng màu sử dụng để tô màu cho đồ thị Mục tiêu của bài toán là tối thiểu hóa giá trị của hàm mục tiêunày, nghĩa là tìm cách tô màu đồ thị với ít màu nhất có thể

Trang 15

4 Solver:

 Solver là một chương trình máy tính được sử dụng để giải các bài toán tối

ưu hóa tuyến tính Solver sẽ nhận các biến, ràng buộc và hàm mục tiêu như đầu vào, và sau đó tìm giải pháp tối ưu cho bài toán, nghĩa là tìm cách gán giá trị cho các biến sao cho th’a mãn tất cả các ràng buộc và tối thiểu hóa giá trị của hàm mục tiêu

5 Giải pháp:

 Giải pháp cho bài toán tô màu đồ thị là cách gán màu cho mỗi đỉnh trong

đồ thị sao cho th’a mãn tất cả các ràng buộc và sử dụng ít màu nhất có thể Giải pháp thường được biểu thị bằng cách liệt kê màu sắc được gán cho từng đỉnh

b Áp dụng vào bài tô màu đồ thị

Để áp dụng thuật toán tô màu đồ thị bằng lập trình tuyến tính vào bài toán cụ thể:

1 Mô tả bài toán:

 Xác định số lượng đỉnh và cạnh trong đồ thị

 Xác định các ràng buộc bổ sung (nếu có), ví dụ như ràng buộc về số lượng màu tối đa, ràng buộc về màu sắc được sử dụng cho một số đỉnh nhất định, v.v

2 Xây dựng mô hình toán học:

 Xác định các biến quyết định, thường là biến Boolean đại diện cho việc gán màu cho mỗi đỉnh

 Xác định các ràng buộc, bao gồm ràng buộc tô màu, ràng buộc không có cạnh liền kề cùng màu và các ràng buộc bổ sung (nếu có)

 Xác định hàm mục tiêu, thường là số lượng màu sử dụng để tô màu cho đồ thị

3 Giải bài toán:

 Sử dụng một solver lập trình tuyến tính để giải bài toán với các biến, ràng buộc

và hàm mục tiêu đã xác định

 Solver sẽ tìm giải pháp tối ưu cho bài toán, nghĩa là tìm cách gán giá trị cho các biến sao cho th’a mãn tất cả các ràng buộc và tối thiểu hóa giá trị của hàm mục tiêu

4 Phân tích kết quả:

Xác định số lượng màu tối thiểu cần thiết để tô màu cho đồ thị

Ngày đăng: 24/12/2024, 16:17

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN