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

Giải một số bài toán lý thuyết đồ thị với phần mềm Maple

11 666 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 11
Dung lượng 439,12 KB

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

Nội dung

Trong bài tiểu luận này, tôi xin trình bày cấu trúc của cơ sở tri thức về Lý thuyết đồ thị mà phần mềm Maple thiết kế và xây dựng trong package GraphTheory đồng thời qua đó cũng trình bà

Trang 1

PHẦN MỞ ĐẦU

Trí tuệ nhân tạo là một lĩnh vực trong khoa học máy tính nghiên cứu

và phát triển các hệ thống thông minh hỗ trợ cho hoạt động xử lý thông tin,

xử lý tri thức, tính toán và điều khiển Trong quá trình phân tích và thiết kế các hệ thống Trí tuệ nhân tạo, các nhà nghiên cứu thường quan tâm đến hai vấn đề lớn là: Biểu diễn tri thức và phương pháp, kỹ thuật suy diễn trên cấu trúc biểu diễn tri thức đó

Đối với các hệ giải bài toán dựa trên cơ sở tri thức như các hệ chuyên gia, hệ giải các bài toán tự động thì việc biểu diễn tri thức và xây dựng chiến lược tìm kiếm đóng vai trò quyết định trong quá trình thiết kế và cài đặt hệ thống Các kết quả nghiên cứu về biểu diễn tri thức và suy luận dựa trên tri thức là cơ sở và công cụ cho việc xây dựng các hệ chuyên gia, các

hệ giải toán dựa trên tri thức và các hệ cơ sở tri thức

Trong bài tiểu luận này, tôi xin trình bày cấu trúc của cơ sở tri thức về

Lý thuyết đồ thị mà phần mềm Maple thiết kế và xây dựng trong package

GraphTheory đồng thời qua đó cũng trình bày một số bài toán cơ bản trong

Lý thuyết đồ thị như Bài toán đồ thị con đầy đủ lớn nhất, Bài toán đồ thị

phẳng, Bài toán người bán hàng.

Tôi xin chân thành cảm ơn Phó giáo sư, Tiến sĩ Đỗ Văn Nhơn, giảng

viên môn học “Lập trình symbolic cho trí tuệ nhân tạo”, đã truyền đạt

những kiến thức quý báu về các hướng nghiên cứu trong lĩnh vực trí truệ nhân tạo và biểu diễn tri thức tiên tiến hiện nay; đã hướng dẫn và chỉ bảo

để hoàn thành chuyên đề nghiên cứu rất bổ ích và lý thú này

Nội dung của bài tiểu luận ngoài phần mở đầu và kết luận, có ba chương như sau:

Chương 1: Giới thiệu gói package GraphTheory trong phần mềm Maple.

Chương 2: Giải một số bài toán lý thuyết đồ thị với gói package GraphTheory.

Trang 2

CHƯƠNG 1 GIỚI THIỆU GÓI PACKAGE GRAPHTHEORY TRONG

PHẦN MỀM MAPLE

Nội dung Chương 1 giới thiệu về phần mềm Maple, trình bày cấu trúc

dữ liệu của package GraphTheory trong việc hỗ trợ giải quyết các bài toán

Lý thuyết đồ thị cũng như một số thuật toán cơ bản trên cấu trúc cơ sở tri thức này

1 Giới thiệu phần mềm Maple

Maple là một gói phần mềm toán học thương mại phục vụ cho nhiều mục đích Được phát triển lần đầu tiên vào năm 1980 bởi nhóm Tính toán hình thức tại Đại học Waterloo ở Waterloo, Ontario, Canada

Từ năm 1988, Maple được phát triển và thương mại hóa bởi Waterloo Maple Inc., một công ty Canada có trụ sở tại Waterloo, Ontario Phiên bản hiện tại là Maple 16 được phát hành vào tháng 3 năm 2012

Các chức năng chính của Maple:

- Thực hiện các tính toán với khối lượng lớn, thời gian nhanh và độ chính xác cao

- Các gói chuyên dụng (package) của Maple để giải quyết các bài toán

cụ thể như: Vẽ đồ thị (plots), Hình học giải tích (geometry), Đại số tuyến tính (LinearAlgebra), Giải tích (Student), Phương trình vi phân (DEtools), Lý thuyết số (numtheory), Dữ liệu rời rạc (DiscreteTransforms), Lý thuyết đồ thị (GarghTheory)

- Thiết kế các đối tượng 3 chiều

- Minh họa hình học thuận tiện bao gồm: vẽ đồ thị tĩnh và động của các đường, mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau;

- Tính toán trên các biểu thức đại số;

- Thực hiệc được hầu hết các phép toán cơ bản trong chương trình toán đại học và sau đại học;

Trang 3

- Ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với các ngôn ngữ lập trình khác;

2 Gói GraphTheory trong Maple

Gói GraphTheory được nghiên cứu và phát triển bởi nhóm nghiên cứu Đại số máy tính (Computer Algebra Group) và Tính toán hình thức (Symbolic Computation) của khoa Toán, Đại học Simon Fraser tại

Burnaby, Canada vào năm 2006 Nhóm nghiên cứu bao gồm: Mahdi Javadi, Ron Ferguson, Michael Monagan, Peter Borwein, Ha Le, Mohammed Ghebleh, Austin Roche, Allan Wittkopf, Liang Chen, Greg Fee, Alexandro Erickson, Vahid Dhabagghian và Roman Pearce Trong đó, trưởng nhóm nghiên cứu này - Tiến sĩ Michael Monagan – là một trong

những tác giả của phần mềm Maple.

Gói GraphTheory được đưa vào Maple từ phiên bản 11 (tháng 2 năm 2007) để thay thế cho gói networks Theo các tác giả, gói này được thiết kế

dùng cho việc giảng dạy và nghiên cứu có thể xử lý được các bài toán trên

đồ thị có hơn 1.000 đỉnh Nó được thay thế cho gói networks là bởi vì

Maple cần sự tách biệt trong việc giải quyết các bài toán lý thuyết đồ thị

với các bài toán mạng Hơn nữa các tính toán lý thuyết đồ thị trong gói

networks đã lạc hậu và chỉ được thiết kế chủ yếu cho các bài toán mạng.

Cấu trúc dữ liệu của gói networks quá nặng nề và cồng kềnh trong việc giải

quyết các bài toán lý thuyết đồ thị cơ bản Cấu trúc dữ liệu của gói

GraphTheory được thiết kế đơn giản, linh hoạt và chủ yếu là để giải quyết

các bài toán trong lĩnh vực lý thuyết đồ thị chứ không bao gồm các bài toán mạng lưới Hầu hết các tính toán cơ bản trên đồ thị đều được tích hợp sẳn trong gói này, bao gồm: kiểm tra đồ thị phẳng, đồ thị con đầy đủ lớn nhất, chu trình Haminton, đa thức Tutte, sắc số và tô màu đồ thị…

Gói GraphTheory là một tập lệnh hỗ trợ việc tạo, vẽ, tính toán kiểm tra

các thuộc tính của của đồ thị Gói này hỗ trợ cả hai loại đồ thị có hướng và

vô hướng, có trọng số hoặc không có trọng số nhưng không hỗ trợ đa đồ

thị Lệnh tạo ra một đồ thị vô hướng là lệnh Graph, đồ thị có hướng là

Trang 4

Digraph Để kiểm tra xem một đối tượng G có phải là một đồ thị không ta

dùng lệnh type(G, GRAPHLN) Các lệnh ImportGraph và ExportGraph

dùng để đọc và ghi các đồ thị vào một tập tin với các định đạng được Maple hỗ trợ Một số lệnh cần thiết khi thao tác trên các đồ thị lớn là:

HasEdge, HasArc, AddEdge, AddArc, DeleteEdge, DeleteArc Gói SpecialGraphs chứa một thư viện đồ thị được định nghĩa trước và gói RandomGraphs gồm các hàm dùng cho việc tạo các đồ thị ngẫu nhiên.

3 Cấu trúc dữ liệu của gói GraphTheory

Cấu trúc dữ liệu biểu diễn một đồ thị là một hàm Maple có dạng:

GRAPHLN(D, W, V::list, A::Array, T::table, M::{0,Matrix})

Trong đó:

- D = undirected thể hiện đồ thị vô hướng, D = directed thể hiện đồ thị

có hướng

- W = unweighted thể hiện đồ thị không trọng số, khi đó M = 0, W =

weighted thể hiện đồ thị có trọng số và khi đó M là kiểu ma trận.

- V là một danh sách kiểu integer, symbol hoặc string (thể hiện nhãn

đỉnh)

- A là một mảng của tập số nguyên (thể hiện các cạnh của đồ thị)

- T là kiểu bảng chứa thông tin về mỗi cạnh, mỗi đỉnh của đồ thị Các lệnh sau cho phép người sử dụng truy xuất trực tiếp các thành phần trên:

- IsDirected(G) trả về true nếu D = directed và false nếu D =

undirected.

- IsWeighted(G) trả về true nếu W = weighted và false nếu W =

unweighted.

- Vertices(G) trả về danh sách V.

- WeightMatrix(G) trả về ma trận M nếu G là đồ thị có trọng số và trả

về một lỗi trong trường hợp ngược lại

Các cạnh của đồ thị được xác định bởi mảng A Nếu u = Vi và v = Vj là hai đỉnh của đồ thị thì cạnh {u, v} tồn tại nếu và chỉ nếu j nằm trong tập số

Trang 5

nguyên Ai Các lệnh Edges, Neighbors, Arrivals, Departures và

AdjacencyMatrix trả về thông tin của cạnh với những định dạng khác nhau.

Ví dụ sau đây cho thấy cấu trúc dữ liệu của một đồ thị vô hướng G = (V, E) với V = {a, b, c} và E = {{a,b}, {b,c}}

> with(GraphTheory):

> G := Graph([a,b,c],{{a,b},{b,c}});

GRAPHLN(undirected,unweighted, [a, b, c], [{2} , {1, 3} , {2}], table([]), 0 )

Chú ý rằng biểu diễn bên trong đồ thị sử dụng các số nguyên 1, 2, 3 chứ không phải là nhãn a, b, c của người sử dụng Điều này cho phép duyệt

đồ thị hiệu quả hơn Khi một đồ thị G được tạo ra, người sử dụng không thể xóa hoặc thêm đỉnh mà không tạo ra một bản sao của G Tuy vậy, người sử dụng vẫn có thể xóa hoặc thêm cạnh vào G

> DeleteEdge(G,{a,b}): G;

GRAPHLN(undirected,unweighted, [a, b, c], [{} , {3} , {2}], table([]), 0 )

Giả sử rằng ta thêm hoặc xóa một cạnh {i, j} trong đồ thị G và vì Maple sử dụng một mảng số nguyên để biểu diễn G nên chi phí để thêm

hoặc xóa một cạnh là O(max{deg G(i), degG(j)}).

4 Các lệnh khởi tạo đồ thị

Để khởi tạo một đồ thị ta có thể sử dụng hàm Graph() hoặc Digraph().

Có thể sử dụng kết hợp các tham số V, E, A, D, W để khởi tạo các loại đồ thị khác nhau Trong đó:

- V là tập hoặc danh sách các đỉnh hoặc số đỉnh

- E là tập các cạnh

- A là ma trận kề (có thể chứa trọng số cạnh)

- D là tham số hướng có dạng directed/undirected hoặc directed =

true/false.

- W là tham số trọng có dạng weighted/unweighted hoặc weighted =

true/false.

Một số ví dụ về các cách tạo đồ thị:

>

Trang 6

>

>

>

>

>

>

>

>

Maple lưu ý rằng E phải là kiểu tập hợp (set) Bất kỳ input kiểu danh sách nào cũng được hiểu là các nhãn đỉnh Giới hạn hạn cho phép người sử dụng tạo ra các đồ thị với các nhãn đỉnh kiểu tập hợp Tương tự, lưu ý rằng

các đồ thị có dạng Graph(E, A) và Graph(V, E, A), với V là kiểu tập hợp cũng không được chấp nhận Vấn đề ở đây là các input kiểu này Maple

không thực thi được trừ trường hợp kiểm tra đồ thị đẳng cấu

Trang 7

CHƯƠNG 2 GIẢI MỘT SỐ BÀI TOÁN LÝ THUYẾT ĐỒ THỊ VỚI GÓI

PACKAGE GRAPHTHEORY

Nội dung Chương 2 trình bày cách giải quyết một số bài toán lý thuyết đồ thị cơ bản của gói GraphTheory như: Đồ thị con đầy đủ lớn nhất (Maximum clique), Bài toán kiểm tra đồ thị phẳng (Planarity test), Bài toán người bán hàng (Traveling salesman problem)

1 Bài toán đồ thị con đầy đủ lớn nhất

Bài toán tìm một đồ thị con đầy đủ lớn nhất (hoặc tập con độc lập lớn

nhất) của một đồ thị thuộc lớp bài toán NP-khó Maple đã thiết kế một

thuật toán quay lui dựa trên kỹ thuật phân nhánh - giới hạn để giải quyết bài toán này Maple sử dụng một hàm giới hạn dựa trên thuật toán tô màu tham lam

Sau đây là một ví dụ:

>

>

>

Trang 8

>

Với cấu trúc dữ liệu cho cơ sở tri thức về Lý thuyết đồ thị như đã giới

thiệu, ta sẽ tìm hiểu Maple thể hiện thuật toán này như thế nào.

Cho một đồ thị vô hướng G = (V, E) V là tập các đỉnh, E là tập các cạnh tương ứng nối các đỉnh trong V Ta cần tìm tập các đỉnh trong đồ thị

mà từng đôi một có cạnh nối với nhau nghĩa là tìm một đồ thị con đầy đủ

trong đồ thị G (Maximum clique).

Bài toán tìm đồ thị con đầy đủ lớn nhất có rất nhiều ứng dụng trong thực tế Ta hãy xét một mạng xã hội Xem các đỉnh của đồ thị là một người tham gia mạng xã hội, các cạnh là mối liên hệ quen nhau giữa những người tham gia Để tìm một tập con lớn nhất giữa những người quen nhau, người

ta có thể kiểm tra tất cả các tập con, một quá trình quá tốn thời gian để thực hiện được trên những mạng xã hội có số người tham gia vài chục ngàn trở lên Mặc dù phép tìm kiếm brute-force có một vài cải tiến bằng những thuật toán hiệu quả hơn nhưng tất cả đều tốn thời gian theo cấp số mũ để giải quyết bài toán Cùng với ứng dụng trong mạng xã hội, bài toán tìm đồ thị con đầy đủ lớn nhất còn có nhiều ứng dụng trong tin sinh học, hóa học Thuật giải này được đưa ra bởi D.L Kreher và D.R Stinson trong

cuốn “Combinatorial Algorithms: Generation, Enumeration and Search”

do nhà xuất bản CRC Press phát hành năm 1990 tại Florida, Mỹ.

2 Bài toán kiểm tra đồ thị phẳng

Một đồ thị được gọi là phẳng nếu ta có thể vẽ nó trên mặt phẳng sao cho các cạnh của nó không cắt nhau ngoài ở đỉnh Cách vẽ như vậy sẽ được gọi là biểu diễn phẳng của đồ thị Ví dụ là một đồ thị phẳng

Điều kiện cần và đủ để đồ thị là phẳng được chỉ ra trong định lí

Kuratowski: Đồ thị là phẳng khi và chỉ khi nó không chứa đồ thị con đồng

phôi với hoặc

Trang 9

Trong thực tế việc sử dụng định lý Kuratowski để kiểm tra đồ thị có phải là đồ thị phẳng hay không thì rất khó khăn Tuy nhiên, tồn tại thuật toán để kiểm tra vấn đề này Xét đồ thị phẳng với n đỉnh và p cạnh, ta có:

Định lý 1 Nếu n ≥ 3 thì p ≤ 3n - 6.

Ðịnh lý 2 Nếu n ≥ 3 và không có chu kỳ có độ dài 3, thì p ≤ 2n - 4.

Để kiểm tra xem một đồ thị n đỉnh có phẳng không, ta hay sử dụng

thuật toán của Demoucroun (Alan Gibbons, Algorithmic Graph Theory Cambridge University Press, 1985) với thời gian chạy là O(n 2 ) Cũng có

một vài thuật toán khác như thuật toán Hopcroft-Tarjan với thời gian chạy tuyến tính Tuy nhiên, thuật toán của Maple sử dụng đơn giản và tỏ ra hiệu quả hơn với các đồ thị dưới 1.000 đỉnh Nếu một đồ thị là phẳng, Maple trả

về một tập các mặt nhúng Những thông tin này tỏ ra hữu ích trong việc vẽ

đồ thị phẳng

>

>

>

>

>

Trang 10

3 Bài toán người bán hàng

Bài toán phát biểu như sau: Có một người giao hàng cần đi giao hàng tại n thành phố Ông ta xuất phát từ một thành phố nào đó, đi qua các thành phố khác để giao hàng và trở về thành phố ban đầu Mỗi thành phố chỉ đến một lần và khoảng cách từ một thành phố đến các thành phố khác đã được biết trước Hãy tìm một chu trình (một đường đi khép kín thỏa mãn điều kiện trên) sao cho tổng độ dài các cạnh là nhỏ nhất

Bài toán được nêu ra lần đầu tiên năm 1930 và là một trong những bài toán được nghiên cứu sâu nhất trong tối ưu hóa Nó thường được dùng làm thước đo cho nhiều phương pháp tối ưu hóa Mặc dù bài toán rất khó giải trong trường hợp tổng quát, có nhiều phương pháp giải chính xác cũng như heuristic đã được tìm ra để giải quyết một số trường hợp có tới hàng chục nghìn thành phố

Maple thiết kế hàm TravelingSalesman trả về hai đối tượng Đối số

đầu tiên là giá trị tối ưu cho bài toán, giá trị thứ hai là một chu trình Hamilton đạt giá trị tối ưu Chiến lược được áp dụng trong hàm là thuật

toán phân nhánh - giới hạn và được gọi là “Reduce bound”.

>

>

>

>

>

Trang 11

KẾT LUẬN

Tiểu luận tập trung trình bày cấu trúc cũng như một số hàm cơ bản trong gói GraphTheory của phần mềm Maple, chủ yếu là mô phỏng lại thuật toán và cách thức thiết kế cũng như quá trình thực hiện và tối ưu hóa các hàm cụ thể của Maple trong lĩnh vực lý thuyết đồ thị

Do quá trình tiếp xúc là làm quen với phần mềm Maple ngắn, nên tiểu luận cũng không đưa ra được ứng dụng thiết thực nào, chỉ là mô phỏng lại

một số thuật toán mà Maple đã thiết như Bài toán đồ thị con đầy đủ lớn

nhất (Maximum Cliq1ue), Bài toán đồ thị phẳng (Planar test), Bài toán người bán hàng (Traveling Saleman Problem) để hiểu rõ thêm cấu trúc và

cơ chế thực hiện của Maple ứng dụng trong các lĩnh vực của toán học Qua đó, tìm hiểu rõ thêm về các nghiên cứu tính toán hình thức ứng dụng trong các hệ thống thông minh làm cho máy tính ngày càng mô phỏng, thể hiện được cách suy nghĩ cũng như cách làm thông thường của con người

Ngày đăng: 10/04/2015, 01:26

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

TÀI LIỆU LIÊN QUAN

w