Skip to content

Commit 274ea3b

Browse files
author
Damian Rouson
committed
refac(topological_sort): rm unneeded variables
1 parent 0ac4083 commit 274ea3b

File tree

1 file changed

+16
-22
lines changed

1 file changed

+16
-22
lines changed

src/dag_s.f90

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,13 @@ pure module function topological_sort(dag) result(order)
3535

3636
block
3737
type(searched_and_ordered_t) searched_and_ordered
38-
integer, allocatable :: discovered(:)
3938
integer v
4039

41-
allocate(discovered(0))
4240
searched_and_ordered = searched_and_ordered_t(s = [integer::], o = [integer::])
4341

4442
do v = 1, size(dag%vertices)
45-
if (.not. any(v == searched_and_ordered%s)) then
43+
if (.not. any(v == searched_and_ordered%s)) &
4644
searched_and_ordered = depth_first_search(v, [integer::], searched_and_ordered%o)
47-
discovered = [discovered, searched_and_ordered%s]
48-
searched_and_ordered%s= discovered
49-
end if
5045
end do
5146
order = searched_and_ordered%o
5247
end block
@@ -60,22 +55,21 @@ pure recursive function depth_first_search(v, d, o) result(hybrid)
6055

6156
call assert(.not. any(v == d), "depth_first_search: cycle detected", intrinsic_array_t([v,d]))
6257

63-
block
64-
integer, allocatable :: dependencies(:)
65-
integer w
66-
67-
hybrid = searched_and_ordered_t(s = [integer::], o = o)
68-
dependencies = dag%depends_on(v)
69-
70-
do concurrent(w = 1:size(dependencies))
71-
associate(w_dependencies => dependencies(w))
72-
if (.not. any(w_dependencies == hybrid%s)) hybrid = depth_first_search(w_dependencies, [d, v], hybrid%o)
73-
end associate
74-
end do
75-
76-
if (.not. any(v == hybrid%o)) hybrid%o = [v, hybrid%o]
77-
hybrid = searched_and_ordered_t(s = [v, hybrid%s], o = hybrid%o)
78-
end block
58+
hybrid = searched_and_ordered_t(s = [integer::], o = o)
59+
60+
associate(dependencies => dag%depends_on(v))
61+
block
62+
integer w
63+
do concurrent(w = 1:size(dependencies))
64+
associate(w_dependencies => dependencies(w))
65+
if (.not. any(w_dependencies == hybrid%s)) hybrid = depth_first_search(w_dependencies, [d, v], hybrid%o)
66+
end associate
67+
end do
68+
end block
69+
end associate
70+
71+
if (.not. any(v == hybrid%o)) hybrid%o = [v, hybrid%o]
72+
hybrid = searched_and_ordered_t(s = [v, hybrid%s], o = hybrid%o)
7973

8074
end function
8175

0 commit comments

Comments
 (0)