Về thuật toán, bạn có thể xem lại tại bài viết Tìm đường đi ngắn nhất Dijkstra, Floyd. Bài này mình sẽ giới thiệu tới các bạn chương trình mô phỏng thuật toán Dijkstra có đồ họa trên Java, đây cũng là đề tài thực tập cơ sở của mình.
Chương trình cho phép người dùng vẽ đồ thị một cách nhanh chóng và dễ dàng, các điểm có thể kéo đi kéo lại, xóa, sửa tri phí (trọng số), … hoặc có thể dùng các đồ thị có sẵn trong phần demo. Và khi chạy sẽ hiển thị quá trình đường đi trên cả đồ thị cũng như phần bên dưới Log. Dưới cùng còn có một bảng để mô tả các công việc mà khi làm bằng tay chúng ta cần làm để tìm đường đi ngắn nhất. Chương trình cũng cho phép lưu lại đồ thị, mở đồ thị đã lưu. Thực ra thì nói nó cũng dài, mình sẽ nói các chức năng của chương trình trong video dài 7 phút dưới đây.
Lưu ý muốn chạy được file *jar bạn cần cài đặt JDK cho máy.
Download Mã nguồn và file jar của chương trình
Mọi thắc mắc, góp ý xin liên hệ trực tiếp với mình qua Email hoặc facebook.
Tham khảo: Sản phẩm của tôi
Thank you!
Bạn cho mình hỏi là trong code của chương trình thì đâu là hàm thực hiện thuật toán dijkstra?
Thật xin lỗi là do khi code chưa có kinh nghiệm nên đã không chú thích phù hợp trong code.
Bạn để ý trong Class MyDijkstra có 2 hàm dijkstra và dijkstraStep. Đó là 2 hàm thưc hiện thuật toán và thực hiện thuật toán theo từng bước. 2 hàm tương ứng là tracePath và tracePathStep truy vết đường đi và truy vết đường đi theo từng bước.
cho e hỏi chút là a đang hướng dẫn trên chtrinh j thế ạ?
Chương trình do mình làm đó bạn. Bạn có thể download ở cuối bài viết đó.
hình như file mã nguồn của bạn ko đủ nhỉ, bạn ko gửi hết àh
Mình gửi hết rồi, không còn gì cả :3
anh ơi , em chạy project của anh trên eclipse thì nó báo như thế này là bị làm sao ạ :
Exception in thread “main” java.lang.NullPointerException
at javax.swing.ImageIcon.(Unknown Source)
at nguyenvanquan7826.MyFrame.creatPaintPanel(MyFrame.java:200)
at nguyenvanquan7826.MyFrame.(MyFrame.java:93)
at nguyenvanquan7826.MyMain.main(MyMain.java:9)
Mình chạy ầm ầm mà, Bạn thử vào sửa cái chỗ lấy các icon ra.
Trong đó mình viết là getClass().getResource(…) thì bạn sửa thành getClass().getClassLoader().getResource(..) xem được không nhé
ôi được rồi. cảm ơn bạn nhé ! bạn giải thích cho mình vì sao lại thế được ko ?
Cái này mình cũng thắc mắc tại sao trên win lại lỗi còn linux thì không :)).