ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN !"# $ TIỂU LUẬN TOÁN ỨNG DỤNG ĐỀ SỐ 5 THUẬT TOÁN FLOYD-WARSHALL TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA MỌI CẶP ĐỈNH GIẢNG VIÊN : PGS.TSKH TRẦN QUỐC CHIẾN LỚP : Khoa học Máy tính K24 Nhóm học viên • Trần Ngọc Chinh • Phùng Thị Ngọc Dung • Nguyễn Văn Phú • Trần Tấn Nha • Võ Văn Thiên ĐÀ NẴNG, 05/2012 Mục lục MỤC LỤC GIỚI THIỆU %&'()*+',-". /- '0'1'2#*34#5'678 9: '3 /;#< '=> /? /'@ *;A'B /&3C /#DE #F <*34#*379')0G C '-16 '2#'?(HIJ -%1 '7!7K /*LM /*+',*8/EN() -16 #')##OP1 /7/ Q) / R+',#S /*34#M /*8/E#6#-16 71 / '=I 'T#0'6# ' 'U?M /*+',*86#*, '"#<'T#'@ ".";#'*@ 7J ".E / *@ 5'V /*34#0'W /X'Y /#S /#<'85': @''45#'Z'<'2##< #M /#W /'>#5': [ '3 /#<#Z7Y#0'6# ' '\*+',X'Y /#S /#< '86#*, '"'"6(U '#<*34# ]^ '_ /".*3\ /7(= 'W / '(0'W / )M /"W'` '*+',"; /"6(U 'R+',^#6#72 /]*34# /6 #'1#6##; '#F <#<'8M /*8/E#6#-16 '3-16 `"*3\ / * /a 'Z/B''- '5']71 /"."; //1'W /X'Y /#S /#<'8 M /*+',*8b5,#''-5': #'0J '#'1#6#*-7(= '` ' c-16 `"*3\ /* /a 'Z-Z *=N 72 /71 /&'()*+', <*L*34# /'J #>9:-#< '=> /? /71 / '= /- '0'1'2# <#' /-0'1'2#"6(U ' <7J /71 /'T#)-16 -(*L*34#> / ? /*8/EN()7Z '=-16 '3*=0'8 ]3/1'W /b E "; /d 'W / A/'J #>".#6#'Q /N6-16 -(#<'8#'-"1; `"*3\ /* /a 'Z/B".#e5*f 'X'1*+',gh!i#<72 / ]#; '-'*f ''.#h`"*3\ /* /a 'Z9*f '*) *f '7J *+',gX6#/E'b*34#5'678 *8/E-16 ; / -(J8-#6# /E'bjk07c" 17 Mục lục `"*3\ /* /a 'Z/BZ#E#6##e5*f 'X'1*+',gh!i#< 72 /]#; '`"*3\ /*9*f '*) *f '^"2#e5*f ''.#h X6# /E 'b *L *34# 5'6 78 *8 /E - 16 -( - 1(7' l1' 1 Mục lục 71 /0'W 0'Q*=-m`"*3\ /* /a 'Z/B"2#e5*f ''b 16 Floyd-warshalln#'Y /Wo* /'J #> 'B / . /#'U '*:( Chương 1: Bài toán đường đi ngắn nhất và thuật toán Floyd- Warshall. Chương 2: Cài đặt chương trình thuật toán Floyd-WarShall bằng ngôn ngữ C X'Y /W#': '- '#E"D 'O(/61pgHHPq7O r]#X') *Lb ` '/E /;(-'3^ /s *8#'Y /W'1- '- '8b -( Mục lục NHÓM HỌC VIÊN THỰC HIỆN TT Họ và tên Công việc (theo mục lục) Chữ ký Nhận xét của Giáo viên 7O A/2# X' ' • `"'8='b16 Floyd- Warshall`"*3\ /* /a 'Z/B"2#e5*f ' • X-*e#'3D /7` ' • '"/)61#618 b p'M /', A/2#j / • `"'8='b16 Floyd- Warshall`"*3\ /* /a 'Z/B"2#e5*f ' • ')0)#Z7Y#B@- /E'b1(7'`" *3\ /* /a 'Z/B"2 #e5*f ' • '"/)61#618 b hthu 'J • `"'8='b16 Floyd- Warshall `"*3\ /* /a 'Z/B"2#e5*f ' • 7` '-('b16 `" *3\ /* /a 'Z/B"2 #e5*f ' • '"/)61#618 b 7O Z A' • `"'8='btoán Floyd-Warshall `"*3\ / * /a 'Z/B"2#e5 *f ' A/(d hu p'Y • `"'8='b16 Floyd- Warshall `"*3\ /* /a 'Z/B"2#e5*f ' • 7` '-(-16 `"*3\ / * /a 'Z Mục lục CHƯƠNG 1: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT VÀ THUẬT TOÁN FLOYD-WARSHALL I. BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT 71 /'T#)#.#] /#<'8/e5 'B /` ''] / '3*8*9 *,*8"*) *,*8"(71 /'- '5']#< '=*3\ /* '=#6#'*v#< Y##'2 *3\ /* /a 'Z'1 /'I#T(#<Y#;#O #'2 *3\ /* ' ' 'Z'1 /'I'\/ -#<Y#5'E#: 'a#*8#'2 *3\ /*7w= 'Z'1 /'I#'5'U X<'8#1D*+#F*3\ /*9*) (71 /'- '5']-".*+',^ *f '-#6#/1.-(#1 '3/1.#; '-*1; *3\ / ]'/1. 7J "x#; '#F*+', -(/6 ".]3D /> /^#'=-#F*1; *3\ /'\/ **1; *3\ /'1e##3^#5'Ub #'(8 7J *1; *3\ /*< R+',#<72 /]-*+',gyh!i"-"x#; ''1e## /∈!*34# /6 C".]'T#"/2-72 /]#F#; ''1e## / X'Y /#<'85'68;(J#O7J _ /&'()*+', '3 X'1*+',J 'W /#<72 /]gyh!i 71 /*< h-b5#6#*f ' !-b5#6##; ' ik-72 /]#F#; 'k z{*3\ /* y | → → →→ → #<*.-*3\ /*-Q /#6#72 /] ∑ = − = n i ii vvwdL Yêu cầu bài toán X'1'*f 'Z0}(#F*+','L(`"*3\ /* /a 'Z9*) ( X6#/E'b*34#5'678 *8/E-16 ; / -(J8-#6#/E 'bjk07c" 17*L*34##'> /" 'U '*Y /*a ]3- *34#> /? /'- '#W /7Z '=#'1#6#-16 71 /'T#) Mục lục P' /'J #>/EN()-16 `"*3\ /* /a 'Z/B".#e5*f ' #F*+',".Z *=*34#*e7-h^*+',#<72 /]gh!i '37J 'L(`"*3\ /* /a 'Z/BZ#E#6##e5*f '#F*+', ~t7- /-#<'865? /'b16 `"*3\ /* /a 'ZZ5'69 ".*f '^ 0'E u /#'2 *f 'Z5'6( 'J ^-16 -(#< ".#6#'/EN()/2 'D '=*<-[? /'b16 1(7'H *:(#'Y /o`"'8='b16 1(7' II. THUẬT TOÁN FLOYD-WARSHALL II.1. Mô tả thuật toán Floyd-Warshall II.1.1. Đầu vào: R+',#<'3^ /J 'W /gyh!hy• €#<72 /]^"2 # /k II.1.2. Đầu ra: •7b jy‚kƒ71 /*<k-#'=-*3\ /* /a 'Z9*) k^"2#e5k •7b py‚5kƒ6#*, '*3\ /* /a 'Z/B"2#e5*f ' II.1.3. Phương pháp: B1. Bước khởi tạo: P&'@j1-"7b Z5'6 j1y‚1kƒ 71 /*<1kyik )+ ;# /k-1ky„∞ )0'W / + ;# /k*e#@ )0'W /#<0'(J ;'`1y„∞ P&'@p1-"7b Z5'6 p1y‚51kƒ 71 /*<51kyk )#<# /9*) k-51k0'W /6#*, ' ) 0'W /#<# /9*) k g6 0y| B2. Kiểm tra kết thúc: A)0y 0)'Y#jyj -"7b *.-*3\ /* /a 'Zpyp - "7b 6#*, '*3\ /* /a 'Z A/34#;u /0J *D ,0y0„- /c B3. Tính ma trận Dk theo Dk-1 và Pk theo Pk-1: Mục lục h^"2#e5ky ky 'T#'@ A) 0k…00„00k '`*e 0ky00„00k-50ky500 /34#;*e 0ky0k-50ky50k r(;c p'3D /5'656#*, '*3\ /* /a 'Z9*f '*) *f 'k R3\ /* /a 'Z9*) k/+"L(#6#*f ' 00„"k '†"L y5ky5k0„y50k5"kyk II.2. Định lý 'b16 1(7'-*Y /-*.5'>#;5-‡ˆhˆ X'> /" ' #'> /" '_ /N ;5'10"@ '*= 0k-#'=-*3\ /* /a 'Z71 / 'B /*3\ / ]*f '*) k N#6#*f '7 // •0€ c3^##DCq8 'J "@ '*=*Y /^0y| c3^#N ;5gE["@ '*=*Y /^0 z{0k HoE(7".71 /'73\ /'45 Trường hợp 1: 71 /#6#*3\ / ]*f '^kN#6#*f '7 // •0€#< #'=- /a 'Z+ ;".*3\ /50'W /N*f '0 P'*<5#S /-*3\ / /a 'Z ]*f '^kN#6#*f '7 // • 0€ J '1/E')N ;5 0ky5≤00„00k j1*<'1#6#'U '0#<0ky0ky5-*.-*3\ /* /a 'Z9*) kN#6#*f '7 // •00€ R3\ /* /a 'Z9*) k/+"L(#6#*f '0 y5ky5k0y50kyk Trường hợp 2: # Mục lục •2*3\ / ]*f '^kN#6#*f '7 // •00€#<#'= - /a 'Z*=N*f '0 g25y0k-".*3\ / /a 'Z ]*f '^kN#6#*f '7 / / •00€ P'*<*1; 0-0k#S /5'E-#6#*3\ /* /a 'ZN#6# *f '7 // •0€#< 00„00ky5‰0k cZ*V /'>##]#M /(79/E')"2*3\ /* ]*f '^kN #6#*f '7 // •00€#<#'=- /a 'Z*=N*f '0 j1*<'1#6#'U '0#<0ky00„00ky5-*.- *3\ /* /a 'Z9*) kN#6#*f '7 // •00€ R3\ /* /a 'Z9*) k/+"L(#6#*f '0 y5ky5k0y50kyk Šq@NE A)"7b 0)NE#F'b16 1(7'#<5'O ['B'; 7J *3\ /#'{1y'`*+',#'>#'7` ' A)"7b 0)NE#'>5'O [„‹ /1-*3\ /#'{1y'`*+', 0'W /J 'W /"; ' * Ghi chú: 9'@NE7J #<'8[? /'b16 1(^iky J + ; # /k-iky„∞ )0'W /+ ;# /k*86#*, '"*+',#< #'7` ''(#<J 'W /'(0'W / II.3. Ví dụ minh họa #<*+', Œ5? //E'b1(7' 'b *34##6#"7b Mục lục X6#"7b Z5'6 j 1 y • # „ ∞ „ ∞ „ ∞ „ ∞ # „ ∞ „ ∞ „ ∞ „ ∞ „ ∞ p 1 y # # # #