Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra

30 5K 20
Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra

Đ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

Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” LỜI CẢM ƠN Ngày nay, việc ứng dụng công nghệ thông tin đã trở nên phổ biến trong hầu hết mọi cơ quan, doanh nghiệp, trường học đặc biệt là việc áp dụng các giải pháp tin học trong công tác quản lý. Trong ít năm trở lại đây, với tốc độ phát triển như vũ bão, CNTT đang dần làm cho cuộc sống của con người trở nên thú vị và đơn giản hơn. Vì vậy để bắt kịp với nhịp độ phát triển của xã hội, những kiến thức học được trên giảng đường là vô cùng quan trọng đối với mỗi Sinh viên chúng em. Chúng em xin chân thành cảm ơn các thầy, cô bộ môn đã tận tình giảng dạy chúng em trong suốt thời gian học tập vừa qua. Nhờ có sự chỉ dạy tận tình của các thầy, cô để giúp chúng em hoàn thành đồ án này. Tuy đã có nhiều cố gắng nhưng trong quá trình làm đề tài không thể tránh được những sai sót. Chúng em rất mong nhận được các ý kiến đóng góp từ các thầy cô và bạn bè để chúng em rút kinh nghiệm thực hiện tốt hơn ở các đề tài sau. Chúng em xin chân thành cảm ơn thầy cô! Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” MỤC LỤC CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1 1.1. Lý thuyết ngăn xếp (Stack) 1 1.2. Lý thuyết hàng đợi (Queue) 1 1.3. Thuật toán tìm kiếm theo chiều sâu ( DFS: Depth First Search ) 2 1.3.1. Ý tưởng thuật toán. 2 1.3.2. Phân tích thuật toán. 3 1.3.3. Ví dụ DFS 3 1.4. Thuật toán tìm kiếm theo chiều rộng (BFS: Breadth First Search) 4 1.4.1. Ý tưởng thuật toán. 4 1.4.2. Phân tích thuật toán. 4 1.4.3. Ví dụ BFS 5 1.5. Thuật toán tìm kiếm đường đi ngắn nhất (chi phí thấp nhất) trên đồ thị có trọng số theo Dijkstra: 5 1.5.1. Ý tưởng của thuật toán Dijkstra: 5 1.5.2. Phân tích thuật toán: 6 1.5.3. Ví dụ Dijkstra : 6 1.6. Lý thuyết đồ họa trong Java: 8 1.6.1 Tìm tọa độ các đỉnh của đa giác đều n đỉnh 8 1.6.2. Thuật toán vẽ đường thẳng nối 2 điểm 9 CHƢƠNG 2: PHÂN TÍCH - THIẾT KẾ 10 2.1. Phân tích chương trình. 10 2.1.1. Yêu cầu: 10 2.1.2. Quy định: 10 2.1.2. Mục tiêu đặt ra: 10 2.2. Thiết kế 11 Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” 2.2.1. Kiến trúc chung 11 2.2.1.1. Chức năng khởi tạo: 12 2.2.1.2. Chức năng tìm kiếm đồ thị BFS và DFS: 12 2.2.1.3. Chức năng tìm kiếm đồ thị Dijkstra (đồ thị vô hướng): 12 2.2.1.4. Chức năng mô phỏng tìm kiếm đồ thị: 12 2.2.2. Cấu trúc dữ liệu 13 2.2.3. Thuật toán 13 2.2.3.1. Lưu đồ giải thuật BFS: 13 2.2.3.2. Lưu đồ giải thuật DFS: 15 2.2.3.3. Lưu đồ giải thuật Dijkstra: 16 2.2.3.4. Lưu đồ giải thuật Bresenham 17 2.2.4. Giao diện người dùng 18 2.3. Mục tiêu đã hoàn thành 19 2.4. Các thiếu sót của chương trình 21 2.5. Khả năng ứng dụng 21 2.6. Hướng phát tiển 21 KẾT LUẬN 22 TÀI LIỆU THAM KHẢO 24 NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN 25 Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” DANH MỤC HÌNH ẢNH Hình 1. 1: Mô tả ngăn xếp 1 Hình 1. 2: Mô tả hàng đợi 2 Hình 1. 3: Đồ thị tìm kiếm DFS 4 Hình 1. 4: Ví dụ BFS 5 Hình 1. 5: Ví dụ thuật toán Dijkstra 7 Hình 1. 6: Minh họa thuật toán Bresenham 9 Hình 2. 1: Mô hình phân rã chức năng 11 Hình 2. 2: Lưu đồ giải thuật BFS 14 Hình 2. 3: Lưu đồ giải thuật DFS 15 Hình 2. 4: Lưu đồ giải thuật Dijkstra 16 Hình 2. 5: Lưu đồ thuật toán Bresenham 17 Hình 2. 6: Giao diện chính 20 Hình 2. 7: Giao diện mô phỏng thuật toán Dijkstra 20 Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” LỜI MỞ ĐẦU  Đề tài: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Lý thuyết đồ thị là một lĩnh vực đã có từ lâu và có nhiều ứng dụng hiện đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler. Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cái cầu ở thành phố Konigsberg… Có rất nhiều thuận toán trên đồ thị được xây dựng trên cơ sở duyệt tất cả các đỉnh của đồ thị sao cho mỗi đỉnh của nó được viếng thăm đúng một lần. Vì vậy, việc xây dựng những thuật toán cho phép duyệt một cách hệ thống tất cả các đỉnh của đồ thị là một vấn đề quan trọng thu hút sự quan tâm nghiên cứu của nhiều người. Những thuật toán như vậy được gọi chung là thuật toán tìm kiếm trên đồ thị. Trong đề tài này chúng em sẽ giới thiệu hai thuật toán tìm kiếm cơ bản trên đồ thị không trọng số: Thuật toán tìm kiếm theo chiều sâu (Depth Firt Search), Thuật toán tìm kiếm theo chiều rộng (Breadth First Search) và thuật toán tìm đường đi ngắn nhất (chi phí thấp nhất) trên đồ thị có trọng số theo Dijkstra. Để tiện cho việc học tập, tìm hiểu 3 thuật toán trên, nhóm chúng em đã viết một chương trình sử dụng ngôn ngữ lập trình Java để mô phỏng lại 3 thuật toán BFS và DFS và Dijkstra. Người dùng nhập dữ liệu vào chương trình qua giao diện cửa sổ và lựa chọn chức năng của chương trình là tìm kiếm theo chiều rộng (BFS) hoặc tìm kiếm theo chiều sâu (DFS) hoặc tìm đường đi ngắn nhất (chi phí thấp nhất) trên đồ thị có trọng số theo Dijkstra. Sau khi có kết quả tìm kiếm, người dùng có thể lựa chọn mô phỏng lại quá trình tìm kiếm bằng giao diện đồ họa. Chương trình sẽ vẽ một đồ thị dựa trên những dữ liệu của người dùng và hiển thị quá trình tìm kiếm bằng hình ảnh động để người dùng có thể thấy được quá trình tìm kiếm diễn ra theo từng bước như thế nào. Cấu trúc của báo cáo đề tài gồm 4 chương: - Chương 1: Cơ sở lý thuyết. - Chương 2: Phân tích - Thiết kế. - Kết luận. Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Giảng viên hướng dẫn: Vũ Đức Minh Trang 1 CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1.1. Lý thuyết ngăn xếp (Stack) Một ngăn xếp là một cấu trúc dữ liệu dạng thùng chứa (container) của các phần tử (thường gọi là các nút (node)) và có hai phép toán cơ bản : push and pop. Push bổ sung một phần tử vào đỉnh (top) của ngăn xếp, nghĩa là sau các phần tử đã có trong ngăn xếp. Pop giải phóng và trả về phần tử đang đứng ở đỉnh của ngăn xếp. Trong stack, các đối tượng có thể được thêm vào stack bất kỳ lúc nào nhưng chỉ có đối tượng thêm vào sau cùng mới được phép lấy ra khỏi stack. Ngoài ra, stack cũng hỗ trợ một số thao tác khác:  isEmpty(): Kiểm tra xem stack có rỗng không.  Top(): Trả về giá trị của phần tử nằm ở đầu stack mà không hủy nó khỏi stack. Nếu stack rỗng thì lỗi sẽ xảy ra. Hình 1. 1: Mô tả ngăn xếp 1.2. Lý thuyết hàng đợi (Queue) Một hàng đợi là một cấu trúc dữ liệu dạng ống của các phần tử (thường gọi là các nút (node)) và có hai phép toán cơ bản : enQueue and deQueue. enQueue bổ sung một phần tử vào cuối của hàng đợi, nghĩa là sau các phần tử đã có trong hàng đợi. deQueue giải phóng và trả về phần tử đang đứng ở đỉnh của hàng đợi. Trong Queue, các đối tượng Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Giảng viên hướng dẫn: Vũ Đức Minh Trang 2 có thể được thêm vào Queue bất kỳ lúc nào nhưng chỉ có đối tượng thêm vào đầu tiên mới được phép lấy ra khỏi stack. Ngoài ra, stack cũng hỗ trợ một số thao tác khác:  IsEmpty(): kiểm tra xem hàng đợi có rỗng không.  Front(): trả về giá trị của phần tử nằm ở đầu hàng đợi mà không hủy nó. Nếu hàng đợi rỗng thì lỗi sẽ xảy ra. Hình 1. 2: Mô tả hàng đợi 1.3. Thuật toán tìm kiếm theo chiều sâu ( DFS: Depth First Search ) 1.3.1. Ý tƣởng thuật toán. Tìm kiếm theo chiều sâu (DFS) là một thuật toán duyệt và tìm kiếm trên một cây hoặc một đồ thị. Thuật toán khởi đầu tạo gốc (hoặc chọn một đỉnh nào đó coi như gốc) và phát triển xa nhất có thể theo mỗi nhánh. Thông thường, DFS là một dạng tìm kiếm mù mà quá trình tìm kiếm được phát triển tới đỉnh con đầu tiên của nút đang tìm kiếm cho tới khi gặp được đỉnh cần tìm hoặc tới một nút không có con. Khi đó giải thuật quay lui về đỉnh vừa mới tìm kiếm ở bước trước. Trong dạng không đệ quy, tất cả các đỉnh chờ được phát triển được bổ sung và một ngăn xếp. Đỉnh nào được đưa vào ngăn xếp sau sẽ được phát triển trước (LIFO). Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Giảng viên hướng dẫn: Vũ Đức Minh Trang 3 Ý tưởng chính của thuật toán có thể trình bày như sau: Ta sẽ bắt đầu tìm kiếm từ một đỉnh v0 nào đó của đồ thị. Sau đó chọn u là một đỉnh tuỳ ý kề với v0 và lặp lại quá trình đối với u. Ở bước tổng quát, giả sử ta đang xét đỉnh v. Nếu như trong số các đỉnh kề với v tìm được đỉnh w là chưa được xét thì ta sẽ xét đỉnh này (nó sẽ trở thành đã xét) và bắt đầu từ nó ta sẽ bắt đầu quá trình tìm kiếm còn nếu như không còn đỉnh nào kề với v là chưa xét thì ta nói rằng đỉnh này đã duyệt xong và quay trở lại tiếp tục tìm kiếm từ đỉnh mà trước đó ta đến được đỉnh v (nếu v=v0, thì kết thúc tìm kiếm). Có thể nói nôm na là tìm kiếm theo chiều sâu bắt đầu từ đỉnh v được thực hiện trên cơ sở tìm kiếm theo chiều sâu từ tất cả các đỉnh chưa xét kề với v. 1.3.2. Phân tích thuật toán.  Các bước thực hiện thuật giải: - Bước 1. Xuất phát từ đỉnh bắt đầu, chuyển đỉnh đó vào ngăn xếp. - Bước 2. Xử lý đỉnh này và đánh dấu để không xử lý lần sau. - Bước 3. Chuyển tất cả các đỉnh kề nó vào ngăn xếp, chọn một đỉnh để xử lý tiếp theo. - Bước 4. Quay lại bước 2 cho đến khi tìm được đường ngắn nhất hoặc không còn đỉnh trong ngăn xếp. 1.3.3. Ví dụ DFS  Ví dụ: 1. Bắt đầu từ đỉnh 1. Đưa các đỉnh kề với 1 vào danh sách: 2, 4, 5. 2. Chọn đỉnh 2 để xử lý. Đưa các đỉnh kề với đỉnh 2 vào danh sách: 3, 5. 3. Chọn đỉnh 3 để xử lý. Đưa các đỉnh kề với đỉnh 3 vào danh sách: 5, 6. 4. Chọn định 5 để xử lý. Đưa các đỉnh kề với đỉnh 5 vào danh sách: 4 5. Chọn đỉnh 4 để xử lý. Không có đỉnh nào kề với đỉnh 4. 6. Chọn đỉnh 6 để xử lý. Không có đỉnh nào kề với đỉnh 6. 7. Tất các đỉnh đã được duyệt. 8. Kết quả cuối cùng thứ tự: 1 2 3 5 4 6  Đồ thị: Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Giảng viên hướng dẫn: Vũ Đức Minh Trang 4 Hình 1. 3: Đồ thị tìm kiếm DFS 1.4. Thuật toán tìm kiếm theo chiều rộng (BFS: Breadth First Search) 1.4.1. Ý tƣởng thuật toán. Trong lý thuyết đồ thị, tìm kiếm theo chiều rộng (BFS) là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một đồ thị. Thuật toán khởi đầu tại đỉnh gốc (hoặc chọn một đỉnh nào đó coi như gốc) và duyệt tất cả các đỉnh lân cận. Sau đó, lần lượt đối với các đỉnh lân cận, nó kiểm tra các đỉnh con của đỉnh đó mà chưa đi qua. Khi đã kiểm tra một đỉnh, đỉnh đó sẽ được đánh dấu đã đi qua. Quá trình đó lặp đi lặp lại cho đến khi tìm được đường đi ngắn nhất. Để ý rằng trong thuật toán tìm kiếm theo chiều sâu đỉnh được thăm càng muộn sẽ càng sớm trở thành đã duyệt xong. Điều đó là hệ quả tất yếu của việc các đỉnh được thăm sẽ được kết nạp vào trong ngăn xếp (STACK). Tìm kiếm theo chiều rộng trên đồ thị, nếu nói một cách ngắn gọn, được xây dựng trên cơ sở thay thế ngăn xếp (STACK) bởi hàng đợi (QUEUE). Với sự cải biên như vậy, đỉnh được thăm càng sớm sẽ càng sớm trở thành đã duyệt xong (tức là càng sớm dời khỏi hàng đợi). Một đỉnh sẽ trở thành đã duyệt xong ngay sau khi ta xét xong tất cả các đỉnh kề (chưa được thăm) với nó 1.4.2. Phân tích thuật toán.  Bước 1: Khởi tạo: - Các đỉnh đều ở trạng thái chưa đánh dấu, ngoại trừ đỉnh xuất phát S là đã đánh dấu duyệt theo thứ tự ưu tiên chiều rộng  Bước 2: Lặp các bước sau đến khi hàng đợi rỗng: - Lấy u khỏi hàng đợi, thông báo thăm u (Bắt đầu việc duyệt đỉnh u) Xét tất cả những đỉnh v kề với u mà chưa được đánh dấu, với mỗi đỉnh v đó: - Đánh dấu v. - Ghi nhận vết đường đi từ u tới v (Có thể làm chung với việc đánh dấu) - Đẩy v vào hàng đợi (v sẽ chờ được duyệt tại những bước sau)  Bước 3: Truy vết tìm đường đi. Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra” Giảng viên hướng dẫn: Vũ Đức Minh Trang 5 1.4.3. Ví dụ BFS Ví dụ: Xét đồ thị dưới đây, Đỉnh xuất phát S = 1. Hình 1. 4: Ví dụ BFS Hàng đợi Đỉnh u ( lấy ra từ hàng đợi) Hàng đợi (sau khi lấy u ra) Các đỉnh v kề u mà chưa lên lịch Hàng đợi sau khi đẩy những đỉnh v vào (1) 1  2,3 (2,3) (2,3) 2 (3) 4 (3,4) (3,4) 3 (4) 5 (4,5) (4,5) 4 (5) 6 (5,6) (5,6) 5 (6) Không có (6) (6) 6  Không có  Để ý thứ tự các phần tử lấy ra khỏi hàng đợi, ta thấy trước hết là 1; sau đó đến 2, 3; rồi mới tới 4, 5; cuối cùng là 6. Rõ ràng là đỉnh gần S hơn sẽ được duyệt trước. Và như vậy, ta có nhận xét: nếu kết Các thuật toán trên đồ thị hợp lưu vết tìm đường đi thì đường đi từ S tới F sẽ là đường đi ngắn nhất (theo nghĩa qua ít cạnh nhất) 1.5. Thuật toán tìm kiếm đƣờng đi ngắn nhất (chi phí thấp nhất) trên đồ thị có trọng số theo Dijkstra: 1.5.1. Ý tƣởng của thuật toán Dijkstra: Có rất nhiều giải thuật đã được phát triển để giải bài toán tìm đường đi ngắn nhất giữa một cặp đỉnh, trong khuôn khổ bài viết này tôi chỉ xin giới thiệu giải thuật Dijkstra. Giải thuật Dijkstra là một giải thuật để giải bài toán đường đi ngắn nhất nguồn đơn trên [...]... 13 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra Hình 2 2: Lưu đồ giải thuật BFS Giảng viên hướng dẫn: Vũ Đức Minh Trang 14 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra 2.2.3.2 Lƣu đồ giải thuật DFS: Hình 2 3: Lưu đồ giải thuật DFS. .. Đức Minh Trang 16 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra 2.2.3.4 Lƣu đồ giải thuật Bresenham Hình 2 5: Lưu đồ thuật toán Bresenham Giảng viên hướng dẫn: Vũ Đức Minh Trang 17 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra 2.2.4 Giao... chức năng tìm kiếm với BFS, DFS hoặc Dijkstra, người dùng có thể chọn chức năng mô phỏng Chức năng mô phỏng sẽ vẽ đồ thị dựa trên những dữ liệu đầu vào, sau đó thực hiện hiển thị các bước xây dựng của thuật toán để mô phỏng thuật toán Giảng viên hướng dẫn: Vũ Đức Minh Trang 12 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra ... quả BFS và Kết quả DFS để hiển thị đường đi với các phương pháp tương ứng Cuối cùng là add vào 4 Jbutton BFS và Mô phỏng BFS, Jbutton DFS và Mô phỏng DFS lắng nghe sự kiện click Khi button xử lý được click => thực hiện thao tác xử lý BFS Giảng viên hướng dẫn: Vũ Đức Minh Trang 18 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra .. .Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra một đồ thị có trọng số cạnh mà tất cả các trọng số đều không âm Nó xác định đường đi ngắn nhất giữa hai đỉnh cho trước, từ đỉnh a đến đỉnh b Ý tưởng xuất phát từ việc gán nhãn cho các đỉnh Nhãn được gán theo cách là đường đi ngắn nhất từ đỉnh a đến đỉnh... tính toán được tính tự động do đó có thể không chính xác khi tính toán trên các máy tính khác nhau 2.5 Khả năng ứng dụng Tìm kiếm theo thuật toán Dijkstra là nâng cao của tìm kiếm theo chiều rộng Tìm đường đi 2.6 Hƣớng phát tiển  Phát triển mô phỏng tìm kiếm đồ thị có hướng  Phát triển mô phỏng các thuật toán tìm kiếm trên đồ thị khác như A*  Phát triển mô phỏng thuật toán tìm kiếm trên đồ thị có trọng. .. trọng số (DIJKSTRA, … )  Chương trình có thể được phát triển thêm các thuật toán tìm kiếm khác để có thể đánh giá và so sánh khả năng của các thuật toán tìm kiếm khác nhau Giảng viên hướng dẫn: Vũ Đức Minh Trang 21 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra KẾT LUẬN Thông qua bài tìm hiểu và xây dựng chương trình theo. .. việc tính toán theo thuật toán và thời gian thực hiện của từng bộ test Chương trình có phần vẽ đồ thị giúp cho việc minh họa sinh động và dễ hiểu hơn a Giao diện chính Giảng viên hướng dẫn: Vũ Đức Minh Trang 19 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra Hình 2 6: Giao diện chính b Giao diện mô phỏng thuật toán Dijkstra. .. theo thuật toán tìm kiếm theo chiều rộng và theo chiều sâu, tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra chúng em đã biết thêm một thuật toán tìm kiếm mới khá hiệu quả đối với các bài toán có một lượng lớn cơ sở dữ liệu lớn Tìm kiếm theo chiều rộng và chiều sâu có thời gian thực hiện rất nhanh tuy nhiên dây vẫn chưa phải hương pháp tìm kiếm nhanh và tối ưu nhất Thuật toán tìm kiếm theo. .. Minh Trang 22 Đồ án Java: Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị có trọng số theo Dijkstra Bảng phân công công việc: STT Họ tên thành viên Công việc 1 Phương Văn Cảnh Code nội dung mô phỏng, viết báo cáo 2 Nguyễn Năng Duy Code thuật toán BFS, viết báo cáo BFS 3 Đỗ Ngọc Linh Code thuật toán DFS, viết báo cáo DFS 4 Đỗ Anh Đức Code thuật toán Dijkstra, . trình sử dụng ngôn ngữ lập trình Java để mô phỏng lại 3 thuật toán BFS và DFS và Dijkstra. Người dùng có thể nhập dữ liệu vào chương trình qua giao diện cửa sổ bao gồm thông tin về số đỉnh,. kinh nghiệm thực hiện tốt hơn ở các đề tài sau. Chúng em xin chân thành cảm ơn thầy cô! Đồ án Java: “Mô phỏng thuật toán tìm kiếm đồ thị theo DFS và BFS và tìm đường đi ngắn nhất trên đồ thị. Dijkstra: 5 1.5.2. Phân tích thuật toán: 6 1.5.3. Ví dụ Dijkstra : 6 1.6. Lý thuyết đồ họa trong Java: 8 1.6.1 Tìm tọa độ các đỉnh của đa giác đều n đỉnh 8 1.6.2. Thuật toán vẽ đường thẳng nối

Ngày đăng: 03/07/2015, 22:51

Từ khóa liên quan

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

Tài liệu liên quan