0 / 0 / 1
Регистрация: 11.10.2014
Сообщений: 115
1

Поиск гамильтонова цикла в графе

18.05.2015, 17:36. Показов 1687. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу гамильтонова цикла в графе для PascalABC
Помогите пожалуйста

Добавлено через 1 час 45 минут
Есть программа для турбо паскль, как сделать для ABC?
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
uses SysUtils; 
const n=10; 
var v0:integer=2; 
 a:array[0..n-1, 0..n-1] of integer=( 
(0,0,0,0,0,1,0,0,0,0), 
(0,0,1,0,0,0,1,0,0,0), 
(0,1,0,1,0,0,0,1,0,0), 
(0,0,1,0,1,0,0,0,1,0), 
(1,0,0,1,0,0,0,0,0,1), 
(0,0,0,0,0,0,1,0,0,1), 
(0,0,0,1,0,0,0,1,0,0), 
(0,0,0,0,1,0,0,0,0,0), 
(0,0,0,0,0,0,0,0,0,1), 
(0,0,0,0,0,0,0,0,0,0)); 
c:array[0..n-1] of integer; 
path:array[0..n-1] of integer; 
 
procedure print_gamilton_c(); 
var p:integer; 
begin 
 for p:=0 to n-1 do write(inttostr(path[p])+' '); 
 writeLn(inttostr(path[0])); 
end; 
 
function gamilton(k:integer):integer; 
var v,gl:integer; 
begin 
 gl:=0; 
 v:=-1; 
 while ((v<n)>0) or (a[path[k-1],v]>0) then begin 
 if (k=n) and (v=v0) then gl:=1 
 else if (c[v]=-1) then 
 begin 
 c[v]:=k; 
 path[k]:=v; 
 gl:=gamilton(k+1); 
 if (gl=0) then c[v]:=-1; 
 end 
 else continue; 
 end; 
 end; 
 result:=gl; 
end; 
 
var j:integer; 
begin 
 writeln('Гамильтонов цикл: '); 
 for j:=0 to n-1 do c[j]:=-1; 
 path[0]:=v0; 
 c[v0]:=v0; 
 if (gamilton(1)>0) then print_gamilton_c 
 else writeln('цикл не найден - нет решений'); 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2015, 17:36
Ответы с готовыми решениями:

поиск паросочетания в графе
добрый вечер! вот это граф который имеет парные вершины. программа должна найти сколько здесь...

Поиск максимального потока в графе
Прошу напишите код программы для поиска максимального потока в графе на паскале

Поиск в графе в ширину заданном списками инциденций
Добрый день. Пытаюсь написать функцию поиска в ширину в графе, заданным списками инциденций....

Разработайте программу реализующую поиск в ширину в графе из заданной вершины
Лекции пропустил теперь незнаю как написать=( выручайте.. 1.Разработайте программу с очередью....

1
0 / 0 / 1
Регистрация: 11.10.2014
Сообщений: 115
19.05.2015, 01:56  [ТС] 2
Поиск гамильтонова цикла в графе.
Нашел на форуме текст программы, но она работает только на Pascal Turbo...
Кто-нибудь знает, как переделать ее на Pascal ABC? Очень нужна ваше помощь.
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
program Gamilton;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const n=10;
 
 
var
v0:integer=2;
 
a:array[0..n-1, 0..n-1] of integer=(
              (0,0,0,0,0,1,0,0,0,0),
              (0,0,1,0,0,0,1,0,0,0),
              (0,1,0,1,0,0,0,1,0,0),
              (0,0,1,0,1,0,0,0,1,0),
              (1,0,0,1,0,0,0,0,0,1),
              (0,0,0,0,0,0,1,0,0,1),
              (0,0,0,1,0,0,0,1,0,0),
              (0,0,0,0,1,0,0,0,0,0),
              (0,0,0,0,0,0,0,0,0,1),
              (0,0,0,0,0,0,0,0,0,0));
c:array[0..n-1] of integer;
path:array[0..n-1] of integer;
 
procedure print_gamilton_c();
var
 p:integer;
begin
  for p:=0 to n-1 do write(inttostr(path[p])+' ');
  writeLn(inttostr(path[0]));
end;
 
function gamilton(k:integer):integer;
 var
  v,gl:integer;
begin
  gl:=0;
  v:=-1;
  while ((v<n) and (gl=0)) do begin
  inc(v);
    if (a[v,path[k-1]]>0) or (a[path[k-1],v]>0) then begin
         if (k=n) and (v=v0) then gl:=1
           else if (c[v]=-1) then begin
               c[v]:=k;
               path[k]:=v;
               gl:=gamilton(k+1);
               if (gl=0) then c[v]:=-1;
               end else continue;
           end;
    end;
  result:=gl;
 
end;
 
var
 j:integer;
 
begin
writeln('Гамильтонов цикл:');
 for j:=0 to n-1 do c[j]:=-1;
 path[0]:=v0;
 c[v0]:=v0;
 if (gamilton(1)>0) then print_gamilton_c else writeln('цикл не найден - нет решений');
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2015, 01:56
Помогаю со студенческими работами здесь

Поиск гамильтонова цикла в графе
Написать программу поиска гамильтонова цикла в графе.

Поиск гамильтонова цикла в графе
ПОмогите плиииз!!! Написать программу поиска гамильтонова цикла в графе

Поиск гамильтонова цикла в ориентированном графе
Честно пытался искать по форуму и не только, но так толком ничего и не нашел :\ Необходимо узнать,...

Алгебраический алгоритм поиска гамильтонова цикла в графе.
ребята, может кто-нибудь помочь?очень надо сдаю курсовую работу по теме ПОИСК ГАМИЛЬТОНОВА ЦИКЛА В...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru