Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitalicok
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 2
#1

Матрица Форда Беллмана и метод Дейкстра - C++

05.02.2014, 15:48. Просмотров 758. Ответов 2
Метки нет (Все метки)

Тут такая проблема , задали написать матрицу с помощью єтих методов/ вопрос : Как вставить сюда матрицу (тоесть с помощью методов Беллмана и Дейкстра нужно написать матрицу)
Вот они :

std::vector<int> FORD_BELLMAN(int n, std::vector<std::vector<int> > &A, int s)
{
std::vector<int> D(n+1);
for (int v=1; v<=n; ++v)
D[v] = A[s][v];
D[s]=0;
for (int k=1; k<=n-2; ++k)
for (int v=1; v<=n; ++v)
if (v!=s)
for (int u=1; u<=n; ++u)
D[v]=std::min(D[v], D[u] + A[u][v]);
return D;
}



std::vector<int> DIJKSTRA(int n, std::vector<std::vector<int> > &A, int s)
{
std::vector<int> D(n+1);
for (int v=1; v<=n; ++v)
D[v] = A[s][v];
D[s]=0;
std::list<int> T;
/* T = V/{s} */
for (int v=1; v<=n; ++v)
if (v!=s)
T.push_back(v);

while (!T.empty()){
/* u = dowolny wierzcholek r taki, ze D[r]=min{D[p]: p nalezy do T} */
/* it - iterator na u */
std::list<int>::iterator it = T.begin();
for(std::list<int>::iterator i = T.begin(); i!=T.end(); ++i)
/* UWAGA na blad w ksiazce -> if(*i < *it) it = i; */
if (D[*i] < D[*it]) it = i;
int u = *it;
T.erase(it); /* T=T/{u} */

for (std::list<int>::iterator i=T.begin(); i!=T.end(); ++i){
int v=*i;
D[v]=std::min(D[v], D[u] + A[u][v]);
}

}
return D;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 15:48     Матрица Форда Беллмана и метод Дейкстра
Посмотрите здесь:

Алгоритм Форда-Беллмана C++
Алгоритм Дейкстра C++
АЛГОРИТМ ДЕЙКСТРА C++
Алгоритм Форда - Беллмана C++
C++ Матрица, метод пузырька
Алгоритм Дейкстра C++
C++ Обратная матрица. Метод Гаусса—Жордана
Описать класс «матрица». Добавить метод, вычисляющий определитель матрицы C++
Входные данные. Метод Форда-Фалкерсона C++
C++ Алгоритм Форда-Беллмана
Алгоритм Дейкстра. Поиск кратчайшего пути с запоминанием маршрута C++
Восстановление пути из алгоритма Форда-Беллмана C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
05.02.2014, 16:40     Матрица Форда Беллмана и метод Дейкстра #2
Если реч об этом и вот этом, то Вам, скорее всего, нужно сначала откуда-то граф взять. Если нет, то уточните вопрос.



PS: хорошо бы для кода использовать теги [CODE] или [CPP], что бы было проще читать Ваши сообщения.
vitalicok
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 2
06.02.2014, 21:59  [ТС]     Матрица Форда Беллмана и метод Дейкстра #3
Возможно граф и есть , но сейчас у меня его , а без него можно как то?
Как я уже написал, нужно написать код матрицы на основе этог0 метода(какбы простая матрица но с элементами этого метода(матрица любая может быть , например 2х3)


вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::vector<int> FORD_BELLMAN(int n, std::vector<std::vector<int> > &A, int s)
{
std::vector<int> D(n+1);
for (int v=1; v<=n; ++v)
D[v] = A[s][v];
D[s]=0;
for (int k=1; k<=n-2; ++k)
for (int v=1; v<=n; ++v)
if (v!=s)
for (int u=1; u<=n; ++u)
D[v]=std::min(D[v], D[u] + A[u][v]);
return D;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
std::vector<int> DIJKSTRA(int n, std::vector<std::vector<int> > &A, int s)
{
std::vector<int> D(n+1);
for (int v=1; v<=n; ++v)
D[v] = A[s][v];
D[s]=0;
std::list<int> T;
for (int v=1; v<=n; ++v)
if (v!=s)
T.push_back(v);
 
while (!T.empty()){
std::list<int>::iterator it = T.begin();
for(std::list<int>::iterator i = T.begin(); i!=T.end(); ++i)
if (D[*i] < D[*it]) it = i;
int u = *it;
T.erase(it);
 
for (std::list<int>::iterator i=T.begin(); i!=T.end(); ++i){
int v=*i;
D[v]=std::min(D[v], D[u] + A[u][v]);
}
 
}
return D;
}
Yandex
Объявления
06.02.2014, 21:59     Матрица Форда Беллмана и метод Дейкстра
Ответ Создать тему
Опции темы

Текущее время: 04:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru