Поправил скрипт, поправил неточности в библиотеке
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Иное
|
||||
Name : DFS
|
||||
Type : PROGRAM
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
PROGRAM DFS
|
||||
(* Алгоритм поиска в глубину *)
|
||||
(* Копировать в свою программу *)
|
||||
VAR_INPUT
|
||||
graph: POINTER TO ARRAY[1..n, 1..n] OF BOOL; // Граф связности (редактируется извне программы через DFS.graph[i,j])
|
||||
connected: POINTER TO ARRAY[1..n] OF INT; //подключенные вершины
|
||||
Start: INT := 1; // Вершина из которой начинается поиск
|
||||
END_VAR
|
||||
VAR
|
||||
STACK: STACK_I16;
|
||||
v: INT;
|
||||
i: INT;
|
||||
visited: ARRAY[1..n] OF BOOL; // посещенные вершины
|
||||
k: INT := 1; // номер посещенной вершины
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
n : INT := 12; // Количество вершин графа
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
FOR i:=1 TO n DO
|
||||
visited[i]:=0;
|
||||
connected^[i]:=0;
|
||||
END_FOR
|
||||
k:=1;
|
||||
|
||||
STACK(Din:= Start, PUSH:= 1);
|
||||
visited[Start]:= 1;
|
||||
WHILE NOT STACK.EMPTY DO
|
||||
STACK(pop:= 1, Dout=>v);
|
||||
FOR i:=1 TO n DO
|
||||
IF (graph^[v,i] AND NOT(visited[i])) THEN
|
||||
visited[i]:= 1;
|
||||
STACK(Din:= i, PUSH:= 1);
|
||||
connected^[k]:=i;k:=k+1;
|
||||
END_IF
|
||||
END_FOR
|
||||
END_WHILE
|
||||
END_PROGRAM
|
||||
Reference in New Issue
Block a user