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

LẬP TRÌNH SYMBOLIC CHO BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT THEO THUẬT TOÁN DIJKSTRA

13 824 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 13
Dung lượng 568,5 KB

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHÓA LUẬN LẬP TRÌNH TÍNH TOÁN HÌNH THỨC ĐỀ TÀI LẬP TRÌNH SYMBOLIC CHO BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT THEO THUẬ

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHÓA LUẬN

LẬP TRÌNH TÍNH TOÁN HÌNH THỨC

ĐỀ TÀI

LẬP TRÌNH SYMBOLIC CHO BÀI TOÁN

TÌM ĐƯỜNG ĐI NGẮN NHẤT THEO THUẬT TOÁN DIJKSTRA

Học viên : Nguyễn Tấn

Mã số: CH1101038

Lớp : Cao học – Khóa 6 GVHD: PSG.TS Đỗ Văn Nhơn

Trang 2

MỤC LỤC

Trang

1) Giới thiệu Maple

2) Đặc điểm

4 4

Chương II: LẬP TRÌNH SYMBOLIC CHO BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

THEO THUẬT TOÁN DIJKSTRA 5

1) Bài toán tìm đường đi ngắn nhất

2) Thuật giải Dijkstra

3) Thủ tục tìm đường đi ngắn nhất theo thuật toán Dijkstra

5 5 6

Trang 3

LỜI MỞ ĐẦU

Ngày nay, với sự phát triển mạnh mẽ của công nghệ, cả thế giới đang chứng kiến sự bùng nổ như vũ bão của công nghệ thông tin Cho đến nay công nghệ thông tin đã và đang xâm nhập vào tất cả các lĩnh vực khoa học, kinh tế, đời sống, … Trong khung cảnh đó, giáo dục và đào tạo được xem như “mảnh đất màu mỡ” để cho các ứng dụng, công cụ tiên tiến phát triển, mang đến những biến đổi sâu sắc có tính cách mạng trên quy mô toàn cầu trong giáo dục, đào tạo Một trong những công cụ hữu ích, mạnh mẽ giúp việc dạy và học trở nên sinh động, trực quan và hiệu quả hơn chính là Maple Nó đã thực sự trở nên hữu dụng trong việc dạy học một số môn tự nhiên như toán, lý, hóa, …

Với những kiến thức đã được cung cấp trong môn học lập trình tính toán hình

thức, em đã chọn đề tài “Lập trình Symbolic cho bài toán tìm đường đi ngắn

nhất theo thuật toán Dijkstra” làm nội dung nghiên cứu Để hoàn thành khóa luận

này, em xin chân thành cảm ơn thầy PGS.TS.Đỗ Văn Nhơn, người đã chỉ dẫn tận

tình, cung cấp thông tin, tư liệu cũng như những bài giảng có giá trị để giúp em hoàn thành đề tài

Việc đầu tư nghiên cứu đề tài còn nhiều hạn chế, chỉ mang tính chất một bài khóa luận môn học, chỉ tìm hiểu và minh họa một bài toán cụ thể Do đó không thể nào tránh được những thiếu sót Kính mong sự thông cảm và chia sẻ của thầy

Thành phố Hồ Chí Minh, tháng 01 năm 2013

Trang 4

CHƯƠNG I: TỔNG QUAN VỀ PHẦN MỀM MAPLE

1 GIỚI THIỆU MAPLE

Phần mềm Maple là kết quả của nhóm các nhà khoa học trường Đại học Waterloo -Canada và là một trong những bộ phần mềm toán học được sử dụng rộng rãi nhất hiện nay MAPLE là phần mềm có một môi trường tính toán khá phong phú, hỗ trợ hầu hết các lĩnh vực của toán học như: Giải tích số, đồ thị, đại số hình thức do đó ta dễ dàng tính được các giá trị gần đúng, rút gọn biểu thức, giải phương trình, bất phương trình, hệ phương trình, tính giới hạn, đạo hàm, tích phân của hàm số, vẽ đồ thị, tính diện tích, thể tích, biến đổi ma trận, khai triển các chuỗi, tính toán thống kê, xử lý số liệu, số phức, phương trình vi phân, phương trình đạo hàm riêng và lập trình giải các bài toán với cấu trúc chương trình đơn giản Ngoài ra, với phần mềm này ta dễ dàng biên soạn các sách giáo khoa điện tử với chức năng Hyperlink tạo các siêu văn bản rất đơn giản mà không cần đến sự hỗ trợ của bất kỳ một phần mềm nào khác (chẳng hạn PageText, Word, Frontpage ) Với các chức năng trên, MAPLE là công cụ đắc lực

hỗ trợ cho những người làm toán

2 ĐẶC ĐIỂM

- Maple là một hệ thống tính toán trên các ký hiệu và biểu thức toán học

- Có thể thực hiện hầu hết các phép toán cơ bản của chương trình toán đại học và sau đại học Tính toán được nghiệm chính xác và gần đúng của một lớp rộng các bài toán lý thuyết

và ứng dụng

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

- Một ngôn ngữ lập trình đơn giản và mạnh mẽ có khả năng chuyển đổi sang các ngôn ngữ lập trình khác

- Cho phép trích xuất dữ liệu ra các định dạng khác nhau như Latex, word, HTML, …

- Một công cụ biên soạn giáo trình điện tử và trình diễn bài giảng thuận tiện

Trang 5

CHƯƠNG II: LẬP TRÌNH SYMBOLIC CHO BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT THEO THUẬT TOÁN DIJKSTRA

1) BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT

Bài toán tìm đường đi ngắn nhất là tìm đường đi trong một đồ thị có trọng số (chiều dài) nối 2 đỉnh x và y đã cho trước với đặc tính là tổng các trọng số của tất cả các cạnh là nhỏ nhất trong tất cả các đường đi từ đỉnh x đến đỉnh y

Nguyên lý tối ưu là nếu tồn tại một đường đi ngắn nhất từ đỉnh i đến đỉnh j và đỉnh k nằm trên con đường đi này thì ta phải có các đường đi từ đỉnh i đến đỉnh k và đường đi từ đỉnh

k đến đỉnh j là những đường đi ngắn nhất

2) THUẬT GIẢI DIJKSTRA

G: đồ thị với x là đỉnh bắt đầu

weight: là thủ tục trả về trọng số của cạnh

L(v): là bảng các khoảng cách tạm từ x mà lưu chiều dài đường đi ngắn nhất được tìm thấy từ x đến v

K(v): là bảng chứa đỉnh trước v trong đường đi ngắn nhất từ x đến v

P: là tập chứa đỉnh gần nhất k đối với x

Q: là tập đỉnh bổ sung cho P

v và u là các biến tạm được dùng trong vòng lặp chạy qua các đỉnh

Bước 1: Kiểm tra

If không tồn tại một cạnh từ đỉnh u tới đỉnh v then Return infinity

else return trọng số của cạnh đó

Bước 2: Khởi tạo P:={}; # P rỗng

Q:={tất cả các đỉnh};

L:=table();

Trang 6

K:=table();

For v in tất cả các đỉnh của đồ thị G do

L(v): = infinity; # Tập tất cả L(v) đến infinity end do;

Bước 3:

L[x]:=0; # Khoảng cách ban đầu là 0 u:=x; # x là đỉnh đầu tiên đưa vào P While L[u] < infinity do

Chuyển u vào P và loại nó khỏi Q;

If Q rỗng then Dừng;

# Cập nhật các trọng số tạm trên các đỉnh nếu có đường đi ngắn nhất từ x tới v

If L[u]+weight(G,u,v) < L[v] then

L[v]:=L[u]+weight(G,u,v);

K[v]:=u;

#Tìm đỉnh với khoảng cách tạm ngắn nhất từ x u:=Q[1];

for v in Q do

If L[v]<L[u] then

u:=v;

return

[L,K]; # Trả về một mảng mà các phần tử của nó là bảng L và K

3) THỦ TỤC TÌM ĐƯỜNG ĐI NGẮN NHẤT THEO THUẬT TOÁN DIJKSTRA

* Khai báo sử dụng thư viện networks:

>

Trang 7

* Thủ tục tìm đường đi ngắn nhất:

Trang 8

# Cập nhật trọng số trên các đỉnh tạm thời

# Cập nhật đường đi ngắn nhất từ x đến v

Trang 9

#Tìm một đỉnh với khoảng cách tạm thời ngắn nhất từ x

Trang 10

* Thủ tục đưa ra đường đi ngắn nhất giữa hai đỉnh u và v:

* Khai báo đồ thị với các đỉnh và cạnh:

* Khai báo trọng số cho các cạnh của đồ thị:

* Vẽ đồ thị:

Trang 11

* Đỉnh bắt đầu: Ta truyền tham số dothi và biến S (đỉnh bắt đầu) vào hàm Dijkstra, kết quả lưu vào mảng ngannhat

* Đỉnh kết thúc: Vòng lặp sẽ được thực hiện cho đến khi đỉnh cuối A được truyền vào và hàm Dijkstra sẽ thực hiện và đưa ra đường đi ngắn nhất

Đường đi ngắn nhất từ đỉnh S đến đỉnh A

Trang 12

CHƯƠNG III: KẾT LUẬN

Maple là một công cụ mạnh mẽ và hữu ích cho việc lập trình tính toán hình thức Symbolic Thông qua công cụ này, ta có thể lập trình giải quyết những bài toán mà nếu sử dụng các ngôn ngữ lập trình khác sẽ gặp nhiều khó khăn và tốn nhiều thời gian trong việc tính toán, xử lý Với ví dụ minh họa tìm đường đi ngắn nhất theo thuật toán Dijkstra sử dụng Maple nêu trên, một lần nữa có thể khẳng định rằng Maple đã, đang và sẽ tiếp tục là công cụ hỗ trợ, giải quyết đắc lực cho việc lập trình, tính toán hình thức và ứng dụng giải quyết được nhiều bài toán phức tạp

Việc tìm hiểu và nghiên cứu về đề tài Lập trình Symbolic cho bài toán tìm đường

đi ngắn nhất theo thuật toán Dijkstra” chỉ là mức độ tìm hiểu, khái quát và đưa ra một

ví dụ giải quyết bài toán với việc lập trình Symbolic bằng việc sử dụng công cụ Maple Do

đó, bài luận này còn rất nhiều thiếu sót cũng như những hạn chế của nó Song việc tìm hiểu đề tài cũng mở ra thêm nhiều hướng nghiên cứu sâu hơn bằng việc sử dụng một công cụ lập trình tính toán hình thức

Trang 13

TÀI LIỆU THAM KHẢO

[1] TS Đỗ Văn Nhơn, Bài giảng Lập trình tính toán hình thức, Trường Đại học CNTT TP.HCM [2] Phần mềm Maple 16

NXB KH và KT, 2002

[3] http://www-rohan.sdsu.edu/~ituba/math3134s05/dijkstra/dijkstra.html

Ngày đăng: 10/04/2015, 00:49

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w