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

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

13 930 2

Đ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 175,5 KB

Nội dung

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.

Trang 1

Chương 2: MÔ TẢ ỨNG DỤNG VÀ GIẢ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 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

2 Mô tả và 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ị và 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 và cạnh u (các Quận trong Tp.HCM là v 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 và 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à trang1

Trang 2

TÂN

PHÚ

12

11

BÌNH

TÂN

5

2

TÂN BÌNH

10 THÀNH BẾN

GÒ VẤP

BÌNH THẠN H

4

6

Trang 3

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 3

Trang 4

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];

Trang 5

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

5

Trang 6

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

Trang 7

}

}

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

7

Trang 8

VÍ DỤ CHO THUẬT TOÁN FLOYD

Ví dụ:

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:

Trang 9

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 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

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

9

Trang 10

for(k=1;k<=3;k++)

Trang 11

for(k=1;k<=n;k++)

GVHD : Trần Quang Hà

trang

11

Trang 12

ĐÂ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)

Trang 13

GVHD : Trần Quang Hà

trang

13

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

w