Бағдарламалу технологиясы



жүктеу 1,63 Mb.
бет65/73
Дата03.02.2022
өлшемі1,63 Mb.
#35497
түріОқулық
1   ...   61   62   63   64   65   66   67   68   ...   73
Ба?дарламалу технологиясы

12.3 Флойд алгоритмі

Көлік туралы есептердің көптеген түрлері бар, есепте графтың әр түрлі төбелерінің арасындағы арақашықтықты анықтау немесе оны қолдану керек және осы арақашықтық ең қысқа арақашықтық болуы керек.

Графтар теориясында граф төбелерінің арасындағы ең қысқа арақашықтықты анықтайтын көптеген алгоритмдер белгілі, бірақ оның барлығы Флойд ұсынған алгоритмді негізге алады. Осы алгоритмнің кең қолданылуы төбелер арасындағы ең қысқа арақашықтықты табу идеясында, бірақ есептеу бойынша Флойд алгоритмінің тиімділігі өте төмен. Флойд алгоритмін қарастырайық. 6 төбесі бар бағытталған граф бар болсын, 12.4-суретте көрсетілген.

12.4-сурет – Бағытталған граф
Осы графтың сыбайлас матрицасы 12.5-кестесінде көрсетілген:
12.5-кесте –12.4-суреттегі графтың сыбайлас матрицасы

Флойд алгоритмінің идеясы бойынша әрбір a[i,j] – төбелер жұбына k (0 – 5) төбелерінің барлық мүмкін нұсқалары мына түрде тексеріледі: a[i,j]>a[i,k]+a[k,j].

Егер a[i,j] жолы үлкен болса, онда сыбайлас матрицада i және j төбелерінің арасындағы жолдың мәні a[i,k]+a[k,j] жолына тең жаңа мәнмен ауыстырылады. Сонымен, ең қысқа қашықтықты анықтайтын матрица дайын болды.

Мысалы, сыбайлас матрицада 2-шіден 1-г дейін жол 8-ге тең. Бірақ, егер біз бірінші 0-ге, ал содан кейін 1-ге орын ауыстыратын болсақ, онда жол 6-ға тең болады: a[2,0]+a[0,1]= 3+3=6. Барлық нұсқаларды тексере отырып, біз мынаны байқадық: 2-5-1 жолы қысқарық, a[2,5]+a[5,1]=2+2=4.

Сонымен, 2-ші мен 1-ші төбелердің арасындағы ең қысқа жол табылды.

Бағдарлама коды:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Program



{

static void Main()

{

int[,] a = new int[6, 6]



{{0,3,1000,3,6,1000},

{1000,0,4,7,1000,4},

{3,8,0,5,1000,2},

{1000,6,1000,0,3,1000},

{7,1000,1,4,0,4},

{5,2,1000,1000,2,0}};

int i, j, w, n, k;

Console.WriteLine("Matrizani shigary: ");

for (i = 0; i < 6; i++)

{

for (j = 0; j < 6; j++)



Console.Write("\t" + a[i, j]);

Console.WriteLine();

}

Console.WriteLine();



for (k = 0; k < 6; k++)

for (i = 0; i < 6; i++)

for (j = 0; j < 6; j++)

if (a[i, j] > a[i, k] + a[k, j])

a[i, j] = a[i, k] + a[k, j];

Console.WriteLine("Zhana matrizani shigary: ");

for (i = 0; i < 6; i++)

{

for (j = 0; j < 6; j++)



Console.Write("\t" + a[i, j]);

Console.WriteLine();

}

Console.ReadLine();



}

}

}



Бағдарлама жұмысының нәтижесі:

Matrizani shigary:

0 3 1000 3 6 1000

1000 0 4 7 1000 4

3 8 0 5 1000 2

1000 6 1000 0 3 1000

7 1000 1 4 0 4

5 2 1000 1000 2 0


Zhana matrizani shigary:

0 3 7 3 6 7

7 0 4 7 6 4

3 4 0 5 4 2

7 6 4 0 3 6

4 5 1 4 0 3

5 2 3 6 2 0
Бағдарламаның (алгоритмнің) кемшіліктері:

– ең қысқы арақышықтықтың маршруты анықталмайды;

– алгоритмнің есептеу тиімділігі n-нің 3-ші дәрежесіне пропорционал (мұнда n – граф төбелерінің саны), ол n-нің үлкен мәндерінде тиімсіз болып келеді.


жүктеу 1,63 Mb.

Достарыңызбен бөлісу:
1   ...   61   62   63   64   65   66   67   68   ...   73




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау