Скачать презентацию ТЕМА ГАМИЛЬТОНОВЫ ЦИКЛЫ ГАМИЛЬТОНОВЫЙ ЦИКЛ ПУТЬ Скачать презентацию ТЕМА ГАМИЛЬТОНОВЫ ЦИКЛЫ ГАМИЛЬТОНОВЫЙ ЦИКЛ ПУТЬ

Презентация 41_ОАиП.ppt

  • Количество слайдов: 7

ТЕМА: ГАМИЛЬТОНОВЫ ЦИКЛЫ. ТЕМА: ГАМИЛЬТОНОВЫ ЦИКЛЫ.

ГАМИЛЬТОНОВЫЙ ЦИКЛ (ПУТЬ) – простой цикл (путь), содержащий все вершины графа. На рисунке слева ГАМИЛЬТОНОВЫЙ ЦИКЛ (ПУТЬ) – простой цикл (путь), содержащий все вершины графа. На рисунке слева гамильтоновый цикл последовательность 1 -2 -3 -5 -4 -1. На рисунке в центре нет гамильтоновых циклов, но есть гамильтоновы пути – 2 -1 -3 -5 -4. В правом графе нет ни гамильтоновых циклов, ни гамильтоновых путей

 Наиболее рациональный подход при решении такой задачи состоит в рассмотрении всевозможных простых путей, Наиболее рациональный подход при решении такой задачи состоит в рассмотрении всевозможных простых путей, начиная с произвольно выбранной стартовой вершины до тех пор, пока не будет обнаружен гамильтонов цикл или все возможные пути не будут исследованы. При этом осуществляется перебор перестановок, но только если они смежные.

ПРИМЕР: Program gamil; Uses Crt; Const N=6; Type Matrix. Of. Adjacencies=array[1. . N, 1. ПРИМЕР: Program gamil; Uses Crt; Const N=6; Type Matrix. Of. Adjacencies=array[1. . N, 1. . N] of integer; Type Ar. Bool=array[1. . N] of boolean; Type Matrix=array[1. . N] of integer; Var Por: Matrix; Is. Visited: Ar. Bool; Const mym: Matrix. Of. Adjacencies=( (0, 1, 0, 0), (1, 0, 1, 0), (0, 1, 0, 1), (0, 0, 1, 0) );

Procedure Work (k: integer); var v, j, i : integer; Begin {Work} v: =Por[k-1]; Procedure Work (k: integer); var v, j, i : integer; Begin {Work} v: =Por[k-1]; For j: =1 to N do If (mym[v, j]<>0) then If (k=N+1) and (j=1) then begin For i: =1 to N do Write(Por[i], ', '); Writeln; end else If Not Is. Visited[j] then begin Por[k]: =j; Is. Visited[j]: =true; Work(k+1); Is. Visited[j]: =false; end; End;

Procedure Gamilton; BEGIN {Gamilton} Por[1]: =1; Is. Visited[1]: =true; Work(2); END; begin clrscr; Writeln('Puti'); Procedure Gamilton; BEGIN {Gamilton} Por[1]: =1; Is. Visited[1]: =true; Work(2); END; begin clrscr; Writeln('Puti'); Gamilton; end.

ЗАДАНИЕ: Разработать программу поиска гамильтонова цикла в графе. ЗАДАНИЕ: Разработать программу поиска гамильтонова цикла в графе.