1. Trang chủ
  2. » Giáo án - Bài giảng

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
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 41 KB

Nội dung

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

TÀI LIỆU LIÊN QUAN

w