Graph သီအိုရီတွင်အတိုဆုံးလမ်းကြောင်းပြ problem နာသည် dert ည့်သည်နှစ် ဦး အကြားအတိုချုပ်သို့မဟုတ် undirected ဂရပ်ဖစ်များအကြားအတိုဆုံးလမ်းကြောင်းကိုရှာဖွေခြင်းနှင့်ပတ်သက်သည့်ဂန္ထဝင် algorithmic ပြ problem နာဖြစ်သည်။ Floyd-Warshall algorithm သည်ဤပြ problem နာကိုဖြေရှင်းရန်အသုံးပြုသော Classic Dynamic programming algorithm ဖြစ်သည်။ PHP ကို အသုံးပြု. Floyd-Warshall algorithm ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါမည်။
Floyd-warshall algorithm သည် algorithm တစ်ခုဖြစ်ပြီး algorithm သည် vertest လမ်းကြောင်းအကြားအရှည်များကိုဂရပ်ရှိအတိုဆုံးလမ်းကြောင်းအလျားများကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်အတိုဆုံးလမ်းကြောင်းပြ problem နာကိုဖြေရှင်းနိုင်သည်။ ဒေါင်လိုက်အကြားအတိုဆုံးလမ်းကြောင်းအရှည်ကိုသိုလှောင်ရန်နှစ်ရှုထောင်ခင်းကျင်းမှုကိုအသုံးပြုသည်။ နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်ဒေါင်လိုက်အားလုံးအကြားအတိုဆုံးလမ်းကြောင်းကိုရနိုင်သည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် 2D array ကိုဖန်တီးရန်လိုအပ်သည်။ N သည်ဂရပ်တွင်ဒေါင်လိုက်အရေအတွက်ကိုကိုယ်စားပြုသည်။ Array ရှိ element တစ်ခုစီသည်ဒေါင်လိုက်နှစ်ခုအကြားအကွာအဝေးကိုကိုယ်စားပြုသည်။ Vertices နှစ်ခုအကြားအနားမရှိတော့လျှင်အကွာအဝေးကိုအဆုံးမဲ့သတ်မှတ်ထားသည်။ အောက်ဖော်ပြပါသည် PHP ကုဒ်အကောင်အထည်ဖော်မှုဖြစ်သည်။
finish finishDwarshall function ($ ဂရပ်) { $ n = ရေတွက် ($ ဂရပ်); $ dist = $ ဂရပ်; အတွက် ($ k = 0; $ k <$ n; $ k ++) အတွက် အတွက် ($ i = 0; $ i <$ n; $ i ++) { အတွက် ($ j = 0; $ j $ j; $ j ++) အတွက် အကယ်. ($ DIFF [$ i] [$ K] + $ dist [$ k] [$ J] [$ j] [$ j] [$ j] [$ j] $ DISD [$ i] [$ j] = $ D DIME [$ i] [$ K] + $ DIFE [$ k]; } } } } $ DIST ကိုပြန်သွားပါ။ }
ထို့နောက်ကျွန်ုပ်တို့သည်ဥပမာဂရပ်တစ်ခုကိုသတ်မှတ်ပြီးကျွန်ုပ်တို့၏ algorithm ကိုစမ်းသပ်စစ်ဆေးသည်။ ကျွန်ုပ်တို့သည်ဂရပ်၏ဖွဲ့စည်းပုံကိုကိုယ်စားပြုရန် adjactencess matrix ကို အသုံးပြု. နှစ်ရှုထောင်ခင်းကျင်းမှုတွင် vertices များအကြားအကွာအဝေးကိုသိမ်းဆည်းရန်ကျွန်ုပ်တို့သည်တစ် ဦး က matrix ကိုအသုံးပြုသည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
$ ဂိတ် = [ [0, 5, inf, 10], [inf, 0, 3, inf], [inf, inf, 0, 1], [inf, inf, inf, inf, 0] ];
အထက်ပါပုံတွင်ပုံသဏ္ဌာန်တွင် Vertices နှစ်ခုအကြားအစွန်းမရှိပါ။ ယခုကျွန်ုပ်တို့သည် floydwarshall function ကိုအတိုဆုံး path array ကိုတွက်ချက်ရန်ခေါ်ယူနိုင်သည်။
$ ရလဒ် = floydwarshall ($ ဂရပ်);
အထက်ပါကုဒ်ကို run ပါ။ အောက်ပါရလဒ်ကိုကျွန်ုပ်တို့ရရှိမည်ဖြစ်သည်။
0 5 8 9 inf 0 3 4 inf inf in inf 0 1 inf in inf in inf 0
အထက်ဖော်ပြပါရလဒ်များသည်ကိန်းဂဏန်းရှိ Vertices အားလုံးအကြားအတိုဆုံးလမ်းကြောင်းကိုပြသည်။ Inf ကိုဆိုလိုတာက Vertices နှစ်ခုအကြားလမ်းကြောင်းချိတ်ဆက်မှုမရှိပါ။
ဤဆောင်းပါးသည် PHP ကို အသုံးပြု. PHP ကို အသုံးပြု. Floyd-Warshall algorithm ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးသည်။ Dynamic Programming ၏စိတ်ကူးကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဇယားကွက် (n ^ 3) နှင့်အတူဂရပ်ရှိ vertices အားလုံးအကြားအတိုဆုံးလမ်းကြောင်းအရှည်ကိုရှာတွေ့နိုင်သည်။ Algorithm ဒီဇိုင်းနည်းစနစ်များကိုအသုံးပြုပြီးလက်တွေ့ပြ problems နာများကိုဖြေရှင်းရာတွင်ဤ algorithm ကိုလျင်မြန်စွာနှင့်ထိရောက်စွာအသုံးချနိုင်သည်။