Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки
Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Математика » Пошук оптимального шляху в ненавантаженому орграфе

Реферат Пошук оптимального шляху в ненавантаженому орграфе

Категория: Математика
о j-тий терміну (рядок варто вводити в розгляд, якщо вона містить хоча б одну одиницю). Нехай елемент. Тоді з вершини у вершину можна потрапити за два кроки. Таким чином, можна записати. Слід зауважити, що якщо в розглянутих рядках дві або більше одиниць, то слід опрацьовувати всі можливі варіанти попадання з однієї вершини в іншу, записуючи в матрицю довжину найліпшого з них.


Лістинг програми:

# include

# include

using namespace std;

int main ()

{

int N = 0, n = 0, c = 0, i = 0, k = 0;

cout <<"----------------------------------------- ----- "<

cout <<"| Poisk optimalnogo puti v nenagrujennom orgrafe | "<

cout <<"----------------------------------------- ----- "<

case1:

cout <<"Vvedite chislo vershin v orgrafe: ";

cin>> N;

if (N <= 1)

{

cout <<"Kolichestvo vershin doljno bit '> 1! "<

goto case1;

}

///МАТРИЦЯ суміжності ::

cout <<"Zapolnite matricu smejnosti (esli puti net, vvedite 0; esli put 'est', vvedite 1): ";

float ** A = new float * [N];

for (i; i

A [i] = new float [N];

for (i = 0; i

for (int k = 0; k

{

cout <<"V";

printf ("% d", i +1);

cout <<"-> V";

printf ("% d", k +1);

cout <<'=';

scanf ("% f", & A [i] [k]);

if ((A [i] [k]! = 0) && (A [i] [k]! = 1))

{

cout <<"Vvodite tol'ko 0 ili 1! "<

return 0;

}

if ((i == k) & (A [i] [k] == 1))

{

cout <<"Na glavnoi diagonali doljni bit 'nuli! "<

return 0;

}

}

//// Звідки і куди? (Початкова і кінцева вершина в графі!!)

case2:

cout <<"Vvedite nachalnuiu vershinu: ";

cin>> n;

if (n> N)

{

cout <<"Net takoi vershini! "<

goto case2;

}

if (n == 0)

{

cout <<"Net takoi vershini! "<

goto case2;

}

case3:

cout <<"Vvedite konechnuyu vershinu: ";

cin>> c;

if (c> N)

{

cout <<"Net takoi vershini! "<

goto case3;

}

if (c == 0)

{

cout <<"Net takoi vershini! "<

goto case3;

}

///Масив, де записується число кроків

int h = 1;

float * B = new float [N];

for (i = 0; i

{

B [i] = 0;

}

// В масиві B [N-1] шукаємо вершини, які достжіми з початку шляху

// т.е за один крок

for (k = 0; k

{

if (A [n-1] [k] == 1)

B [k] = 1;

}

// Елементи фронту хвилі

while (h <50)

{

for (i = 0; i

{

for (k = 0; k

{

if ((B [i] == h) && (A [i] [k] == 1) && (B [k] == 0))

B [k] = h +1;

}

}

h + +;

}

B [n-1] = 0;

if (B [c-1]! = 0)

{

///Вивід на екран таблицю

cout <<" nTablica stoimosti minimalnogo puti: "<

for (i = 0; i

{

printf ("% f", B [i]);

}

// Пошук зворотного шляхи

cout <<" n nOptimal'nii put '(v obratnom poryadke): n "<<" V ";

printf ("% d", c);

h = c-1;

int b = B [c-1];

while (b> 0)

{

for (i = 0; i

if ((A [i] [h] == 1) && (B [i] == B [h] -1))

{

cout <<"V";

printf ("% d", i +1);

h = i;

b -;

}

}

cout <<" n";

}

else

{

cout <<" nPuti net! n";

}

delete A, B; return 0;

}


Приклади виконання програми:

1.

2.


3.


Використана література:

1. В«Теорія графівВ». Методичні вказівки по підготовці до контрольних робіт з дисципліни В«Дискретна математикаВ». Сост.: Н.І. Житнікова, Г.І. Федорова, А.К. Галімов. - Уфа, 2005 -37 с.

2. Курс лекцій з дискретній математиці Житникова В.П.

3. В«Самовчитель С + +В», Переклад з англ. -3 Изд .. - СПб.: БХВ-Петербург, 2005 - 688 с.

4. В«Дискретна математика для програмістів В», Ф.А.Новіков.

5. В«Введення в дискретну математику В», Яблонський.

6. В«Курс дискретної математики В», Нефер, Осипова.

7. В«ІнформатикаВ» Л.З.Шауцукова.



Предыдущая страницаСтраница 2 из 2

Друкувати реферат
Замовити реферат
Товары
загрузка...
Наверх Зворотнiй зв'язок