Đề tài này giúp nâng cao kiến thức và kỹ năng lập trình của bản thân thông qua việc nghiên cứu và ứng dụng các thuật toán tối ưu, góp phân cải thiện hiệu quả truyền tải dữ liệu trong các
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM THÀNH PHÓ HÒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN MON LY THUYET DO THI VA UNG DUNG
® Ê _=&
BAO CAO DO AN UNG DUNG THUAT TOAN TIM DUONG DI NGAN NHAT TRONG MO HINH THUC TIEN
Thành phé Ho Chi Minh, thang 66 nam 6004
BO GIAO DUC VA DAO TAO TRƯỜNG ĐẠI HỌC SU PHAM TPa HO CHI MINH KHOA CONG NGHE THONG TIN
Trang 2BAO CAO DO AN
UNG DUNG THUAT TOAN TIM DUONG DI NGAN NHAT
TRONG MO HINH THUC TIEN
Thành phé Ho Chi Minh, thang 66 nam 6004
MUC LUC
APRYAYAAAAAAXAAAAAYAA AX AAA Yar aArraArarxaArararazxarrzary:
DANH MỤC HÌNH ẢNH - ST 122121211 112222 tr He re 7
CHUONG 6: TÓNG QUAN, 2522221221122 erdeg 8
1.2 Mure tidu nghién Cun 8
1.3 Déi trong va pham vi nghién UU ccc ccceccecceseceeseseseceessesceeseeseseresseees 9
1.4 Phương pháp nghiên cứu - ccceccccneceneenscenseesseeseeeseeceseseesiseeseneeeeses 9
B`‹ 8a 9
CHUONG 6: CO SO LY THUYÊT lŨ
Trang 32.1 Ngôn Ngữ Lập Trình
2.2 Môi Trường Lập
tOÁN, 0225221 211221121221222 re 10
2.4 Khái quát về đồ thị .- 55 5s 2 2E212111111211211 2112221212111 rau 11
2.5 Giới thiệu thuật toán D1Jkstra - 5 2 2221122212111 121 11 1315121111228 22 12
ào cố n6 12 CHƯƠNG í: SÁN PHẨM DEMO 522 22 2212212127122 re 13
3.1 Giao Diện Chính - cccccccccccccccsccesevecessesseetteetttanttesacssecseceeseeesaneeees 14
KÝ 0.0 0n 15
CHUONG 4: CAI DAT THUẬT TOÁN 552111125111 1122212 E1 rtrtrreg 22
4.1 Cài đặt thuật toán ID1Jkstra G0 20 1022101101 11131 11311111111 1111 1111111 k2 22 4.2 Các Thuật Toán Hồ Trợ cho thuật toán DiJkstra 22-2221 c 2+2 24
CHƯƠNG 5: TÓNG KẾTT -2 2S 112211221221121112112211211212212 21212 ca 87 TÀI LIỆU THAM KHẢO - 52 2111111 221211111211111111 122tr rrreg §7
Trang 4DANH MỤC HÌNH ẢNH
Hình 3.I Hình ảnh Giao diện CÍHHÌH cà Sen nàn se Trung 14
Hình 3.2 Hình ảnh Chọn Điểm Bắt ĐẦU -<-<<-<s-<5 Trang 15
Hình 3.3 Hình ảnh Chọn Điểm Kết Thúc - <5 cẶcsS: Trang 15
Hình 3.4 Hình ảnh Gợi Ý khi điền Điểm bắt đầu Trang 16
Hình 3.5 Hình ảnh các địa điểm được chọn được đánh dấu đó Trang 16
Hình 3.6 Hình ảnh Đôi chỗ Điểm bắt đầu và Điểm kết thúc Trang 16
Hình 3.7 Hình ảnh sau Khi nhấn Bắt Đầu «<< Trang 17
Hình 3.8 Hình Ảnh Khi nhắn Nút Làm Mới «- Trang 17
Hình 3.9 Hình Ảnh khi nhấn Nút THÊm << 555 Trang 18
Hình 3.10 Hình Anh Khi nhất nút Thêm một cạnh đã tồn tai Trang 19
Hình 3.11 Hình Ảnh khi nhấn Nút Xóa .«ce< Trang 19
Hình 3.12 Hình Ảnh trước khi nhấn Sửa .à Trang 20
Hình 3.13 Hình Ảnh Sau khi nhắn Sửa cscse< Trang 20
Trang 5CHUONG 6: TONG QUAN
6a6 Ly do chon dé tai
Trong xã hội ngày nay, việc truyền tai dữ liệu giữa các người dùng một cách nhanh chóng và hiệu quả là vô cùng quan trọng Trong điều kiện mạnh về hạ tầng viễn thông và công nghệ thông tin như hiện nay, Việt Nam cần những giải pháp giảm độ trễ của quá trình truyền dữ liệu Độ trễ của quá trình truyền dữ liệu không chỉ ảnh hưởng đến trải nghiệm người dùng ma còn đến những lĩnh vực quan trọng khác như viễn thông, giao thông, các dịch vụ trực tuyến
Đề tài này giúp nâng cao kiến thức và kỹ năng lập trình của bản thân thông qua việc nghiên cứu và ứng dụng các thuật toán tối ưu, góp phân cải thiện hiệu quả truyền tải dữ liệu trong các hệ thông mạng tại Việt Nam, đồng thời mang lại lợi ích thiết thực cho cộng đồng và doanh nghiệp bằng cách giảm thiểu độ trễ và cải thiện chất lượng dịch vụ
Với lý do đó, chúng em đã chọn đề tài này nhằm mục đích nâng cao khả năng lập trình, ứng dụng các thuật toán đã học và mang lại lợi ích cho cộng đồng thông qua việc phát triển các ứng dụng công nghệ thông tin trong quản lý và truyền tải đữ liệu tại Việt Nam
`
ốàŠ Mục tiêu nghiên cứu
Trong thời đại công nghệ 4.0, việc truyền tải dữ liệu giữa các người dùng một cách nhanh chóng và đễ dàng trở thành một vẫn đề cấp thiết Việt Nam, với sự phát triển còn hạn chế về hạ tầng viễn thông và công nghệ thông tin, cần các giải pháp để kiểm tra độ trễ trone quá trình truyền đữ liệu Tuy nhiên, độ trễ trong việc truyền đữ liệu giữa các hệ thống chưa được hiệu quả như dự kiến, dẫn đến quá trình sử dụng các dịch vụ liên quan không hiệu quả Do đó, việc xây dựng một hệ thống truyền dữ liệu tối ưu sẽ giúp cải thiện hiệu quả vận hành, giảm thiểu chỉ phí, đồng thời tạo ra mạng lưới truyện đữ liệu đồng bộ và hiệu quả
Trang 6Mục tiêu của nghiên cứu này là sử dụng các thuật toán tối ưu để xây dựng một
hệ thống truyền dữ liệu tối ưu, giúp xác định các tuyến truyền đữ liệu ngắn nhất giữa các người dùng Việc áp dụng các thuật toán này không chỉ giúp tìm kiếm tuyến đường truyền đữ liệu ngắn nhất mà còn hỗ trợ trong việc tối ưu hóa các yếu tổ
như chi phí vận hành, độ trễ và các yếu tố khác liên quan đến viễn thông và công nghệ thông tin
đài Đối tượng và phạm vi nghiên cứu
Nghiên cứu này tập trung vào việc áp dụng các thuật toán tìm kiếm đường đi ngắn nhất trong mạng lưới truyền tải dữ liệu, đặc biệt là các thuật toán tối ưu hóa như thuật toán Dijkstra Đối tượng nghiên cứu là các tuyến truyền dữ liệu giữa các
tỉnh thành miền Bắc Việt Nam
Nghiên cứu này không chỉ giúp xác định các tuyến truyền dữ liệu ngắn nhất oIữa các tỉnh thành mà còn hỗ trợ trong việc tối ưu hóa các yếu tố như chỉ phí vận
hành, độ trễ và các yếu tố khác liên quan đến viễn thông và công nghệ thông tin
Mục tiêu là xây dựng một hệ thống truyền dữ liệu hiệu quả, đồng bộ, giúp cải thiện
hiệu suất hệ thống và mang lại lợi ích kinh tế xã hội to lớn
ốà4 Phương pháp nghiên cứu
Mô hình hóa bài toán thực tế bằng cách sử dụng giao diện đồ họa trực quan Winform Từ đó áp dụng thuật toán Dijkstra, triển khai thuật toán và ứng dụng vào thực tế
oa5 Ket cau đề tài
Nội dung bài tiểu luận được xây dựng gồm các phần sau:
Chương 1: Tổng Quan
Chương 2: Cơ Sở Lý Thuyết Chương 3: Sản Phẩm DEMO
Trang 7Chương 4: Các Thuật Toán Chương 5: Tổng Kết
Trang 8CHƯƠNG 6: CO SO LY THUYET 6a60 Ngon Ngir Lap Trình C#à
C# la một ngôn ngữ lập trình hướng đối tượng đa dụng, mạnh mẽ, được Microsoft phat triển như một phần của kế hoạch NET Với cú pháp đễ học và mạnh
mẽ, C# được xem là một sự kết hop tuyét voi gitra C++ và Java Nhờ kha nang quan
lý bộ nhớ tự động và tắch hợp sâu với các công nghệ của Microsoft, C# nhanh chóng trở thành lựa chọn ưa thắch của nhiều nhà phát triển
`
6a0 Méi Trường Lập Trình
Microsoft Visual Studio là một môi trường phát triển tắch hợp (IDE) cực kỳ phổ biến và mạnh mẽ, hỗ trợ nhiều ngôn ngữ lập trình như C++ và C# Được biết đến với giao diện thân thiện và khả năng tắch hợp sâu với các công cụ phát triển của Microsoft, Visual Studio giúp lập trình viên dé dàng tạo ra các ứng dụng cho Windows, web, và các dịch vụ trực tuyến Từ Windows API đến Windows Presentation Foundation, Visual Studio mang lại một bộ công cụ phong phú đề phát
triển phần mềm chuyên nghiệp
đàắ Những kiến thức cơ sở về thuật toán
đàắàốà Khái niệm về thuật toán
Thuật toán hay còn goi la giai thuat co kha nhiéu dinh nghia khac nhau Hiéu một cách đơn giản thuật toán là một tập hợp hữu hạn bao gồm các hướng dẫn được xác định rõ ràng, bạn có thể thực hiện được bằng máy tắnh, thường được dùng để giải quyết một lớp vấn đề hoặc đề thực hiện một phép tắnh
` ` AXFX AX
ựàắàỏa Các đặc trưng của thuật toán
- Đầu vào (Input): Một thuật toán có các ụ1á trị đầu vào từ một tập đã được chỉ rõ
- Đâu ra(Output): Từ môi tập các giá trị đầu vào, thuật toán sẽ tạo ra các giá tri dau ra Cac gia tri dau ra chinh 1a nghiệm của bài toán
Trang 9- Tắnh dừng: Sau một số hữu hạn bước thuật toán phải dừng
- Tắnh xác định: Ở mỗi bước, các bước thao tác phải hết sức rõ ràng, không gây nên sự nhập nhằng Nói rõ hơn, trong cùng một điều kiện hai bộ xử lý cùng thực hiện một bước của thuật toán phải cho những kết quả như nhau
- Tắnh đúng đắn (hiệu quả): Trước hết thuật toán cần đúng đắn, nghĩa là sau khi đưa đữ liệu vào thuật toán hoạt động và đưa ra kết quả như ý muốn
- Tắnh phô dụng: Thuật toán có thể giải bất kỳ một bài toán nảo trong lớp các
bài toán Cụ thể là thuật toán có thể có các đầu vào là các bộ đữ liệu khác nhau
trong một miền xác định
đà4 Khái quát về đồ thị
624a6a Đồ thị vô hướng
Đồ thị vô hướng hoặc đồ thị G là một cặp không có thứ tự (unordered pair) G:= (V, E), trong đó E, tập các cặp không thứ tự chứa các đỉnh phân biệt, được gọi
là cạnh Hai đỉnh thuộc một cạnh được gọi là các đỉnh đâu cuôi của cạnh đó
044a0a Cac loại đồ thị
Đồ thị có trọng số Trong một đồ thị có trọng số, mỗi cạnh được gắn với một giá trị nào đó, được gọi là trọng số, độ dài, chắ phắ, hoặc các tên khác tùy theo ứng dụng: các đỗ thị như vậy được dùng trong nhiều ngữ cảnh
Ma trận có trọng số
Ma tran trong số là một công cụ mạnh mẽ trong toán học, thường được sử dụng trong các mô hình học máy và trắ tuệ nhân tạo để biểu diễn mức độ ảnh hưởng của các phần tử trong một hệ thống Mỗi phần tử trong ma trận đại diện cho trọng
sô của môi liên kết giữa hai phân tử cụ thê trong hệ thông
Trang 10Ma trận kề
Ma trận kề là cách biểu diễn đồ thị G = {V,E} dưới dạng ma trận các ụ1â trị boolean có kắch thước bằng với số đỉnh của đồ thị
Danh sách kề Danh sách biểu diễn tất cả các cạnh hoặc cung trong một đồ thị Nếu đồ thị vô hướng, mỗi phần tử của danh sách là một cặp hai đỉnh là hai đầu của cạnh tương ứng
đà5 Giới thiệu thuật toán Dijkstra
Thuật toán Dijkstra được phát triển bởi nhà khoa học máy tắnh người Hà Lan Edsger Dijkstra vào năm 1956 và được ấn bản lần đầu tiên vào năm 1959 Day la một thuật toán giải quyết bài toán tìm đường đi ngắn nhất từ một đỉnh tới các đỉnh còn lại của một đồ thị có hướng không có cạnh mang trọng sô âm
Vắ dụ: Thuật toán có thể sử dụng trong các giao thức định tuyến cho mạng máy tắnh và cũng được dùng trong các hệ thống bản đồ để tìm đường đi ngắn nhất giữa
hai điểm
6a6 Y tưởng thuật toán
Thuật toán Dijkstra giải quyết bài toán tìm đường đi ngắn nhất của một đồ thi
vô hướng hoặc có hướng với trọng số không âm Ý tưởng của thuật toán có thê trình bày như sau
Bước 1: 1:=0, S:=V\{u0}, L(u0)=0, L(v)= Ủ với mọi v Ạ S va
đánh đấu đỉnh v bởi (Ủ, -) Nếu n = | thì xuất đ(u0, u0) =0 = L(u0)
Bước 2: Với mọi v HS va ké voi ui (nếu đồ thị có hướng thi v là đỉnh sau của u, đặt
L(v):=min{L(v),L(ui)+w(ui,v)} Xác định k =minL(v) , v #S Néu k = L(vj) thì xuất d(u0,vj) =k va danh dau vj boi (L(vj); ui) ui+1:=vJ S:=ậ\{ui+1}
Bước3:1:=I+l
Nếu ¡ =n-Ithì kết thúc Nếu không thì quay lại Bước I
10
Trang 11CHƯƠNG í: BÀI TOÁN THUC TE iaé Mô tả bài toán
Đề minh họa va ứng dụng thuật toán Dijkstra, bài toán được lựa chọn là mô tả
độ trễ ngắn nhất của 25 tỉnh thành miền Bắc (Hà Nội, Hà Nam, Điện Biên, Lai
Châu, ) Mỗi tỉnh sẽ được đại điện bằng một đỉnh trong đồ thị, và các độ trễ gitra chúng sẽ là các cạnh với trọng sô đại diện cho độ trê dữ liệu của các tỉnh
Dưới đây sẽ là bản đồ xây dựng đường đi các tỉnh sồm các đường truyền đữ liệu giữa hai tỉnh bắt kì Hãy xây đựng con đường mà độ trễ giữa các tỉnh thành với
nhau là nhỏ nhất:
`
FX AX
iaoa M6 hinh héa bai toán
Các đỉnh sẽ là một đỉnh trong đỗ thị, với số thứ tự các tỉnh ở trên đỉnh Giữa 2
tỉnh có thê có nhiều con đường để kết nối với nhau, nhưng ta sẽ sử đụng thuật toán Dijkstra để tìm ra đường truyền dữ liệu ngắn nhất giữa 2 tỉnh thành
11
Trang 12CHUONG i: SAN PHAM DEMO
iao Giao Dién Chinh
Hình 3.1 Hình ảnh Giao điện Chính
Phần mềm tên là " Ứng dụng thuật toán Dijikstra để tối ưu độ trễ dữ liệu giữa các tỉnh thành Miền Bắc " Giao điện bao gồm bảng điều khiển với các tùy chọn
để sử dụng các tính năng trên Bên đưới bảng điều khiến là bản đồ với các điểm và các cạnh đại diện cho các vị trí và kết nối khác nhau, củng với thời p1an trễ tương ứng Bên phải có bảng liệt kê điểm bắt đầu, điểm kết thúc và thời gian trễ cho các lộ trình khác nhau
iad Cac Chức Năng
Hình 3.2 Hình ảnh Chọn Điểm Bắt Đầu
- _ Nơi bắt đầu chứa tất cả các điểm được đánh dấu trên Map
Hình 3.3 Hình ảnh Chọn Điểm Kết Thúc
- Noi két thúc chứa tất cả các điểm được đánh dấu trên Map
Hình 3.4 Hình ảnh Gợi Ý khi điền Điểm bắt đầu
- _ Ngoài cách chọn trên danh sách hiển thị thi còn có thé trực tiếp nhập gợi ý để
có thê tìm ra điểm cân thiệt nhanh hơn
Hình 3.5 Hình ảnh các địa điểm được chọn sẻ được đánh dấu đỏ trên bản đô
- Khi chọn hai địa điểm trong danh sách thì các điểm đó sẽ được đánh dấu đỏ
12
Trang 13- Ngoài ra có thể đôi chiêu ngược lại băng cách nhân nút đôi ở phía dưới
Hình 3.6 Hình ảnh Đổi chỗ Điểm bắt đầu và Điểm kết thúc
Hình 3.7 Hình ảnh sau Khi nhấn Bắt Đầu
- _ Khi nhấn nút Bắt Đầu thì sẽ hiển thi đường di tr diém bat dau dén diém két thúc được làm nỗi bật bằng đường đi màu đỏ
- O độ trễ thì sẽ hiện tổng khoảng cách từ điểm bắt đầu đến điểm kết thúc
- Ô đường đi sẽ hiển thị từ điểm bắt đầu cần đi qua bao nhiêu điểm để đến được điểm kết thúc
Hình 3.8 Hình ảnh Khi nhấn Nút Làm Mới
- Nut lam moi khi duge sử dụng sẽ làm mới tat ca (cac điểm bắt đầu, điểm kết thúc, các đường nôi và khoảng cách, .)
Hình 3.9 Hình ảnh khi nhấn Nút Thêm
- Khi chúng ta đã thêm điểm bắt đầu vả điểm kết thúc với một độ trễ mới thì
đường nỗi mới sẽ được tạo Khi tạo thành công thì sẽ hiển thị lên thông báo
và đường nỗi gitra 2 dinh sé được cập nhật vào bảng độ trễ
Hình 3.10 Hình ảnh Khi nhất mút Thêm một cạnh đã tôn tại
- - Khi thêm một đường nỗi đã tồn tại thì sẽ hiển thị một thông báo “Đã tồn tại đường nổi Vụi lòng nhập lạt”
Hình 3.11 Hình ảnh khi nhấn Nút Xóa
- _ Khi nhân nút Xóa thì sẽ xóa đường nôi được chọn bởi điểm bắt đầu và điểm kêt thúc
13