• Algoritmning psevdokodi
  • Algoritmning dastur kodi
  • Algoritmlarni loyihalash fanidan mustaqil ishi




    Download 0,61 Mb.
    bet9/10
    Sana27.05.2024
    Hajmi0,61 Mb.
    #254553
    1   2   3   4   5   6   7   8   9   10
    Bog'liq
    algoritm.MI

    FORD – BELMANN ALGORITMI
    Berilgan tugundan (uni 0 deb bilgilaymiz) barcha boshqa tugunlarga bo’lgan qisqa masofalarni hisoblash uchun amalda qullaniladi. Algoritm samaradorligi amallar bajarilishi bo’yicha n*m tartibli hisoblanadi. Bu algoritmda ham qirralar o’girlik qiymatlari manfiy bo’lishi mumkin va halqa ko’rinishida berilmagan bo’lishi lozim
    Algoritm g’oyasi:
    d[0 .. n–1] masofalar massivi har i-chi qadamda javobini saqlash uchun ishlatiladi va har qadamda i-dan oshmagan qirallar soni ishtirokida masofa hisoblash uchun foydalaniladi. Agar j-tugunga yo’l mavjud bo’lmasa u holda d[j] = 2000000000 (yani cheksiz qiymatga teng deb hisoblanadi). Birinchi qadamda d masiiv cheksiz qiymatlar bilan to’ldirilib olinadi. Va har keyingi qadamda qirralar ko’rib chiqiladi va masofani yangilash uchun tekshiriladi. Agar qirradan ushbu tugunga marshruti mavjud bo’lsa u holda masofalar solishtiriladi. Yangi qiymat kichik bo’lsa u holda massiv yangilanadi. Shuni aytish ham lozim qisqa masofani aniqlashda halqa ishtirok etilmaydi.
    Algoritmning psevdokodi:
    g grafni o’qib olamiz
    e qirallar ro’yhatini shakllantiramiz
    // e[0 ... m - 1] – qirralar ro’yhati massivi, qaysida (first, second - tugunlar, value – qirra o’g’irligi)
    for i = 0 ... n - 1
    d[i] = 2000000000
    d[0] = 0 // 0 – tanlangan tugun
    for i = 1 ... n
    for j = 0 ... m - 1
    if d[e[j].second] > d[e[j].first] + e[j].value
    d[e[j].second] = d[e[j].first] + e[j].value
    if d[e[j].first] > d[e[j].second] + e[j].value
    d[e[j].first] = d[e[j].second] + e[j].value
    d massiv natijasini ekranga chiqarish
    Algoritmning dastur kodi:
    #include
    #include
    int main()
    {
    int n, a[101][101];
    ifstream ifs ("input.txt");
    ifs>> n;
    for(inti=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    ifs>> a[i][j];
    ifs.close();
    for(int k=1;k<=n;k++)
    for(inti=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
    ofstream ofs("output.txt");
    for(inti=1;i<=n;i++)
    {
    for(int j=1;j<=n;j++)
    ofs<< a[i][j]<<" ";
    ofs<<'\n';
    }
    ofs.close();
    return0;
    }

    Download 0,61 Mb.
    1   2   3   4   5   6   7   8   9   10




    Download 0,61 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Algoritmlarni loyihalash fanidan mustaqil ishi

    Download 0,61 Mb.