Content uploaded by Ramiro Germán Rodríguez Colmeiro
Author content
All content in this area was uploaded by Ramiro Germán Rodríguez Colmeiro on Apr 14, 2022
Content may be subject to copyright.
Analysis of Reflex Agents Success When
Navigating on Discrete Environments
Joaqu´
ın S. Toranzo Calder ´
on
IIF–SADAF–CONICET
GIAR–FRBA-UTN
Buenos Aires, Argentina
jtoranzocalderon@frba.utn.edu.ar
Ramiro G. Rodr´
ıguez Colmeiro
GIAR
UIDI–CONICET
Buenos Aires, Argentina
rrodriguezcolmeiro@frba.utn.edu.ar
Sergio Alberino
GIAR
Universidad Tecnol ´
ogica Nacional, FRBA
Buenos Aires, Argentina
salberino@frba.utn.edu.ar
Abstract—The success of a reflex agent facing the problem
of traveling in a rectangular discrete environment from one
place to another has an heterogeneous complexity. Their success
not only depends on the design of the agent but also in the
environment topology. Here this problem is explored for agents
designed using Finite State Machines (FSM) as models, having a
minimal set of perceptual inputs and a minimal set of available
actions. Their success is considered regarding the size and the
proportion of the environment diameter that corresponds to the
minimal path length between the start and the end cells. A large
pool of randomly generated environments was created to test
the FSMs success and also to analyze the topological features
of the environment. The FSMs designed to follow a wall on
their side resulted very successful, overwhelming the other FSMs
success rates. Moreover a linear relation between the environment
average diameter and the size was found and a non linear relation
between these and the success rate of the FSMs was also observed.
Keywords—digital simulation, finite state machine, discrete
environment topology
I. INTRODUCTION
When a simple robotic platform (such as those presented
in [1], [2] and [3]) is faced with the problem of going through
an environment (e.g. to reach a specific place), there are
many different strategies to apply. These strategies range from
simpler reflex agents [4, pp. 48-52] to planing agents [4,
pp. 234-479] or even large reinforcement learning models [5,
pp. 527-536]. Although higher order models often yield better
results, the reflex agents are the ones with fewer implemen-
tation constraints and therefore they are the ones selected for
simpler (i.e. with fewer computational or energy resources)
platforms. However there is not a clear boundary on which is
the maximum complexity that these reflex agents can handle
with a given success rate.
The reflex agents are a type of agent which selects actions
on the basis of the percept (the observable aspects of the
environment). The selection of these actions is usually rep-
resented by some conditional rules that constitute an abstract
strategy. An agent that relies just on the current percept is
called simple reflex agent, and one that takes into account the
percept history is called model-based reflex agent [4, pp. 48-
52]. The main difference is that a model-based agent has
some internal states that depends on the percept history, thus
representing some aspects of the environment, relevant for its
strategy. This makes it more complex than a simple reflex
agent, given that it needs to maintain this internal state. But
this can be achieved with a minimal cost in complexity and
result in a suitable agent.
The success of any agent is not only defined by its com-
plexity but also by the environment type [4, pp. 34-63].
There are many types of environments, though these can be
coarsely divided into discrete and continuous environments.
This distinction is essential since it restricts the kind of rules
that the agent should have. If time or space were continuous,
and the agent would select the action to turn to the left on
the basis of the percept and internal state, it would select this
action until the agent percept changes, especially if the turn
left action is also continuous. If time and space were discrete,
it would be enough to select, for instance, a turn to left 90º
action. Some control theory techniques can be implemented in
order to implement actions that could be considered spatially
and temporally discrete (v. [5], [6]).
Even though not every environment should be modeled as a
discrete environment, many traveling problems can be reduced
to a discrete representation [6, pp. 69-80]. From the discrete
environments, only two dimensional rectangular environments
will be analyzed here. These are structured as a grid with
square cells, all of the same size (and for the remainder of
the work, considered as a unit size). Many other structures are
possible for a two dimensional problem, but this is a common
structure that can be generalized. The cells will be considered
free or blocked, an agent can only move over free cells. The
cell where the agent starts its travel and the goal cell need to
be free but also connected by some path. The environments
topology should be such that an environment might have two
or more non-redundant paths between two cells; if this were
not the case, there are well-known strategies that will always
succeed and the problem would be trivial [7]. The extreme
case where a non-redundant path exists is the case where
there are some unconnected blocked cells, as in Fig. 1. The
outermost cells of the environment will always be blocked and
they conform the border of the environment. Any blocked cell
connected to the border will also be part of the border cells,
despite not being in the outermost region of the environment.
These cells will be called border cells. Finally, any cluster
of blocked cells that are not connected to the border will be
s
c1
c2
c3
e
Fig. 1. Discrete environment of size 6 with a start cell (s) and an end cell (e).
Black cells are blocked cells and white cells are free cells. It has a border and
a unique isle (of one cell size). The paths between c1and c2, and between
c3and eare non-redundant; the former is due to an isle, but the latter is not.
The red path between c2and c3is redundant, while the blue one is not.
called isle cells.
As stated before, this work addresses the success or failure
of some discrete model-based agents for solving the problem
of traveling from one place to another in a rectangular discrete
environment. In this work we consider only a minimal set
of perceptual inputs, such as sensors for checking if the
immediate cell in a certain direction is free or blocked. The
considered actions are also those from a reduced set and no
action should affect in any way the environment, such as
moving forward one cell, turning left 90º and turning right 90º.
Other actions can be formally accepted, like turning backwards
or even moving forward up to two cells; notice that the latter
can be defined in terms of the former (though it would require
some additional internal states for their composition).
In this work the model-based reflex agents are described in
the same way that a Finite State Machine (FSM) is defined,
i.e. defining an output function and a transition function [8,
c. 3]. The former selects the action to perform on the basis
of the current percept and the current internal state, and the
latter selects the corresponding internal state on the same
basis. The FSMs input alphabet will depend on the way the
sensors encode information. Every FSM considered in this
work has four sensors that could encode a free cell with ‘0’
and a blocked cell with a ‘1’, so they be arranged in this
way: ⟨frontal sensor,right sensor,back sensor,left sensor⟩.
Thus, if the path of the agent were free only on its back,
the input would be encoded as ⟨1101⟩and if it were free
in every direction, as ⟨0000⟩. Something similar occurs for
the output alphabet, that encodes the available actions. The
FSMs considered here encode the actions for moving one cell
forward, for turning left 90º, for turning right 90º and for doing
nothing as ↑,¡,and ×, respectively.
The following FSMs are proposed: First, two symmetrical
FSMs, FSM1 and FSM2. The FSM1 starts making moves that
put a blocked cell to its right, and then follows the “wall”,
which is formed by the cells that are connected to this initial
blocked cell (they could be the border or an isle), i.e. moves
forward if possible or makes a turn otherwise, and if it moves
forward and the path is free to the right, it turns right and then
moves forward. The other FSM is similar but follows the cells
on its left.
Their transition and output function are presented in Table I.
TABLE I
FSM1 AN D FSM2 TRANSITION AND OUT PU T FUNCTIONS
Input FSM1 state FSM2 state
SaSbScSaSbSc
⟨0000⟩↑Sa↑ScSb↑Sa↑Sc¡Sb↑
⟨0001⟩↑Sa¡ScSb↑Sb↑Sb↑Sa×
⟨0010⟩↑SaSa×Sb↑Sa¡Sa×Sb↑
⟨0011⟩↑SaSa×Sb↑Sb↑Sb↑Sa×
⟨0100⟩↑Sb↑Sb↑Sa×SaSc¡Sb↑
⟨0101⟩↑Sb↑Sb↑Sa×Sb↑Sb↑Sa×
⟨0110⟩↑Sb↑Sb↑Sa×Sa¡Sa×Sb↑
⟨0111⟩↑Sb↑Sb↑Sa×Sb↑Sb↑Sa×
⟨1000⟩↑Sa¡ScSa×SaSc¡Sa×
⟨1001⟩↑Sa¡ScSa×SaSbSa×
⟨1010⟩↑Sa¡Sa×Sa×SaSa×Sa×
⟨1011⟩↑SaSa×Sa×SaSbSa×
⟨1100⟩↑Sa¡Sb¡Sa×SaSc¡Sa×
⟨1101⟩↑SaSb¡Sa×Sa¡SbSa×
⟨1110⟩↑Sa¡Sb¡Sa×Sa¡Sa×Sa×
⟨1111⟩↑Sa×Sa×Sa×Sa×Sa×Sa×
FSM’s tables should be read as double entry tables, by taking
the FSM current state and the percept values (input). This leads
to a pair of values: the next FSM state and its corresponding
output. The FSM initial state are always the first state from
left to right. A graphical representation is given in this table,
so the input values can be omitted in the following tables.
In second place, other two symmetrical FSMs are proposed:
FSM3 and FSM4 (see Table II). Both move forward as long
as they can, but when this is impossible, they make a 90º turn
when corresponds (when both left and right directions where
possible, one FSM turns to the left, the other one turns to
the right). In the special case of getting to a dead end, i.e.
being blocked in every direction but on the back, the FSMs
change their internal state and make a turn of 180º (doing
two 90º turns). From there, they move forward again making
turns when corresponds, with one exception: if the front path
is free but one side path is also free, the FSMs turn to the side
direction and start over with their initial internal state.
The last FSM (FSM5) to be study has a more complex
behaviour. If there are two free paths, it will take one of them
until it reaches a dead end (where it will make a 180º turn) or
a cell with more free paths (besides the path that it is coming
from). When facing cells with more than one free paths, a
bifurcation, it will take advantage of its internal states for
avoiding taking the same path more than once. In the case that
two or more bifurcations are found consecutively, the internal
state will only consider the last one. Table III presents its
transition and output functions.
The FSMs will be evaluated according to their probability
of success in a given environment. It is clear that a FSM has
little information, and it is mainly local. This can cause a FSM
TABLE II
FSM3 AN D FSM4 TRANSITION AND OUTPUT FUNCTIONS
Input FSM3 state FSM4 state
SaSbSaSb
↑Sa↑Sa¡Sa↑Sa
↑Sa↑SaSa↑Sa
↑Sa↑Sa×Sa↑Sa×
↑Sa↑Sa×Sa↑Sa×
↑Sa↑Sa¡Sa↑Sa¡
↑Sa↑Sb↑Sa↑Sb↑
↑Sa↑Sa×Sa↑Sa×
↑Sa↑Sb↑Sa↑Sb↑
↑Sa¡Sa¡SaSa
↑SaSaSaSa
↑Sa¡Sa×SaSa×
↑SaSa×SaSa×
↑Sa¡Sa¡Sa¡Sa
↑Sb¡Sb¡Sb¡Sb
↑Sa¡Sb¡Sa¡Sb
↑Sa×Sa×Sa×Sa×
to fail reaching the goal for one reason or another. In the case
of FSM1 and FSM2, they would success only if the goal is
in the same main isle than them: these FSMs cannot escape
from isles and would never find a way to the goal (they will
repeat some sequence of movements over and over). One can
reason analogously about other FSMs, but their diversity and
TABLE III
FSM5 TRANSITION AND OUTPUT FUNCTIONS
Input FSM5 state
SaSbScSdSeSfSg
↑Sb↑Sb↑Sc×Sb↑Sb¡Sb↑Sg×
↑Sb↑Sb↑Sd↑Sb↑SfSb↑Sb↑
↑Sa↑Sb↑Sc×Sd↑Se×Sf↑Sg×
↑Sa↑Sb↑Sc×Sd↑Se↑Sf↑Sg↑
↑Sb↑Sb↑Sd↑Sb↑Sd¡Sb↑Sb↑
↑Sa↑Sb↑Sc×Sd↑Se↑Sf↑Sg↑
↑Sa↑Sb↑Sc×Sd↑Se↑Sf↑Sg↑
↑Sa↑Sb×Sc×Sd×Se↑Sf↑Sg↑
↑Sc¡Sc¡Sc×Sc¡ScSc¡Sc¡
↑SaSbSc×SdSeSfSg
↑Sa¡Sb×Sc×Sd×Se×Sf×Sg×
↑SaSb×Sc×Sd×Se×Sf×Sg×
↑Sa¡Sb¡Sc×Sd¡Se¡Sf¡Sg¡
↑Sa¡Sb¡Sc×Sd¡Se×Sf¡Sg×
↑Sa¡Sb×Sc×Sd×Se¡Sf¡Sg¡
↑Sa×Sb×Sc×Sd×Se×Sf×Sg×
complexity prevent a general analysis for them.
However, the size of the environment and the length of
the minimal path required to reach the goal seem relevant.
These factors favour the generation of certain structures that
determine the success of a given FSM. The environment size
is defined by the quantity of rows and columns. The minimal
path length is defined by the start and end cells, and an
environment is taken as a graph whose nodes are the cells,
this length is related to the diameter of the graph [7]. Hence,
the probability will be taken into account with respect to the
size of the environments, and the minimal proportion of the
average environment diameter (regarding its size) that could
need the FSM to reach the goal.
II. METHODOLOGY
The FSMs are tested over a collection of randomly gen-
erated environments. These environments vary their size and
their minimal path length between the start and the end cells.
Every environment has the same number of rows and columns,
which varies between 10 and 60 in steps of 10. The minimal
path length varies between the 10% and the 90% of the
average environment diameter, in steps of 10%. For each size
and minimal path length combination, 100 environments are
generated in order to test the FSMs success rate.
A. Random environment generation
The random generation is based on the John Stilley al-
gorithm Cellular Automaton, from his python API mazelib
[9]. This algorithm takes a grid of drows and columns and
generates a new grid with 2×d+1rows and columns. This
is due to adding rows and columns for the frontier (blocked
cells) but also for emulating “walls” between the original cells
and connecting or disconnecting them: two original cells are
connected if and only if the cell between them is free (the
original cells are always free).
At the beginning of the algorithm these new cells are free
(except for the frontier). After that, the algorithm follows two
stages. In the first stage, it selects some intermediate cells
next to the frontier cells and makes them blocked cells. In the
second stage, it proceeds similar to Conway’s Game of Life,
but selecting one cell for cycle of the game. It starts with a
random intermediate cell, and if it is free and has exactly three
blocked cell neighbours, the algorithm makes it a blocked cell,
but if the cell is blocked and has not one to three blocked
neighbours, the algorithm makes it a free cell. After doing so,
the algorithm selects one of the neighbour cells and repeats
the process.
This algorithm fulfills the desiderata for discrete environ-
ments. In particular, it generates environments that usually
have isles (they become more likely to be generated when the
environment size increases). But it modifies the initial size of
the environment, so it will be required to take into account
this in the diameter measures.
B. Determination of environment topological features
The diameter of the generated environments is obtained
experimentally. A set of 32 environments of size 10 to 60
in steps of 10 are generated. Each environment is analyzed in
order to obtain the minimal path length of every original cell of
the environment respect to every other cell, i.e. the eccentricity
of every cell. The maximal eccentricity of the environment
defines its diameter. This throws an experimental diameter for
each environment size. The experimental diameters are used
to approximate (with a linear approximation) a function that
relates average diameter of an environment with its size. This
measure needs to be divided by two in order to ignore the
intermediate generated cells.
In addition to the diameter, the eccentricity is also used
to register the average eccentricity of every original cell.
Given that the generation of symmetrical environments is very
rare, the 32 environments, for each size, are rotated (90º,
180º and 270º) for generating the corresponding symmetrical
environments, and they are also mirrored for getting all
possible symmetries. These transformations result in a sample
of 256 environments that are used for computing the average
eccentricity of each cell. These results are also divided by two
due to the intermediate cells. Using this information, a model
for knowing the likelihood that there is a cell at a certain
length path or less is obtained.
C. Fixed minimal length environment generation
After an environment of a given size is generated, a random
original cell is selected for being the start cell. However,
not every cell is suitable for being the start cell, since it
could be too “connected” to every other cell, i.e. the cell’s
eccentricity could be less than the requested distance. Instead
of simply choosing a cell and checking if there are cells at
the requested distance, the cell selection will depend on the
average eccentricity models obtained before. These are used to
know which cells are not likely to have cells at the requested
distance, and then to prevent their selection.
Following the start cell selection, the environment is anal-
ysed to identify which cells are at the requested distance. If
there is one or more, one of them is randomly selected as the
end cell; otherwise, the start cell is discarded and a new one
is selected.
D. Success rate determination
Once the set of environments is generated, a virtual simu-
lator selects an environment, then selects a FSM, instantiate
it and runs its output and transition functions. This simulator
terminates the simulation of a FSM whenever it reaches the
goal (a success) or repeats a combination of percept and
internal state (a failure). This is done for each defined FSM
and each environment in the set.
The success rate of each FSM is obtained as the sum of
successful simulations, and discriminated by the environment
size and the proportion of environment diameter used as a
minimal path length between the start and end cells.
III. RES ULT S
A. Determination of environment topological features
The average diameter related to the environments size is
shown in Fig. 2. The obtained approximation (1) is also
10 20 30 40 50 60
50
100
150
200
250
diameter
size
Fig. 2. Average diameter related to environment sizes. Each size average is
plotted as a dot, with the linear approximation as a line.
plotted for showing the tendency. The mean square error of
the approximation is 17.8 cells.
average diameter =6.9+3.8×size (1)
The average eccentricity at each cell for environments with
sizes from 10 to 60 in steps of 10 is shown in Figs. 3 to 8.
Some delimiters have been added to highlight the zones more
likely to have cells with a given path lengths. It can be seen
that path lengths corresponding to the highest proportions of
the average environment diameter are closer to the frontier.
B. Success rate determination
The chosen path length for each test point is shown in
Table IV as a function of the size and the proportion of
the diameter, and the corresponding table cells are gradually
coloured so the lowest value is white and the greatest value is
red. The success rate of each tested FSM is shown in Tables V
to IX. In the same way that before, table cells are gradually
coloured, so a full success rate is white and null success rate
is red.
IV. DISCUSSION
The analysis of the size as a function of the diameter
shows a linear behaviour. This is an interesting feature of
the environments since the diameter represents the greatest
minimal path length in cell units and the size is the number
of cells in one side of the environment, this means that the
number of cells in the environment grows exponentially while
the diameter grows linearly.
Concerning the mean eccentricity maps, those of higher
sizes (shown in Figs. 6 to 8) present similar behaviours, with
the lowest eccentricity in the center and expanding towards the
edges in a circular fashion. However, the lower sizes (shown
in Figs. 3 to 5) present more heterogeneous behaviours thus
demanding further research to explain their contours.
Regarding the analysis of the FSMs, several interesting
points arise. First, it can be noticed that FSM1 and FSM2
have a high success rate for environments of low size, but
when the size increases, the rate decreases. It can be also
seen that they have a high success rate when the diameter
proportion is very high or very low, but the lowest rate when
is around a proportion of 0.3. Further experiments must be
done to determine the behaviour of this minimum. Second, the
Fig. 3. Average eccentricity for size 10 (with a Gaussian filter applied).
Fig. 4. Average eccentricity for size 20 (with a Gaussian filter applied).
Fig. 5. Average eccentricity for size 30 (with a Gaussian filter applied).
FSM3 and FSM4 success rates are smaller, and they rapidly
decrease when the size of the diameter proportion increase.
Something similar happens to FSM5, but with a lower slope.
Finally, as expected, symmetric FSMs produce similar success
rates. This result enforces the assumption that our environment
generation technique is fairly sampled in terms of symmetry.
Fig. 6. Average eccentricity for size 40 (with a Gaussian filter applied).
Fig. 7. Average eccentricity for size 50 (with a Gaussian filter applied).
Fig. 8. Average eccentricity for size 60 (with a Gaussian filter applied).
V. CONCLUSION
In the light of the results, some FSMs seem to show higher
success rates overall the test points, as in the case of FSM1 and
FSM2, as opposed to FSM3, FSM4 and FSM5. This is so in
spite of minimal set of actions and perceptual inputs available
in these FSMs (a common limit in physical machines). The
TABLE IV
TES T PO IN T PATH LEN GT HS A S A FU NC TI ON O F TH E SI ZE A ND T HE
PRO PO RTI ON O F TH E DI AM ET ER
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 4913 18 22 27 31 36 40
20 8 17 25 33 41 50 58 66 75
30 12 24 36 48 60 73 85 97 109
40 16 32 48 64 79 95 111 127 143
50 20 39 59 79 98 118 138 158 177
60 23 47 70 94 117 141 164 188 211
TABLE V
FSM1 SU CC ES S RATE
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 98 96 96 98 98 100 98 100 100
20 86 84 83 87 87 86 92 97 99
30 65 72 81 68 79 77 86 91 96
40 59 52 57 53 70 68 72 84 87
50 63 52 41 47 57 64 73 81 87
60 52 41 29 33 51 59 69 79 88
TABLE VI
FSM2 SU CC ES S RATE
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 97 95 94 97 97 100 98 100 100
20 87 87 85 86 86 87 91 97 99
30 68 73 83 68 81 77 83 91 98
40 60 50 56 53 63 65 73 87 86
50 60 53 41 45 57 66 73 80 86
60 51 39 31 32 47 59 71 78 91
success of FSM1 and FSM2 seems to be high as long as the
minimal path length between the start and the end cells is
lower or higher than a proportion of 0.3 times the average
diameter of an environment of a certain size. This rate is
heavily related to the topological features of the environments,
and other topologies would result in different rates that must
be explored.
ACKNOWLEDGMENT
The authors thank Alejandro Gast´
on ´
Alvarez for his valu-
able comments and reviews.
REFERENCES
[1] A. G. ´
Alvarez, M. Marufo da Silva, F. Sampieri, D. Pirlo, G. G. J. Manuel,
P. Di Sabato, N. Marcovecchio, L. Cismondi, P. Folino, S. Alberino,
C. Verrastro, and J. C. G ´
omez, “Minipi: Plataforma inteligente de
tama˜
no reducido,” in Libro de Actas XV-RPIC (Reuni ´
on de Trabajo en
TABLE VII
FSM3 SU CC ES S RATE
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 60 45 21 12 7651 2
20 33 11 5300000
30 14 4 1 0 0 0 0 0 0
40 17 10000000
50 11 0 0 0 0 0 0 0 0
60 3 0 0 0 0 0 0 0 0
TABLE VIII
FSM4 SU CC ES S RATE
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 61 39 23 18 77313
20 34 10 5 400000
30 18 6 0 0 0 0 0 0 0
40 12 2 0000000
50 40 0 0 0 0 0 0 0
60 70 0 0 0 0 0 0 0
TABLE IX
FSM5 SU CC ES S RATE
Diameter proportion
Size
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
10 75 60 39 39 24 28 25 20 21
20 51 23 12 82220 3
30 23 13 3 3 0 10 0 0
40 33 3 20010 0 0
50 18 3 0 10010 0
60 6 2 1 000000
Procesamiento de la Informaci´
on y Control), San Carlos de Bariloche,
R´
ıo Negro, Argentina, Sep. 2013, pp. 519–524.
[2] S. Alberino, F. Sampieri, P. Folino, J. C. G ´
omez, and C. A. Verrastro,
“Programaci´
on de robots utilizando hoja de c´
alculo,” in Actas de las VIII
Jornadas Argentinas de Rob´
otica, Buenos Aires, Argentina, Nov. 2015.
[3] S. Alberino, J. S. Toranzo Calder´
on, J. C. G´
omez, and C. A. Verrastro,
“M´
etodo de programaci´
on para rob´
otica did´
actica,” in Actas de las X
Jornadas Argentinas de Rob´
otica, Neuqu´
en, Argentina, Nov. 2019.
[4] S. J. Russell and P. Norvig, Artificial Intelligence: a modern approach,
3rd ed. Prentice Hall, 2009.
[5] S. M. LaValle, Planning Algorithms. Cambridge, U.K.: Cambridge
University Press, 2006.
[6] N. Correll, Introduction to Autonomous Robots. CreateSpace Indepen-
dent Publishing Platform, 2014.
[7] G. Kilibarda, V. B. Kudryavtsev, and ˇ
S. Uˇ
s´
cumli´
c, “Independent systems
of automata in labyrinths,” Discrete Mathematics and Applications,
vol. 13, no. 3, pp. 221–255, 2003.
[8] P. Isasi, P. Mart´
ınez, and D. Borrajo, Lenguajes, gram´
aticas y autom´
atas.
Un enfoque pr´
actico. Addison-Wesley, 1997.
[9] J. Stilley, “mazelib,” Dec. 2021. [Online]. Available: github.com/
john-science/mazelib