16 / 4 / 0
Регистрация: 21.12.2010
Сообщений: 29
1

алгоритм форда-беллмана в pascal

03.02.2011, 23:52. Показов 2405. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Имеется у меня такой вопрос.
Вот есть алгоритм форда-беллмана
Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
{Bellman-Ford algorithm}
var a : array [1..20,1..20] of word;{matrica cmegnosti}
c, pred, fl, d : array [1..20] of word;{
c - massiv kratchayshih rastoyaniy
pred - massiv predidushih vershin
fl - massiv flagov
d - massiv dlya zapisi puti
}
 
i, j, k, n, first, last : byte;
f : text;{peremennaya dlya otkritiya file in.txt}
{procedura obhoda grafa vglub - dlya poiska vseh putey}
Procedure Dfs(x : word);
var i : byte;{lokalnay peremennaya}
begin
if x=last then {esli konechnaya vershina to vivodim put}
begin
write(first,' ');
for i:=1 to j do {vivodim put}
write(d[i],' ');
writeln;
exit;{vyhodim iz proceduri}
end;
fl[x]:=1;{pomechaem chto bili v vershine}
for i:=1 to n do
if (fl[i]=0)and(a[x,i]<>32767) then
begin
inc(j);
d[j]:=i;{zapisivaem v put vershiny}
dfs(i);{vizivaemsya ot i-oy vershini}
dec(j);
end;
fl[x]:=0;{pomechaem chto vershina svobodna}
end;
{Osnovnaya programma}
begin
assign(f,'in.txt');{otkrivaem file dlya chteniya}
reset(f);
readln(f, n);{shitivaem kol-vo vershin}
for i := 1 to n do
for j := 1 to n do
read(f, a[i,j]);{shitivaem matricy smegnosti}
writeln('Matrix:');
for i:=1 to n do  {vyvodim matricy na ekran}
for j:=1 to n do
if j=n then writeln(a[i,j]) else write(a[i,j],' ');
for i:=1 to n do {zamenyaem nuli - beskonechnostuy}
for j:=1 to n do
if a[i,j]=0 then a[i,j]:=32767;
writeln('Vvedite 1 vershiny');
readln(first);
writeln('Vvedite 2 vershiny');
readln(last);
close(f);{zakrivaem file in.txt}
for j := 1 to n do
begin
c[j] := a[first,j];{zapisivaem nachalnie znacheniya}
if a[first,j] < 32767 then
pred[j] := first;
end;
for i := 3 to n do
for j := 1 to n do
if j <> first then
for k := 1 to n do  {esli ne beskonechnost i put bolee vygodniy}
if (c[k] < 32767) and (c[k] + a[k,j] < c[j]) then
begin
c[j] := c[k] + a[k,j];{zapisivaem novoe znachenie}
pred[j] := k;{zapisivaem pred vershiny}
end;
if c[last] = 32767 then writeln('Net putey') else
begin
writeln;
writeln('Kratchaishiy put:');
write(first,' ');
i := last;
k := 1;
while i <> first do {v obratnom poryadke obhodim put}
begin
d[k] := i;{zapisivaem put v massiv}
k := k + 1;
i := pred[i];
end;
for i := k - 1 downto 1 do {vyvodim kratchayishiy put}
write(d[i],' ');
writeln;
writeln('Vse puti:');
j:=0;
Dfs(first);{vizivaem procedury poiska vseh putey}
end;
readln;readln;{gdem nagatiya klavishi}
end.
Вообщем он работает, но у меня взвешанный граф и как я понял этот алгоритм работает с не взвешанными графами.Как его переделать под взвешанный или может что то другое посоветуете???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2011, 23:52
Ответы с готовыми решениями:

ЗАдача форда-беллмана
Нужна помощь в решении трансортной задачи методом беллмана форда где нужно найти кратчайший путь на...

Алгоритм Форда-Беллмана.
Поиск кратчайшего пути, а также обход в глубь для поиска всех путей.

Массивы, цикл, ветвление, лин.алгоритм Pascal
Привет всем! Помогите, ПОЖАЛУЙСТА, решить следующие задачи: 48. Задача на линейный алгоритм. 7....

Составить алгоритм для квадратной матрицы.Pascal (Паскаль)
Помогите пожалуйста решить, очень надо!!! В заданной квадратной матрице размером 10 x 10...

2
134 / 47 / 11
Регистрация: 27.05.2008
Сообщений: 246
04.02.2011, 16:13 2
этот алгоритм как раз со взвешенными работает.
0
2 / 2 / 2
Регистрация: 03.03.2010
Сообщений: 139
30.10.2011, 13:25 3
а как данные в файле располагаются ну я имею ввиду колличество вершин и таблица смежности?
0
30.10.2011, 13:25
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2011, 13:25
Помогаю со студенческими работами здесь

Разработать алгоритм и составить программу на языке программирования Pascal
Завтра экзамен, перерыл весь интернет. Помогите, пожалуйста. Хоть одну задачу решить. Заранее...

Алгоритм Беллмана-Форда
Здравствуйте. Может ли быть на входе доя алгоритма Беллмана-Форда граф, состоящий из ДВУХ вершин?...

Алгоритм Беллмана-Форда
В википедии описан такой алгоритм...

Алгоритм Форда-Беллмана
Доброго времени суток. Есть кривой код: #include &lt;iostream&gt; #include &lt;vector&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru