MÔ TẢ ỨNG DỤNG VÀ GIẢI THÍCH ỨNG DỤNG CỦA THUẬT TOÁN FLOYD

12 925 2
MÔ TẢ ỨNG DỤNG VÀ GIẢI THÍCH ỨNG DỤNG CỦA THUẬT TOÁN FLOYD

Đ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

Việc nghiên cứu thuật toán Floyd để áp dụng vào trong thực tế là rất quan trọng với nhiều tiện lợi cho con người cả về vật chất, của cải lẫn thời gian. Giúp ích rất nhiều cho con người trong việc nâng cao hiệu quả làm việc và làm tăng năng suất lao động, tăng thu nhập cho doanh nghiệp. Qua đây chính là việc áp dụng cho Tài xế Taxi để tìm đường đi ngắn nhất trong các tuyến đường giao thông đồng thời tiết kiệm được chi phí về nhiên liệu, thời gian và làm tăng thu nhập cho mình cũng như công ty.

Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ Chương 2: MÔ TẢ ỨNG DỤNGGIẢI THÍCH ỨNG DỤNG CỦA THUẬT TOÁN FLOYD 1. Mô tả ứng dụng Việc nghiên cứu thuật toán Floyd để áp dụng vào trong thực tế là rất quan trọng với nhiều tiện lợi cho con người cả về vật chất, của cải lẫn thời gian. Giúp ích rất nhiều cho con người trong việc nâng cao hiệu quả làm việc làm tăng năng suất lao động, tăng thu nhập cho doanh nghiệp. Qua đây chính là việc áp dụng cho Tài xế Taxi để tìm đường đi ngắn nhất trong các tuyến đường giao thông đồng thời tiết kiệm được chi phí về nhiên liệu, thời gian làm tăng thu nhập cho mình cũng như công ty. 2. tả giải thích ứng dụng của thuật toán Floyd Phạm vi áp dụng của thuật toán là Thành Phố Hồ Chí Minh. Ta xem mõi Quận của Tp.HCM là một đỉnh của đồ thị các con đường đi từ Quận này sang Quận kia là đường nối giữa các đỉnh với nhau. Ở đây ta xem đường nối giữa các Quận là đường 2 chiều. Lúc đầu ta quản lý một tập hợp động ma trận S đỉnh v cạnh u (các Quận trong Tp.HCM là v đường đi giữa chúng chính là u). với mỗi đỉnh v, chúng ta quản lý một d[v] là đường đi ngắn nhất trong các đường đi nối hai Quận bất kỳ của đồ thị. Ta chỉ xét 13 quận của Tp.HCM là : Quận 12, Quận Tân Phú, Quận Bình Tân, Quận 6, Quận 5, Quận 4, Quận 2, Quận Bình Thạnh, Quận Gò Vấp, Quận Tân Bình, Quận 10, Quận 11 Chợ Bến Thành. Ta cho đường đi giữa các quận được tính bằng km như sau: GVHD : Trần Quang Hà trang 1 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ 1. Quận 12 2. Quận Tân Phú 3. Quận Bình Tân 4. Quận 6 5. Quận 5 6. Quận 4 7. Quận 2 8. Quận Bình Thạnh 9. Quận Gò Vấp 10. Quận Tân Bình 11. Quận 11 12. Quận 10 13. Chợ Bến Thành GVHD : Trần Quang Hà trang 2 TÂN PHÚ 12 11 BÌNH TÂN 5 2 TÂN BÌNH 10 BẾN THÀNH GÒ VẤP BÌNH THẠN H 4 6 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ MA TRẬN 13 0 1 0 0 0 0 0 0 1 2 0 0 0 1 0 2 0 0 0 0 0 0 2 0 0 0 0 2 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 4 0 0 0 0 0 2 0 0 0 0 0 4 0 2 0 0 0 0 0 3 0 0 0 0 0 2 0 4 0 0 0 0 0 1 0 0 0 0 0 4 0 3 0 0 0 0 1 0 0 0 0 0 0 3 0 2 0 0 0 1 1 0 0 0 0 0 0 2 0 3 0 0 0 2 2 0 0 0 0 0 0 3 0 5 4 2 0 0 1 2 0 0 0 0 0 5 0 1 0 0 0 0 0 3 0 0 0 0 4 1 0 0 0 0 0 0 1 1 1 1 0 2 0 4 0 THUẬT TOÁN FLOYD ÁP DỤNG CHO TÀI XẾ TAXI Ở THÀNH PHỐ HỒ CHÍ MINH. #include<stdio.h> #include<conio.h> #include <math.h> #define MAX 50 #define VOCUC 1000 int T[MAX][MAX],L[MAX][MAX],P[MAX][MAX]; GVHD : Trần Quang Hà trang 3 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ int n,u,v,k; void LoadFile() { FILE *f; int i,j; f=fopen ("G:\\4.txt","r"); fscanf(f,"%d",&n); printf("\nSo dinh cua do thi: %d",n); printf("\nMa tran trong so: "); for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) { fscanf(f,"%d",&T[i][j]); printf("%3d",T[i][j]); if((i!=j) && (T[i][j]==0)) T[i][j]=VOCUC; } } fclose(f); GVHD : Trần Quang Hà trang 4 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ } void Floy() { int i,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { L[i][j]=T[i][j]; if((i==j) || (L[i][j]==VOCUC)) P[i][j]=0; else GVHD : Trần Quang Hà trang 5 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ P[i][j]=j; } } for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(L[i][j]>(L[i][k]+L[k][j])) { L[i][j]=L[i][k]+L[k][j]; P[i][j]=P[i][k]; } } } } } GVHD : Trần Quang Hà trang 6 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ VÍ DỤ CHO THUẬT TOÁN FLOYD Ví dụ: 0 1 5 0 0 2 0 3 0 0 0 2 0 1 0 -2 0 2 0 2 0 0 3 0 0 Tai i=1 J=1 Gán L[1][1]=T[1][1] Vi 1=1 nen ta gan P[1][1]=0 Tang j=2 Gan L[1][2] = T[1][2] Vi 1 khac 2 nen ta thuc hienj cau lenh else Gan P[1][2]=2 Tang j=3 Gan L[1][3]=T[1][3] Vi 1 khac 3 va T[1][3] khong bang vo cung nen thuc hien cau lenh else Gan p[1][3]=3 Tang j=4 Gan L[1][4]=T[1][4] Vi L[1][4]=vo cuc Nen gan P[1][4]=0 Tang j=5 Gan L[1][5]=T[1][5] Vi L[1][5] = vo cuc nen Gan P[1][5]=0 Tuong tu tang i=2 Ta co: P[2][1]=2 P[2][2]=0 P[2][3]=3 P[2][4]=0 P[2][5]=0 Tang i=3 P[3][1]=0 P[3][2]=2 P[3][3]=0 P[3][4]=3 P[3][5]=0 Tang i=4 P[4][1]=1 P[4][2]=0 P[4][3]=3 GVHD : Trần Quang Hà trang 7 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ P[4][4]=0 P[4][5]=5 Tang i=5 P[5][1]=0 P[5][2]=0 P[5][3]=3 P[5][4]=0 P[5][5]=0 Chay xong dong for nay ta duoc ma tran L va P 0 1 5 1000 1000 2 0 3 1000 1000 1000 2 0 1 1000 -2 0 2 0 2 1000 1000 3 1000 0 0 2 3 0 0 2 0 3 0 0 0 2 0 4 0 1 0 3 0 5 0 0 3 0 0 LIENHE\void Floy.doc Sau khi tìm được ma trận P2 ta tìm được ma trận L2 LIENHE\RESUML.doc Chạy vòng lặp for tương tự ta tìm được các ma trận L2,P2,L3,P3,L4,P4,L5,P5 for(k=1;k<=2;k++) GVHD : Trần Quang Hà trang 8 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ for(k=1;k<=3;k++) for(k=1;k<=4;k++) GVHD : Trần Quang Hà trang 9 Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ for(k=1;k<=n;k++) GVHD : Trần Quang Hà trang 10 [...]...Trường Đại Học Trà Vinh Khoa Kỹ Thuật Công Nghệ ĐÂY LÀ KẾT QUẢ CUỐI CÙNG CỦA VÒNG LẶP:LIENHE\for.doc Vào hàm Floy: chương trình chạy ta được kết quả như sau: ( ví dụ tìm đường đi ngắn nhát từ đỉnh 5 đến đỉnh 2) GVHD : Trần Quang Hà trang11 Trường Đại Học Trà Vinh GVHD : Trần Quang Hà Khoa Kỹ Thuật Công Nghệ trang12

Ngày đăng: 29/05/2014, 23:13

Từ khóa liên quan

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

Tài liệu liên quan