Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм Форда-Белмана (С++)

13K
02 октября 2006 года
Sabbath
14 / / 28.02.2006
Привет всем. Помогите по алгоритму написать программу, курсовая горит.

Рассмотрим орграф D = (V,X), где V={v1,…,vn}.

А л г о р и т м Форда – Беллмана

Данные: матрица весов С(D) орграфа D, начальная вершина s.
Результат: расстояния от вершины s до всех вершин орграфа D: D[v] = d(s,v), v  V.

1. Всем вершинам vV орграфа присвоим метку D[v] = csv. Вершине s присвоим метку D = 0.
2. Положим k=1.
3. Выберем произвольную вершину v V \ {s}.
4. Выберем произвольную вершину u V.
5. Положим D[v] = min (D[v], D + cuv).
6. Если вершина u пробежала еще не все множество вершин V, то выбрать среди оставшихся произвольную вершину и вернуться к шагу 5.
7. Если вершина v пробежала еще не все множество вершин V \ {s}, то выбрать среди оставшихся произвольную вершину и перейти к шагу 4.
8. Если k < n-2, то положить k=k+1 и вернуться к шагу 3, иначе ал-горитм заканчивает свою работу, полученные значения D[v] будут равны расстояниям d(s,v) в орграфе D.

Замечание. Дополнить описанный алгоритм шагами, позволяю-щими находить сам путь от вершины s до вершины v.
Отметим, что закончить вычисления можно, когда выполнение цикла по k не вызывает изменения ни одной из переменных D[v].
547
02 октября 2006 года
Hydra
488 / / 20.06.2006
Хммм.. А вчем проблема-то?
Алгоритм уже по шагам расписан - просто переводишь на нужный язык.

Для поиска самого пути:
1. Выбираем конечную вершину x[k] (k=0)
2. Пока x[k]!=s
4. Выбираем вершину xc смежную с x[k] для которой разница меток равна весу дуги (из матрицы C(D))
5. x[++k]=xc
6. к шагу 2

P.S. А разве алгоритм поиска пути во взвешаном графе не алгоритм Дейкстры?
13K
02 октября 2006 года
Sabbath
14 / / 28.02.2006
В том-то и дело, что не получается написать программу
13K
02 октября 2006 года
Sabbath
14 / / 28.02.2006
Люди,помогите пожалуйста!!!
3.0K
02 октября 2006 года
Мerlin
267 / / 25.07.2006
Если в инете чуть чуть поискать:
http://algolist.manual.ru/maths/graphs/shortpath/ford.php
http://www.staroceans.com/Bellman-Ford.htm прога на С++
http://graphtheory.narod.ru/fordbell.htm прога на pascal
http://it.kgsu.ru/C_DIN/din_0119.html прога на С++
13K
02 октября 2006 года
Sabbath
14 / / 28.02.2006
спасибо конечно, но это немного не то. что мне надо
547
03 октября 2006 года
Hydra
488 / / 20.06.2006
Гхм... Merlin дал ссылку на программную реализацию алгоритма, причем именно на C++. Чего еще-то надо?
13K
03 октября 2006 года
Sabbath
14 / / 28.02.2006
[QUOTE=Hydra]Гхм... Merlin дал ссылку на программную реализацию алгоритма, причем именно на C++. Чего еще-то надо?[/QUOTE]
Да, но мне бы хотелось, чтобы программа была полегче написана
13K
05 октября 2006 года
Sabbath
14 / / 28.02.2006
Короче, как я понял, мне никто помочь в проге не хочет...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог