လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ကို ​​PHP နှင့်အတူ Floyd-Warshall algorithm ကို PHP နှင့်မည်သို့အကောင်အထည်ဖော်ရမည်နည်း

PHP ကို ​​PHP နှင့်အတူ Floyd-Warshall algorithm ကို PHP နှင့်မည်သို့အကောင်အထည်ဖော်ရမည်နည်း

M66 2025-06-21

PHP algorithm ဒီဇိုင်းဆိုင်ရာအကြံပြုချက်များ - Floyd-Warshall algorithm ကိုသုံးရန်ဂရပ်များ၏အတိုဆုံးလမ်းကြောင်းပြ problem နာကိုဖြေရှင်းရန်

Graph သီအိုရီတွင်အတိုဆုံးလမ်းကြောင်းပြ problem နာသည် dert ည့်သည်နှစ် ဦး အကြားအတိုချုပ်သို့မဟုတ် undirected ဂရပ်ဖစ်များအကြားအတိုဆုံးလမ်းကြောင်းကိုရှာဖွေခြင်းနှင့်ပတ်သက်သည့်ဂန္ထဝင် algorithmic ပြ problem နာဖြစ်သည်။ Floyd-Warshall algorithm သည်ဤပြ problem နာကိုဖြေရှင်းရန်အသုံးပြုသော Classic Dynamic programming algorithm ဖြစ်သည်။ PHP ကို ​​အသုံးပြု. Floyd-Warshall algorithm ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါမည်။

floyd-warshall algorithm မိတ်ဆက်

Floyd-warshall algorithm သည် algorithm တစ်ခုဖြစ်ပြီး algorithm သည် vertest လမ်းကြောင်းအကြားအရှည်များကိုဂရပ်ရှိအတိုဆုံးလမ်းကြောင်းအလျားများကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်အတိုဆုံးလမ်းကြောင်းပြ problem နာကိုဖြေရှင်းနိုင်သည်။ ဒေါင်လိုက်အကြားအတိုဆုံးလမ်းကြောင်းအရှည်ကိုသိုလှောင်ရန်နှစ်ရှုထောင်ခင်းကျင်းမှုကိုအသုံးပြုသည်။ နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်ဒေါင်လိုက်အားလုံးအကြားအတိုဆုံးလမ်းကြောင်းကိုရနိုင်သည်။

PHP Code အကောင်အထည်ဖော်မှု

ပထမ ဦး စွာကျွန်ုပ်တို့သည် 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 ခေါ်ဆိုမှုများ

ထို့နောက်ကျွန်ုပ်တို့သည်ဥပမာဂရပ်တစ်ခုကိုသတ်မှတ်ပြီးကျွန်ုပ်တို့၏ 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 ကိုလျင်မြန်စွာနှင့်ထိရောက်စွာအသုံးချနိုင်သည်။