Cài đặt thuật toán Floyd-warshall tìm đường đi ngắn nhất giữa mọi cạp đỉnh trong đồ thị có hướng có trọng số.

4 5.9K 80
Cài đặt thuật toán Floyd-warshall tìm đường đi ngắn nhất giữa mọi cạp đỉnh trong đồ thị có hướng có trọng số.

Đang tải... (xem toàn văn)

Thông tin tài liệu

CÀI ĐẶT THUẬT TOÁN FLOYD-WARSHALL TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA MỌI CẶP ĐỈNH TRONG ĐỒ THỊ HƯỚNG TRỌNG SỐ BẰNG CHƯƠNG TRÌNH PASCAL. Thuật toán Floyd-warshall. Chương trình dùng thuật toán Floyd-warshall tìm đường đi ngắn nhất giữa mọi cạp đỉnh trong đồ thị hướng trọng số. Dữ liệu được lấy từ tệp FLOYD-WARSHALL.INP cấu trúc : n (số đỉnh) m (số cạnh) Đỉnh đầu Đỉnh cuối Trọng số x 1 y 1 w 1 x 2 y 2 w 2 … … … x m y m w m Sau khi lấy dữ liệu, chương trình sẽ xác định tồn tại đường đi ngắn nhất, tìm đường đi ngắn nhất đó và lưu vào tệp FLOYD-WARSHALL.OUT cấu trúc: D ma trận độ dài đường đi ngắn nhất giữa mọi cặp đỉnh … P ma trận định đường đi ngắn nhất giữa mọi cặp Chương trình: (FLOYDWAR.PAS) program floyd_war; uses crt; var p,d:array[1 100,1 100] of integer; f:text; n,m,w:integer; procedure input; var i,k,x,trongso:integer; begin assign(f,'floydwar.inp');reset(f); readln(f,n,m); for i:=1 to m do begin readln(f,k,x,trongso); d[k,x]:=trongso; end; close(f); end; procedure init; var i,j:integer; begin for i:=1 to n do for j:=1 to n do if(d[i,j]=0)then d[i,j]:=300 else p[i,j]:=j; end; procedure floydwar; var k,i,j:integer; begin k:=1; while(k<=n) do begin for i:=1 to n do for j:=1 to n do if(d[i,j]>d[i,k]+d[k,j]) then begin d[i,j]:=d[i,k]+d[k,j]; p[i,j]:=p[i,k]; end else begin d[i,j]:=d[i,j]; p[i,j]:=p[i,j]; end; inc(k); end; end; procedure output; var i,j:integer; begin assign(f,'floydwar.out');rewrite(f); for i:=1 to n do begin for j:=1 to n do write(f,d[i,j]:10); writeln(f); end; writeln(f); for i:=1 to n do begin for j:=1 to n do write(f,p[i,j]:10); writeln(f); end; close(f); end; BEGIN clrscr; input; init; floydwar; output; write('xem ket qua trong file:floydwar.out'); readln; END. File vào ví dụ: (FLOYDWAR.INP) 4 7 1 2 7 1 3 5 2 3 7 2 4 6 3 4 11 4 1 4 4 2 1 File ra tương ứng: (FLOYDWAR.OUT) 17 7 5 13 10 7 7 6 15 12 19 11 4 1 8 7 2 2 3 2 4 4 3 4 4 4 4 4 1 2 2 2 . CÀI ĐẶT THUẬT TOÁN FLOYD-WARSHALL TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA MỌI CẶP ĐỈNH TRONG ĐỒ THỊ CÓ HƯỚNG CÓ TRỌNG SỐ BẰNG CHƯƠNG TRÌNH PASCAL. Thuật toán Floyd-warshall. . dùng thuật toán Floyd-warshall tìm đường đi ngắn nhất giữa mọi cạp đỉnh trong đồ thị có hướng có trọng số. Dữ liệu được lấy từ tệp FLOYD-WARSHALL. INP có

Ngày đăng: 03/07/2013, 21:50

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan