<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1076897</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2022.1076897</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Fast and optimal branch-and-bound planner for the grid-based coverage path planning problem based on an admissible heuristic function</article-title>
<alt-title alt-title-type="left-running-head">Gareau et&#xa0;al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2022.1076897">10.3389/frobt.2022.1076897</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Champagne Gareau</surname>
<given-names>Ja&#xeb;l</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2059302/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Beaudry</surname>
<given-names>&#xc9;ric</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/2170027/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Makarenkov</surname>
<given-names>Vladimir</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1653423/overview"/>
</contrib>
</contrib-group>
<aff>
<institution>GDAC-LIA</institution>, <institution>Computer Science Department</institution>, <institution>Universit&#xe9; du Qu&#xe9;bec &#xe0; Montr&#xe9;al</institution>, <addr-line>Montr&#xe9;al</addr-line>, <addr-line>QC</addr-line>, <country>Canada</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1969801/overview">Liang Li</ext-link>, Tsinghua University, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2088318/overview">Yuhang Zhang</ext-link>, Beijing Institute of Technology, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1715004/overview">Shuo Cheng</ext-link>, The University of Tokyo, Japan</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Ja&#xeb;l Champagne Gareau, <email>champagne_gareau.jael@uqam.ca</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Robotic Control Systems, a section of the journal Frontiers in Robotics and AI</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>27</day>
<month>01</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>9</volume>
<elocation-id>1076897</elocation-id>
<history>
<date date-type="received">
<day>22</day>
<month>10</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>28</day>
<month>12</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Champagne Gareau, Beaudry and Makarenkov.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Champagne Gareau, Beaudry and Makarenkov</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>This paper introduces an optimal algorithm for solving the discrete grid-based coverage path planning (CPP) problem. This problem consists in finding a path that covers a given region completely. First, we propose a CPP-solving baseline algorithm based on the iterative deepening depth-first search (ID-DFS) approach. Then, we introduce two branch-and-bound strategies (Loop detection and an Admissible heuristic function) to improve the results of our baseline algorithm. We evaluate the performance of our planner using six types of benchmark grids considered in this study: Coast-like, Random links, Random walk, Simple-shapes, Labyrinth and Wide-Labyrinth grids. We are first to consider these types of grids in the context of CPP. All of them find their practical applications in real-world CPP problems from a variety of fields. The obtained results suggest that the proposed branch-and-bound algorithm solves the problem optimally (i.e., the exact solution is found in each case) orders of magnitude faster than an exhaustive search CPP planner. To the best of our knowledge, no general CPP-solving exact algorithms, apart from an exhaustive search planner, have been proposed in the literature.</p>
</abstract>
<kwd-group>
<kwd>coverage path planning (CPP)</kwd>
<kwd>robotics</kwd>
<kwd>iterative deepening depth-first search</kwd>
<kwd>branch-and-bound</kwd>
<kwd>heuristic search</kwd>
<kwd>optimal solution</kwd>
<kwd>pruning</kwd>
<kwd>intelligent decision making</kwd>
</kwd-group>
<contract-sponsor id="cn001">Natural Sciences and Engineering Research Council of Canada<named-content content-type="fundref-id">10.13039/501100000038</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>The field of automated planning (sometimes called <italic>AI planning</italic>) focuses on finding a sequence of actions that allows an intelligent agent (for example, a robot) to reach a goal state (for example, a specific position in the environment) from a given initial state (<xref ref-type="bibr" rid="B20">Ghallab&#xa0;et&#xa0;al., 2016</xref>). An example of a real-world application of automated planning is the problem of finding an optimal path for an electric vehicle (<xref ref-type="bibr" rid="B7">Champagne&#xa0;Gareau&#xa0;et&#xa0;al., 2021a</xref>). Another problem studied in automated planning is the complete Coverage Path-Planning (CPP) problem, where the objective is to find an optimal or quasi-optimal path that covers every area in the region (we call such a path a <italic>complete coverage path</italic> of the region). This problem has many practical applications, such as:<list list-type="simple">
<list-item>
<p>a) robotic vacuum-cleaning (<xref ref-type="bibr" rid="B43">Viet&#xa0;et&#xa0;al., 2013</xref>; <xref ref-type="bibr" rid="B46">Yakoubi and Laskri, 2016</xref>; <xref ref-type="bibr" rid="B15">Edwards and S&#xf6;rme, 2018</xref>; <xref ref-type="bibr" rid="B29">Liu&#xa0;et&#xa0;al., 2018</xref>);</p>
</list-item>
<list-item>
<p>b) underwater autonomous vehicles (AUVs) (<xref ref-type="bibr" rid="B50">Zhu&#xa0;et&#xa0;al., 2019</xref>; <xref ref-type="bibr" rid="B22">Han&#xa0;et&#xa0;al., 2020</xref>; <xref ref-type="bibr" rid="B48">Yordanova and Gips, 2020</xref>);</p>
</list-item>
<list-item>
<p>c) 3d printing using fused deposition modeling (<xref ref-type="bibr" rid="B28">Lechowicz&#xa0;et&#xa0;al., 2016</xref>; <xref ref-type="bibr" rid="B2">Afzal&#xa0;et&#xa0;al., 2019</xref>; <xref ref-type="bibr" rid="B21">Gupta, 2021</xref>);</p>
</list-item>
<list-item>
<p>d) window washer robots (<xref ref-type="bibr" rid="B16">Farsi&#xa0;et&#xa0;al., 1994</xref>; Dr.; <xref ref-type="bibr" rid="B26">John&#xa0;Dhanaseely and Srinivasan, 2021</xref>);</p>
</list-item>
<list-item>
<p>e) disinfection of regions (<xref ref-type="bibr" rid="B12">Conroy&#xa0;et&#xa0;al., 2021</xref>; <xref ref-type="bibr" rid="B34">Nasirian&#xa0;et&#xa0;al., 2021</xref>; <xref ref-type="bibr" rid="B42">Vazquez-Carmona&#xa0;et&#xa0;al., 2022</xref>);</p>
</list-item>
<list-item>
<p>f) minesweeping (<xref ref-type="bibr" rid="B24">Healey, 2001</xref>; <xref ref-type="bibr" rid="B44">Williams, 2010</xref>; <xref ref-type="bibr" rid="B13">&#xd0;akulovic and Petrovic, 2012</xref>);</p>
</list-item>
<list-item>
<p>g) agriculture and farming (<xref ref-type="bibr" rid="B36">Oksanen and Visala, 2009</xref>; <xref ref-type="bibr" rid="B25">Jin, 2010</xref>; <xref ref-type="bibr" rid="B38">Santos&#xa0;et&#xa0;al., 2020</xref>);</p>
</list-item>
<list-item>
<p>h) surveillance drones (<xref ref-type="bibr" rid="B3">Ahmadzadeh&#xa0;et&#xa0;al., 2008</xref>; <xref ref-type="bibr" rid="B32">Modares&#xa0;et&#xa0;al., 2017</xref>; <xref ref-type="bibr" rid="B41">Vasquez-Gomez&#xa0;et&#xa0;al., 2018</xref>);</p>
</list-item>
<list-item>
<p>i) search and rescue aerial drones (<xref ref-type="bibr" rid="B23">Hayat&#xa0;et&#xa0;al., 2020</xref>; <xref ref-type="bibr" rid="B4">Ai&#xa0;et&#xa0;al., 2021</xref>; <xref ref-type="bibr" rid="B9">Cho&#xa0;et&#xa0;al., 2021</xref>).</p>
</list-item>
</list>
</p>
<p>
<xref ref-type="fig" rid="F1">Figure&#xa0;1</xref> gives a visual representation of these applications. All of them rely on efficient CPP algorithms to accomplish their task (<xref ref-type="bibr" rid="B10">Choset, 2001</xref>; <xref ref-type="bibr" rid="B19">Galceran and Carreras, 2013</xref>; <xref ref-type="bibr" rid="B27">Khan&#xa0;et&#xa0;al., 2017</xref>).</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Visual representation of CPP practical applications (all photos were taken from the public domain).</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g001.tif"/>
</fig>
<p>Many variants of the CPP problem exist. The algorithm to be used depends a lot on the variant under study. The working environment can be either discrete (e.g., grid-based, graph-based, etc.) or continuous, 2D or 3D, known <italic>a priori</italic> (i.e., off-line algorithms), or discovered while doing the coverage (i.e., on-line algorithms). Moreover, the coverage can be done by a single agent, or by the cooperation of multiple agents. Some variants also restrict the type of allowed movements or add different kinds of sensors to the agent (e.g., proximity sensor, GPS, gyroscopic sensor, etc.). Some variants even consider positional uncertainties and energetic constraints of the agent. In this paper, we focus on the classical variant consisting of a single agent in a 2D discrete grid-based environment with no specific constraints or uncertainties.</p>
<p>The objective of our study is to present an optimal CPP planner that runs orders of magnitude faster than a naive search algorithm through the state-space. Our main research contributions are as follows. We propose:<list list-type="simple">
<list-item>
<p>1) A novel branch-and-bound optimal planner to the grid CPP problem;</p>
</list-item>
<list-item>
<p>2) An informative, admissible, efficient heuristic to the grid CPP problem;</p>
</list-item>
<list-item>
<p>3) Realistic environments for discrete grid-based CPP benchmarking.</p>
</list-item>
</list>
</p>
<p>This article is an extended version of our conference paper presented at the IDEAL2021 meeting (<xref ref-type="bibr" rid="B8">Champagne&#xa0;Gareau&#xa0;et&#xa0;al., 2021b</xref>). We extend our previous work by:<list list-type="simple">
<list-item>
<p>&#x2022; greatly expanding the Introduction and Related Work sections to present various applications of CPP and to better show how our algorithm (including the two proposed improvements) compares to the existing approaches;</p>
</list-item>
<list-item>
<p>&#x2022; improving the proposed heuristic function;</p>
</list-item>
<list-item>
<p>&#x2022; improving the empirical evaluation, including additionnal experiments, new plots and two new type of benchmark grids;</p>
</list-item>
<list-item>
<p>&#x2022; expanding the analysis of our results, by explaining more deeply the causes of the observed improvements and what these results mean in practice.</p>
</list-item>
</list>
</p>
<p>Below, we present an overview of existing CPP solving approaches and their practical applications in the field of robotics.</p>
<p>Grid-based methods decompose the environment that we want to explore into a collection of uniform grid cells. A grid-based representation was first proposed by <xref ref-type="bibr" rid="B33">Moravec and Elfes (1985)</xref>. A classical algorithm to solve the CPP problem in a grid-based environment is the wavefront algorithm (<xref ref-type="bibr" rid="B49">Zelinsky&#xa0;et&#xa0;al., 1993</xref>). When given a start and a goal position (which can be the same), this algorithm propagates a <italic>wave</italic> from the goal to the neighboring grid cells (i.e., with a breadth-first search through the state-space). When the wave reaches a new grid cell, we label the cell with the next number with respect to the highest label number of the already visited neighboring cells.</p>
<p>After the propagation, each grid cell will be labeled with a number corresponding to the minimum number of cells (or equivalently, the minimum number of moves/actions) an agent must visit (or equivalently, the minimum number of moves/actions it must execute) to reach the goal from a given cell. The second phase of the algorithm is as follows: the agent always visits first the unvisited neighboring cell with the highest label number, breaking ties arbitrarily. One disadvantage of this strategy is the necessity to specify the ending position. In some applications, the ending position is not important, and not specifying it allows for finding shorter paths. The algorithm runs in <inline-formula id="inf1">
<mml:math id="m1">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, where <italic>n</italic> is the number of states, but has no guarantee of finding an optimal solution. There exists an <italic>on-line</italic> variant of the wavefront algorithm (<xref ref-type="bibr" rid="B39">Shivashankar&#xa0;et&#xa0;al., 2011</xref>) which can be used when the environment to cover is <italic>a priori</italic> unknown.</p>
<p>Each grid cell in grid-based methods is typically a square or a rectangle (as in the wavefront algorithm). <xref ref-type="bibr" rid="B35">Oh&#xa0;et&#xa0;al. (2004)</xref> proposed instead to consider a grid of triangular cells which allows for a higher resolution in comparison to square or rectangular cells of similar size. However, as <xref ref-type="bibr" rid="B19">Galceran and Carreras (2013)</xref> mention in their survey: &#x201c;<italic>Most mobile robots are not capable of making very fine movement adjustments, and hence there is no need for ultra high resolution in coverage path planning. Therefore, the extra effort devoted to implementing a triangular grid seems not to be worthwhile</italic>&#x201d;.</p>
<p>Grid-based CPP methods have been proposed to cover irregularly shaped areas using UAVs (Unmanned Aerial Vehicles). For example, the algorithm of <xref ref-type="bibr" rid="B6">Cabreira&#xa0;et&#xa0;al., 2019b</xref> searches for a path that covers in the most &#x201c;energy-efficient&#x201d; way the area to be explored. In contrast, most other CPP methods for UAVs consider the number of &#x201c;turning maneuvers&#x201d;, thus minimizing the energy consumption only indirectly (see, e.g., <xref ref-type="bibr" rid="B40">Valente&#xa0;et&#xa0;al. (2013)</xref>). The algorithm of Cabreira et&#xa0;al. is similar to the baseline algorithm we present in <xref ref-type="sec" rid="s3-1">Section&#xa0;3.1</xref> (the authors seem to use a variant of the ID-DFS algorithm, even though it is not clearly mentioned in their paper). They propose two pruning techniques to reduce the computation time. The former technique keeps in memory the best (i.e., smallest) cost of the solutions found to date, and prunes the current subtree whenever the length of the best current solution exceeds that cost. The latter technique reduces the computation by keeping intermediate cost in memory and computing the cost to reach newly encountered cells using the stored cost of its neighbors instead of computing the cost of travel from the initial cell. These pruning techniques cannot be applied to solve the grid-based CPP problem described in the following sections, because we consider the number of visited cells (including multiple visits) instead of the energy or cost of the path, and ID-DFS already prevents such implausible states from being visited.</p>
<p>Another algorithm based on a grid representation of the problem uses minimum spanning trees (<xref ref-type="bibr" rid="B18">Gabriely and Rimon, 2001</xref>). It can be used either as an on-line or off-line planner. The algorithm of Gabriely and Rimon, named <italic>Spanning Tree Covering</italic>, solves a relaxed CPP problem assuming that the environment can be discretized using squares of size twice as large as the agent. In this simplified problem, the algorithm finds an optimal solution and has a time complexity of <inline-formula id="inf2">
<mml:math id="m2">
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>When a CPP algorithm is applied to a road network (e.g., a street cleaning vehicle that needs to pass by every street), a graph representation (instead of a grid one) is more advantageous. It allows one to model environmental constraints, such as one-way roads, and <italic>a priori</italic> incomplete information. Many algorithms have been proposed to solve the discrete CPP using graph-based representations (see the survey by <xref ref-type="bibr" rid="B45">Xu (2011)</xref>). Some authors have considered the discrete CPP problem with a different objective function to be optimized. For example, instead of minimizing the number of steps required to cover a region, one might be interested in minimizing the number of rotations of the agent since, depending on the type of agent, a rotation can be costly in energy (e.g., for skid-steered robots) or in time (e.g., for differential drive robots). An algorithm based on the A&#x2a; algorithm has been proposed to solve this problem (<xref ref-type="bibr" rid="B14">Dogru and Marques, 2018</xref>). Finally, a neural-network representation of the problem has also been proposed (<xref ref-type="bibr" rid="B47">Yang and Luo, 2004</xref>). One advantage of this representation is that it can handle dynamic environments.</p>
<p>When the environment to be covered is continuous, <italic>cellular decomposition methods</italic> can be used (<xref ref-type="bibr" rid="B11">Choset and Pignon, 1998</xref>). These methods consist in partitioning complex regions in many simpler, non-overlapping regions, called cells. These simpler regions do not contain obstacles, and are thus easy to cover. Within this approach, the CPP problem can be viewed as two different sub-problems: (1) to find a &#x201c;good&#x201d; cell decomposition of the environment, and (2) to find the optimal order of visits of the cells. The simplest and most popular algorithm that uses this strategy is the <italic>boustrophedon decomposition</italic> algorithm (<xref ref-type="bibr" rid="B11">Choset and Pignon, 1998</xref>). A more general type of decomposition is the <italic>Morse decomposition</italic> which, unlike the boustrophedon decomposition, can handle non-polygonal obstacles (<xref ref-type="bibr" rid="B1">Acar&#xa0;et&#xa0;al., 2002</xref>). Instead of using cellular decomposition, continuous regions can also be discretized, which allows the usage of any of the aforementioned discrete planners for the complete coverage of the environment.</p>
<p>For a more detailed description of traditional CPP algorithms, we refer the reader to the seminal surveys of <xref ref-type="bibr" rid="B10">Choset (2001)</xref> and <xref ref-type="bibr" rid="B19">Galceran and Carreras (2013)</xref>. More recent surveys, focusing on specific variants or applications of CPP also exist. For example, in their survey, <xref ref-type="bibr" rid="B27">Khan&#xa0;et&#xa0;al. (2017)</xref> focus on optimized backtracking and smoothness techniques, which have not been covered previously. Finally, the review of <xref ref-type="bibr" rid="B5">Cabreira&#xa0;et&#xa0;al., 2019a</xref> concentrates on CPP techniques applied to unmanned aerial vehicles (UAVs).</p>
<p>Several works in the field are dedicated to practical applications of the CPP problem. For instance, <xref ref-type="bibr" rid="B34">Nasirian&#xa0;et&#xa0;al. (2021)</xref> have proposed a new representation of the problem, using a Markov Decision Process (MDP), and an algorithm based on deep reinforcement learning for finding a continuous path for a disinfectant robot that minimizes the disinfection task completion time in a hospital, to lower COVID-19 or other virus transmission risks.</p>
<p>All of the above algorithms have a relatively fast running time, but they either focus on a relaxed instance of the CPP problem (e.g., the aforementioned spanning-tree covering algorithm) or have no guarantee of optimality (e.g., the aforementioned wave-front algorithm). It is important to mention that there exists a reduction from the Traveling Salesman Problem (TSP) to the general discrete CPP problem, making CPP a part of the NP-complete class of problems (<xref ref-type="bibr" rid="B31">Mitchell, 2017</xref>). Therefore, the CPP planners described in the literature either provide approximate problem solutions, or work only within a relaxed version of the CPP problem with additional constraints on the environment. To the best of our knowledge, no discrete CPP planner that are both <italic>optimal and general</italic> has been proposed in the literature (other than the trivial, naive algorithm consisting on exploring the entire state-space).</p>
<p>The rest of the article is organized as follows. In <xref ref-type="sec" rid="s2">Section&#xa0;2</xref>, we formally introduce the CPP variant of interest. <xref ref-type="sec" rid="s3">Section&#xa0;3</xref> and <xref ref-type="sec" rid="s4">Section&#xa0;4</xref> describe, respectively, our method and the results obtained. Finally, <xref ref-type="sec" rid="s5">Section&#xa0;5</xref> presents the main findings of our study, and discusses some ideas for future investigation.</p>
</sec>
<sec id="s2">
<title>2 Problem modeling</title>
<p>In this section, we mathematically define the coverage path planning theoretical framework we used in this research. <xref ref-type="statement" rid="Definition_1">Definitions&#xa0;1&#x2013;3</xref> describe more formally the environment to cover, the agent and the state-space model considered in our study.</p>
<p>
<statement content-type="definition" id="Definition_1">
<label>Definition 1</label>
<p>A 2D <italic>environment</italic> is an <italic>m</italic> &#xd7; <italic>n</italic> grid represented by a matrix <inline-formula id="inf3">
<mml:math id="m3">
<mml:mi>G</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, where <italic>g</italic>
<sub>
<italic>ij</italic>
</sub> &#x2208; {<italic>O</italic>, <italic>X</italic>}, and:<list list-type="simple">
<list-item>
<p>&#x2022; <italic>O</italic> indicates that a cell is accessible and needs to be covered;</p>
</list-item>
<list-item>
<p>&#x2022; <italic>X</italic> means that the cell is inaccessible (blocked by an obstacle).</p>
</list-item>
</list>
</p>
</statement>
</p>
<p>
<statement content-type="definition" id="Definition_2">
<label>Definition 2</label>
<p>An <italic>agent</italic> is an entity with a position somewhere on the grid. It can move to neighboring grid cells by using an action <italic>a</italic> from the set of actions <inline-formula id="inf4">
<mml:math id="m4">
<mml:mi mathvariant="script">A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1,0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1,0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The effect of each action is as follows.</p>
<p>If <italic>p</italic> &#x3d; (<italic>i</italic>, <italic>j</italic>) denotes the agent&#x2019;s current position (i.e., the agent is on the grid cell <italic>g</italic>
<sub>
<italic>ij</italic>
</sub>) and it executes action <italic>a</italic> &#x3d; (<italic>a</italic>
<sub>1</sub>, <italic>a</italic>
<sub>2</sub>), then its new position <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is:<disp-formula id="equ1">
<mml:math id="m6">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mtext>if</mml:mtext>
<mml:mspace width="0.17em"/>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>O</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mi>p</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mtext>if</mml:mtext>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>X</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
</p>
</statement>
</p>
<p>
<statement content-type="definition" id="Definition_3">
<label>Definition 3</label>
<p>A <italic>state</italic> is a tuple <italic>s</italic> &#x3d; (<italic>i</italic>
<sub>
<italic>s</italic>
</sub>, <italic>j</italic>
<sub>
<italic>s</italic>
</sub>, <italic>R</italic>), where:<list list-type="simple">
<list-item>
<p>&#x2022; (<italic>i</italic>
<sub>
<italic>s</italic>
</sub>, <italic>j</italic>
<sub>
<italic>s</italic>
</sub>) is the position (row, column) of the agent;</p>
</list-item>
<list-item>
<p>&#x2022; <italic>R</italic> &#x3d; {(<italic>i</italic>, <italic>j</italic>)&#x2223;<italic>g</italic>
<sub>
<italic>ij</italic>
</sub> &#x3d; <italic>O</italic>&#xa0;and&#xa0;position (<italic>i</italic>, <italic>j</italic>)&#xa0;has&#xa0;not&#xa0;yet&#xa0;been&#xa0;explored}.</p>
</list-item>
</list>
</p>
<p>Assuming a square grid of size <italic>n</italic> &#xd7; <italic>n</italic>, the state-space (the set of all states) has cardinality <inline-formula id="inf6">
<mml:math id="m7">
<mml:msup>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>. It is thus important to note that the state-space is exponentially larger than the size of the grid environment. We now formally define what we mean by a CPP problem instance, a solution to such an instance, and our optimization criterion (see <xref ref-type="statement" rid="Definition_4">Definitions&#xa0;4&#x2013;6</xref>), and give an example of a problem instance in <xref ref-type="fig" rid="F2">Figure&#xa0;2</xref>.</p>
</statement>
</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>A CPP instance. The dark green, light green and gray&#xa0;cells represent, respectively, the initial cell, the cells that remain to be covered and the inaccessible cells.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g002.tif"/>
</fig>
<p>
<statement content-type="definition" id="Definition_4">
<label>Definition 4</label>
<p>An <italic>instance</italic> of our CPP problem variant is given by a tuple (<italic>G</italic>, <italic>s</italic>
<sub>0</sub>), where <italic>G</italic> is an environment, as defined in definition&#xa0;1, and <italic>s</italic>
<sub>0</sub> &#x3d; (<italic>i</italic>
<sub>0</sub>, <italic>j</italic>
<sub>0</sub>, <italic>R</italic>
<sub>0</sub>) is the initial state, where <italic>R</italic>
<sub>0</sub> &#x3d; {(<italic>i</italic>, <italic>j</italic>)&#x2223;<italic>g</italic>
<sub>
<italic>ij</italic>
</sub> &#x3d; <italic>O</italic>}.</p>
</statement>
</p>
<p>
<statement content-type="definition" id="Definition_5">
<label>Definition 5</label>
<p>A <italic>solution</italic> to such an instance (<italic>G</italic>, <italic>s</italic>
<sub>0</sub>) is an ordered list of actions <italic>p</italic> &#x3d; &#x27e8;<italic>a</italic>
<sub>1</sub>, <italic>a</italic>
<sub>2</sub>, <italic>&#x2026;</italic> , <italic>a</italic>
<sub>
<italic>k</italic>
</sub>&#x27e9; (also called a plan) that moves the agent through positions:<disp-formula id="equ2">
<mml:math id="m8">
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">&#x27e8;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo stretchy="false">&#x27e9;</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>with <italic>R</italic>
<sub>0</sub> &#x2286; <italic>L</italic> (i.e., the final state is (<italic>i</italic>
<sub>
<italic>k</italic>
</sub>, <italic>j</italic>
<sub>
<italic>k</italic>
</sub>, &#x2205;)).</p>
</statement>
</p>
<p>
<statement content-type="definition" id="Definition_6">
<label>Definition 6</label>
<p>Let <inline-formula id="inf7">
<mml:math id="m9">
<mml:mi mathvariant="script">P</mml:mi>
</mml:math>
</inline-formula> be the set of solutions (plans) of a CPP problem instance. The <italic>objective</italic> is to find an optimal solution <inline-formula id="inf8">
<mml:math id="m10">
<mml:msup>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22c6;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">argmin</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:math>
</inline-formula>. Namely, <italic>p</italic>
<sup>&#x22c6;</sup> is a minimal ordered list of actions that solves the problem.</p>
</statement>
</p>
</sec>
<sec id="s3">
<title>3 Proposed methods</title>
<p>As previously noted, existing methods used to solve the grid-based CPP problem are either non-general (they work only in some specific cases) or non-optimal (they don&#x2019;t necessarily provide the optimal, i.e., shortest-path, solution). To illustrate how suboptimal they can be, we present in <xref ref-type="fig" rid="F3">Figure&#xa0;3</xref> the path obtained on the same 4 &#xd7; 4 grid by an optimal solver (on the left) and by the wavefront algorithm described in <xref ref-type="sec" rid="s1">Section 1</xref> (on the right). The optimal solution has a length of 11, while the solution found by the wavefront algorithm has a length of 19. The optimal solution thus requires 8 moves less, which is about 40% shorter. Note that this example is a worst-case scenario for the wavefront algorithm in a 4 &#xd7; 4 grid. Thus, the difference in solution quality between classical algorithms like the wavefront algorithm and optimal algorithms can be significant.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Difference in the path obtained by an optimal solver (left) and by the wavefront algorithm (right). For the wavefront algorithm, the wave values are shown inside each grid cells.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g003.tif"/>
</fig>
<p>In the first part of this section, we present an <italic>optimal</italic> CPP planner based on the ID-DFS algorithm. Because the problem is NP-complete, the algorithm has a worst-case exponential time complexity. The second part of this section describes the two improvements we propose (i.e., loop detection and an admissible heuristic function) which preserve the optimality of the obtained solutions, while running orders of magnitude faster than an exhaustive search algorithm.</p>
<sec id="s3-1">
<title>3.1 Iterative deepening depth-first search (ID-DFS)</title>
<p>Since there is no <italic>optimal and general</italic> discrete CPP planner described in the literature, we begin by presenting an exhaustive search planner, on which our two proposed improvements are based on.</p>
<p>First, we observe that our problem can be viewed as a search in a graph where every node represents a state in the state-space (as defined in <xref ref-type="statement" rid="Definition_3">Definition&#xa0;3</xref>). Thus, we can theoretically use any standard graph search algorithm, such as the well-known depth-first search (DFS) and breadth-first search (BFS) algorithms. However, because of the huge size of the graph representing the state-space (i.e., the state-space is exponentially larger than the problem grid), BFS is impractical. Indeed, this search algorithm needs in the worst-case scenario to store the complete state-space in the working memory, which is too large even for a small problem grid (e.g., a 20 &#xd7; 20 grid has a state-space of 200 &#xd7; 2<sup>200</sup> states). In practice, we can&#x2019;t use BFS or other algorithms based on BFS, such as the Dijkstra and A<sup>&#x22c6;</sup> algorithms.</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>CPP planner based on ID-DFS.<inline-graphic xlink:href="frobt-09-1076897-fx1.tif"/>
</p>
</statement>
</p>
<p>On the other hand, the DFS algorithm can go arbitrarily deep in the search tree even when the solution is close to the root (e.g., it can get stuck by expanding nodes over and over indefinitely, never backtracking and thus never finding a solution). A safeguard is to use a variant of DFS, called iterative deepening depth-first search (ID-DFS)&#xa0;(<xref ref-type="bibr" rid="B37">Russell and Norvig, 2009</xref>), which works similarly to DFS but considers a depth limit. When a solution is not found within the current depth limit <italic>k</italic>, the algorithm restarts its search but with the depth limit <italic>k</italic>&#x2b;1 and continues until a solution is found. It ensures that the algorithm never goes deeper than necessary and that the algorithm terminates (if a solution exists). <xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref> presents the details of a CPP planner based on ID-DFS. We recall from the previous section that <italic>R</italic>
<sub>0</sub> is the set of grid cells that need to be covered. The rest of the pseudocode should be self-explanatory.</p>
</sec>
<sec id="s3-2">
<title>3.2 Pruning using loop detection</title>
<p>
<xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref> provides an optimal solution for each problem instance and is guaranteed to terminate if a solution exists. However, it has to analyze many branches of the search tree that are not promising (i.e., that have a little chance or no chance at all to lead to an optimal solution). Our branch-and-bound planner aims at alleviating this problem by pruning the unpromising parts of the search tree during the search. There are many different types of unpromising subtrees. One such type occurs when the agent arrives in an already visited grid cell (<italic>i</italic>, <italic>j</italic>) without having covered any new grid cell since its last visit (i.e., we found a <italic>loop</italic> in the state-space). In order to find such loops, we introduce the matrix <inline-formula id="inf9">
<mml:math id="m11">
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, where <italic>m</italic>
<sub>
<italic>ij</italic>
</sub> is the number of grid cells that remained to be covered the last time the agent was in position (<italic>i</italic>, <italic>j</italic>). We modify <xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref> to consider and update this new matrix <italic>M</italic>. When a new recursive call starts, and the agent is in position (<italic>i</italic>, <italic>j</italic>), a condition is inserted to check if <italic>m</italic>
<sub>
<italic>ij</italic>
</sub> &#x2264; &#x7c;<italic>R</italic>&#x7c;. If this condition is true, then the current path is clearly suboptimal, and the current subtree is thus pruned from the search tree.</p>
</sec>
<sec id="s3-3">
<title>3.3 Pruning using an admissible CPP heuristic function</title>
<p>A second way to improve <xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref> is to introduce an <italic>admissible heuristic</italic> cost function <inline-formula id="inf10">
<mml:math id="m12">
<mml:mi>h</mml:mi>
<mml:mo>:</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="script">S</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
</mml:math>
</inline-formula>, i.e., a function that takes as input states <italic>s</italic> &#x3d; (<italic>i</italic>, <italic>j</italic>, <italic>R</italic>) from the set of states <inline-formula id="inf11">
<mml:math id="m13">
<mml:mi mathvariant="script">S</mml:mi>
</mml:math>
</inline-formula> and returns as output a lower bound <italic>h</italic>(<italic>s</italic>) on the number of actions needed to cover the remaining uncovered grid cells (the cells in <italic>R</italic>). Such a heuristic can be used in two ways: (1) It allows pruning even more unpromising subtrees than what is possible using the Loop-Detection method (see <xref ref-type="sec" rid="s3-2">Section&#xa0;3.2</xref>), and (2) it allows ranking the successors of a state depending on how much promising they are, and thus finding an optimal solution faster by exploring the most promising subtrees first.</p>
<p>We describe our novel heuristic and explain how it computes the lower bound using an example presented in <xref ref-type="fig" rid="F4">Figure&#xa0;4</xref> (Example 1, on the left). In this figure, three grid cells (A, B and C) remain to be covered. Our heuristic computes the minimum number of actions (for each of the four possible moves) in <inline-formula id="inf12">
<mml:math id="m14">
<mml:mi mathvariant="script">A</mml:mi>
</mml:math>
</inline-formula> that need to be executed to cover the remaining cells. For example, the action corresponding to &#x201c;go left&#x201d; must be executed at least max(4, 3, 0) &#x3d; 4 times and the action corresponding to &#x201c;go right&#x201d; must be executed at least max(0, 0, 2) &#x3d; 2 times. To obtain a tighter lower-bound, we observe that if the agent goes 2&#xa0;cells to the right, the minimum number of moves to the left will now be two more than for the previous minimum of 4, i.e., 6. We can thus add min(<italic>left</italic>, <italic>right</italic>) to the number of &#x201c;left moves&#x201d; and &#x201c;right moves&#x201d;. The same computation is carried out for the &#x201c;go up&#x201d; and &#x201c;go down&#x201d; moves. We thus finally obtain a heuristic value of:<disp-formula id="equ3">
<mml:math id="m15">
<mml:mn>4</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>4,2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1,2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>12</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>
</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Examples explaining how the proposed heuristic works in practice.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g004.tif"/>
</fig>
<p>In Example 1, the obtained heuristic value of 12 is not higher than the actual number of actions necessary to cover A, B and C, and is a much more informative heuristic value than the number of uncovered cells (i.e., 3). However, under some (rare) circumstances, the number of uncovered cells can be more informative than the heuristic value computed as explained above. For instance, if we look at Example 2 in <xref ref-type="fig" rid="F4">Figure&#xa0;4</xref>, the heuristic value we would obtain is:<disp-formula id="equ4">
<mml:math id="m16">
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1,2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>7</mml:mn>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>which is lower than the number of uncovered cells (i.e., 11). To further improve the informativeness of our heuristic function (i.e., obtain tighter lower bounds on the remaining number of actions), our heuristic function returns the maximum of the two values.</p>
<p>
<xref ref-type="statement" rid="Algorithm_2">Algorithm&#xa0;2</xref> shows more precisely how the heuristic value <italic>h</italic>(<italic>s</italic>) of a given state <italic>s</italic> is computed.</p>
<p>
<statement content-type="algorithm" id="Algorithm_2">
<label>Algorithm 2</label>
<p>Heuristic cost computation.<inline-graphic xlink:href="frobt-09-1076897-fx2.tif"/>
</p>
</statement>
</p>
</sec>
<sec id="s3-4">
<title>3.4 ID-DFS CPP planner using the proposed pruning techniques</title>
<p>
<xref ref-type="statement" rid="Algorithm_3">Algorithm&#xa0;3</xref> presents the planner we obtain when modifying the ID-DFS planner (<xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref>) to prune the state-space using the two proposed techniques (pruning using loop detection, and pruning using the admissible heuristic function). In <xref ref-type="statement" rid="Algorithm_3">Algorithm&#xa0;3</xref>, the added instructions related to the loop detection are colored in green, while those related to the use of the heuristic function are colored in blue.</p>
<p>Pruning using loop-detection is done exactly as described in <xref ref-type="sec" rid="s3-2">Section&#xa0;3.2</xref>. The matrix defined on Line four is used on Line 13 to prune the detected loops in the state-space.</p>
<p>The heuristic function (i.e., the function defined in <xref ref-type="statement" rid="Algorithm_2">Algorithm&#xa0;2</xref>) is used in two ways. Firstly, it is used on Line six to provide an initial depth limit for ID-DFS. This allows the algorithm to start with a higher initial depth limit than in <xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref> in the case when the heuristic value is higher than the number &#x7c;<italic>R</italic>
<sub>0</sub>&#x7c; of cells to be covered in the initial grid. Secondly, it is used on Line 11 to prune the currently explored subtree in the state-space if <italic>k</italic>&#x2212;<italic>d</italic>, i.e., the number of remaining moves that can be done before reaching the depth limit, is less than the lower-bound, given by the heuristic function, of the number of necessary moves to complete the coverage.</p>
<p>
<statement content-type="algorithm" id="Algorithm_3">
<label>Algorithm 3</label>
<p>Heuristic cost computation.<inline-graphic xlink:href="frobt-09-1076897-fx3.tif"/>
</p>
</statement>
</p>
</sec>
</sec>
<sec id="s4">
<title>4 Results and analysis</title>
<p>The algorithms described in <xref ref-type="sec" rid="s3">Section&#xa0;3</xref> were implemented in C&#x2b;&#x2b;. The tests were carried out on a PC computer equipped with an Intel Core i5 7600k processor and 32&#xa0;GB of RAM. Thanks to ID-DFS&#x2019;s low memory consumption, all tested algorithms have never used more than 10&#xa0;MB of RAM memory, even on the largest test environments. Thus, the memory usage is not an interesting benchmarking metric here. The obtained solutions&#x2019; quality is also not an interesting metric to compare the proposed algorithms (the baseline, ID-DFS, and the two proposed improvements, Loop-Detection and Heuristic function) because all of them always provide <italic>optimal</italic> solutions, i.e., plans with the same minimal length (number of actions). However, for each tested grid, our program returns the length of an optimal solution as well as the solution found by the classical (non-optimal) wavefront algorithm (described in <xref ref-type="sec" rid="s1">Section 1</xref>) to give an idea of the difference in the quality of solution we can expect between an optimal and a classical, approximate algorithm.</p>
<p>We propose six types of synthetic grids which cover many completely different scenarios. We believe that by using these synthetic grids in our evaluation, we are able to measure more generally the strenghts and weaknesses of each proposed algorithm (compared to testing it on a specific real-world grid-environment, which would have a particular shape and not cover as many scenarios).</p>
<p>Every planner was tested with each of the six kinds of artificial grids shown in <xref ref-type="fig" rid="F5">Figure&#xa0;5</xref>. Type (a) grids were generated with the Diamond-Square algorithm. They have the shape of a coast (<xref ref-type="bibr" rid="B17">Fournier&#xa0;et&#xa0;al., 1982</xref>). Type (b) grids include cells with randomly added &#x201c;links&#x201d; between neighboring positions on the grid. Type (c) grids mimic a random walk on a grid. Type (d) grids were generated by randomly placing simple shapes (triangles, discs and rectangles). Type (e) grids are perfect labyrinths (i.e., labyrinths with no cycle). Finally, type (f) are wide labyrinths (i.e., labyrinths were each "path" has a width of 2&#xa0;cells). All grid types were generated with an inaccessible cells density of (50 &#xb1; 1)%. To measure the performance of our algorithms, we ran each of them 50 times for each parameter combination (type of grid, size of grid) using randomly generated grids, and taking the average of the obtained results.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>The six types of generated grids in our benchmark: <bold>(A)</bold> Coast-like, <bold>(B)</bold> Random links, <bold>(C)</bold> Random walk, <bold>(D)</bold> Simple shapes, <bold>(E)</bold> Labyrinth, <bold>(F)</bold> Wide-labyrinth.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g005.tif"/>
</fig>
<p>
<xref ref-type="table" rid="T1">Table&#xa0;1</xref> reports the average running times measured for each planner on each instance of the considered types of test grids. Every grid we generated had the same number of rows and columns, shown in column <italic>Size</italic>. The columns L and H, respectively, stand for our two improvements over the ID-DFS (<xref ref-type="statement" rid="Algorithm_1">Algorithm&#xa0;1</xref>) planner, i.e., (L)oop detection and (H)euristic pruning. In <xref ref-type="table" rid="T1">Table&#xa0;1</xref>, the character &#x2019;-&#x2019; means that the planner failed to solve the problem within 5&#xa0;min. The length of an optimal solution (which is also the length of the solution obtained by each of our proposed planners, since all of them are optimal) is given by column OS. For reference, we also provide the length of the solution obtained by the classical wavefront algorithm. <xref ref-type="fig" rid="F6">Figures&#xa0;6</xref>&#x2013;<xref ref-type="fig" rid="F11">11</xref> illustrate the obtained results graphically.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Average running times (in ms) obtained by the proposed planners. Columns &#x201c;OS&#x201d; and &#x201c;WFS&#x201d; give the length of an optimal solution and of the solution obtained with the approximate wavefront solver. The symbol &#x2018;-&#x2019; indicates when a solver could not solve an instance within 5&#xa0;min.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="right">Type</th>
<th align="right">Size</th>
<th align="right">ID-DFS</th>
<th align="right">L</th>
<th align="right">H</th>
<th align="right">L &#x2b; H</th>
<th align="right">OS</th>
<th align="right">WFS</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="right">(a)</td>
<td align="right">3</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">4</td>
<td align="right">4</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">4</td>
<td align="right">1.79</td>
<td align="right">0.68</td>
<td align="right">0.02</td>
<td align="right">0.02</td>
<td align="right">9</td>
<td align="right">9</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">5</td>
<td align="right">877.45</td>
<td align="right">75.35</td>
<td align="right">1.10</td>
<td align="right">0.91</td>
<td align="right">14</td>
<td align="right">16</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">6</td>
<td align="right">87,595.50</td>
<td align="right">1220.18</td>
<td align="right">2.68</td>
<td align="right">1.63</td>
<td align="right">18</td>
<td align="right">19</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">7</td>
<td align="right">-</td>
<td align="right">14,598.20</td>
<td align="right">377.89</td>
<td align="right">169.61</td>
<td align="right">24</td>
<td align="right">27</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">8</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">7369.90</td>
<td align="right">4605.85</td>
<td align="right">34</td>
<td align="right">38</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">91,806.70</td>
<td align="right">86,891.90</td>
<td align="right">42</td>
<td align="right">47</td>
</tr>
<tr>
<td align="right">(a)</td>
<td align="right">10</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">259,001.00</td>
<td align="right">228,610.00</td>
<td align="right">48</td>
<td align="right">52</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">3</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">3</td>
<td align="right">3</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">4</td>
<td align="right">0.08</td>
<td align="right">0.06</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">8</td>
<td align="right">9</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">5</td>
<td align="right">6.10</td>
<td align="right">2.05</td>
<td align="right">0.04</td>
<td align="right">0.04</td>
<td align="right">12</td>
<td align="right">13</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">6</td>
<td align="right">18,475.70</td>
<td align="right">4225.29</td>
<td align="right">1.40</td>
<td align="right">1.04</td>
<td align="right">19</td>
<td align="right">20</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">7</td>
<td align="right">275,006.00</td>
<td align="right">196,072.00</td>
<td align="right">41.98</td>
<td align="right">14.91</td>
<td align="right">24</td>
<td align="right">26</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">8</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">17,688.50</td>
<td align="right">5481.63</td>
<td align="right">33</td>
<td align="right">35</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">94,546.60</td>
<td align="right">63,041.10</td>
<td align="right">40</td>
<td align="right">43</td>
</tr>
<tr>
<td align="right">(b)</td>
<td align="right">10</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">285,868.00</td>
<td align="right">244,529.00</td>
<td align="right">47</td>
<td align="right">52</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">3</td>
<td align="right">0.00</td>
<td align="right">0.01</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">5</td>
<td align="right">5</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">4</td>
<td align="right">0.04</td>
<td align="right">0.03</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">7</td>
<td align="right">9</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">5</td>
<td align="right">15.03</td>
<td align="right">5.84</td>
<td align="right">0.03</td>
<td align="right">0.03</td>
<td align="right">13</td>
<td align="right">14</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">6</td>
<td align="right">21,457.50</td>
<td align="right">1024.13</td>
<td align="right">0.62</td>
<td align="right">0.41</td>
<td align="right">18</td>
<td align="right">21</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">7</td>
<td align="right">-</td>
<td align="right">197,872.00</td>
<td align="right">76.95</td>
<td align="right">53.62</td>
<td align="right">26</td>
<td align="right">27</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">8</td>
<td align="right">-</td>
<td align="right">280,669.00</td>
<td align="right">97.45</td>
<td align="right">75.26</td>
<td align="right">32</td>
<td align="right">36</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">22,104.50</td>
<td align="right">20,105.50</td>
<td align="right">39</td>
<td align="right">42</td>
</tr>
<tr>
<td align="right">(c)</td>
<td align="right">10</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">105,775.00</td>
<td align="right">102,159.00</td>
<td align="right">52</td>
<td align="right">57</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">3</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">2</td>
<td align="right">2</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">4</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">0.00</td>
<td align="right">0.00</td>
<td align="right">6</td>
<td align="right">6</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">5</td>
<td align="right">8.03</td>
<td align="right">1.61</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">10</td>
<td align="right">12</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">6</td>
<td align="right">54,370.60</td>
<td align="right">9442.40</td>
<td align="right">74.96</td>
<td align="right">38.26</td>
<td align="right">22</td>
<td align="right">25</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">7</td>
<td align="right">260,308.00</td>
<td align="right">96,891.80</td>
<td align="right">2219.24</td>
<td align="right">257.49</td>
<td align="right">27</td>
<td align="right">32</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">8</td>
<td align="right">-</td>
<td align="right">243,374.00</td>
<td align="right">85,053.10</td>
<td align="right">22,908.10</td>
<td align="right">37</td>
<td align="right">42</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">260,703.00</td>
<td align="right">197,377.00</td>
<td align="right">39</td>
<td align="right">52</td>
</tr>
<tr>
<td align="right">(d)</td>
<td align="right">10</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">266,157.00</td>
<td align="right">57</td>
<td align="right">62</td>
</tr>
<tr>
<td align="right">(e)</td>
<td align="right">3</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">0.01</td>
<td align="right">7</td>
<td align="right">7</td>
</tr>
<tr>
<td align="right">(e)</td>
<td align="right">5</td>
<td align="right">6443.80</td>
<td align="right">11.29</td>
<td align="right">8.78</td>
<td align="right">0.38</td>
<td align="right">22</td>
<td align="right">26</td>
</tr>
<tr>
<td align="right">(e)</td>
<td align="right">7</td>
<td align="right">-</td>
<td align="right">78,432.00</td>
<td align="right">2241.60</td>
<td align="right">1291.27</td>
<td align="right">45</td>
<td align="right">53</td>
</tr>
<tr>
<td align="right">(e)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">78,432.14</td>
<td align="right">73</td>
<td align="right">83</td>
</tr>
<tr>
<td align="right">(f)</td>
<td align="right">3</td>
<td align="right">218,413.00</td>
<td align="right">251.60</td>
<td align="right">0.05</td>
<td align="right">0.04</td>
<td align="right">26</td>
<td align="right">27</td>
</tr>
<tr>
<td align="right">(f)</td>
<td align="right">5</td>
<td align="right">-</td>
<td align="right">76,982.30</td>
<td align="right">702.31</td>
<td align="right">423.79</td>
<td align="right">67</td>
<td align="right">67</td>
</tr>
<tr>
<td align="right">(f)</td>
<td align="right">7</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">278,412.00</td>
<td align="right">41,247.00</td>
<td align="right">109</td>
<td align="right">124</td>
</tr>
<tr>
<td align="right">(f)</td>
<td align="right">9</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">-</td>
<td align="right">259,001.00</td>
<td align="right">157</td>
<td align="right">181</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Average running times (in ms) for the type (a) (coast-like) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Average running times (in ms) for the type (b) (random links) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Average running times (in ms) for the type (c) (random walk) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g008.tif"/>
</fig>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Average running times (in ms) for the type (d) (simple shapes) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g009.tif"/>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Average running times (in ms) for the type (e) (labyrinth) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g010.tif"/>
</fig>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Average running times (in ms) for the type (f) (wide labyrinth) grids.</p>
</caption>
<graphic xlink:href="frobt-09-1076897-g011.tif"/>
</fig>
<p>As we can see, the L variant is about an order of magnitude faster than the baseline ID-DFS implementation. The H variant is many orders of magnitude faster than the baseline ID-DFS. The combination of both improvements (L &#x2b; H) led to an even greater speedup, albeit the difference between H and L &#x2b; H is smaller than the difference between ID-DFS and H, or between ID-DFS and L. This is not surprising, since there is an overlap between the unpromising states detected due to the loop detection and those detected by using the proposed heuristic function. The relative performance of the tested algorithms is the same in every type of test grids (ID-DFS &#x227a; L &#x227a; H &#x227a; L &#x2b; H). That being said, since the overhead of L &#x2b; H over H (in terms of the memory usage for the matrix designed to detect loops, and in terms of an added programming complexity) is minimal, there is no reason not to always use L &#x2b; H in practice.</p>
<p>
<xref ref-type="table" rid="T2">Table&#xa0;2</xref> reports the average speedup factors provided by each of the three proposed algorithmic improvements (L, H, L &#x2b; H) on the six types of grids. It also reports (in the ASLD column) the Average Solution Length Difference between an optimal solution (returned by our algorithms) and an approximate solution (returned by the wavefront algorithm). As we can see, L &#x2b; H has been able to find optimal solutions thousands to millions of times (depending on the grid type) faster than our baseline ID-DFS planner. Furthermore, we see that the average solution length difference between an optimal and approximate solution is at 12% (over all grid types), which can be an important improvement in some real-world problems.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Average speedup factors produced by each of the three proposed algorithmic improvements on the six types of grids.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Type</th>
<th align="right">L</th>
<th align="right">H</th>
<th align="right">L &#x2b; H</th>
<th align="right">ASLD</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">(a) Coast-Like</td>
<td align="right">68.26</td>
<td align="right">23,282.83</td>
<td align="right">34,560.45</td>
<td align="right">1.10</td>
</tr>
<tr>
<td align="left">(b) Random Links</td>
<td align="right">1.47</td>
<td align="right">6757.72</td>
<td align="right">18,342.99</td>
<td align="right">1.08</td>
</tr>
<tr>
<td align="left">(c) Random Walk</td>
<td align="right">20.85</td>
<td align="right">32,534.20</td>
<td align="right">47,716.82</td>
<td align="right">1.10</td>
</tr>
<tr>
<td align="left">(d) Simple Shapes</td>
<td align="right">2.96</td>
<td align="right">137.17</td>
<td align="right">1063.99</td>
<td align="right">1.17</td>
</tr>
<tr>
<td align="left">(e) Labyrinth</td>
<td align="right">570.25</td>
<td align="right">768.03</td>
<td align="right">8156.72</td>
<td align="right">1.15</td>
</tr>
<tr>
<td align="left">(f) Labyrinth-Wide</td>
<td align="right">868.10</td>
<td align="right">4,368260</td>
<td align="right">5,460325</td>
<td align="right">1.11</td>
</tr>
<tr>
<td align="left">Average</td>
<td align="right">255.31</td>
<td align="right">738,623.32</td>
<td align="right">928,361.00</td>
<td align="right">1.12</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>This paper considers the highly relevant optimal complete coverage path planning (CPP) problem. We first briefly reviewed practical applications of CPP. Then, we showed how an exhaustive algorithm based on iterative deepening depth-first search (ID-DFS) can be efficiently accelerated using a branch-and-bound approach. The proposed improvements (loop-detection and an admissible heuristic function) allow the planner to find an optimal CPP solution many orders of magnitude faster than a baseline ID-DFS implementation, making it highly suitable for practical applications where having an optimal solution is important.</p>
<p>As future work, we plan to develop and test a method similar to particle swarm optimization (PSO) considering an initial particle that splits the problem into several sub-problems every time there is more than one eligible neighbor. The splitting process will take place until the number of particles reaches a certain threshold. When this happens, a pruning process destroying the least promising particles can be carried out according to an evaluation heuristic to be determined. We also envisage using clustering algorithms (<xref ref-type="bibr" rid="B30">Mirkin, 2005</xref>) to decompose a given grid into smaller, mostly independent sub-grids (i.e., similar to cellular decomposition, but for grid environments), which could be covered optimally one by one. Such an algorithm could also be easily parallelized.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>Conception and design of the study: JG, EB, and VM. First Draft of the manuscript: JG. Implementation of the algorithms: JG. Manuscript Revision: EB and VM.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>This work was supported by a grant from the Natural Sciences and Engineering Research Council of Canada (NSERC, Grant BESCD3-534817-2019) and by a grant from the Fonds de Recherche du Qu&#xe9;bec&#x2014;Nature et Technologies (FRQNT, Grant 284673).</p>
</sec>
<ack>
<p>The authors would like to thank Guillaume Gosset and Alexandre Blondin-Mass&#xe9; for various contributions on preliminary work related to this research.</p>
</ack>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Acar</surname>
<given-names>E. U.</given-names>
</name>
<name>
<surname>Choset</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Rizzi</surname>
<given-names>A. A.</given-names>
</name>
<name>
<surname>Atkar</surname>
<given-names>P. N.</given-names>
</name>
<name>
<surname>Hull</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Morse decompositions for coverage tasks</article-title>. <source>Int. J. Robotics Res.</source> <volume>21</volume>, <fpage>331</fpage>&#x2013;<lpage>344</lpage>. <pub-id pub-id-type="doi">10.1177/027836402320556359</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Afzal</surname>
<given-names>Z. R.</given-names>
</name>
<name>
<surname>Prabhakar</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Prabhakar</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Optimal tool path planning for 3D printing with spatio-temporal and thermal constraints</article-title>,&#x201d; in <conf-name>2019 Sixth Indian Control Conference (ICC)</conf-name>, <conf-loc>Hyderabad, India</conf-loc>, <conf-date>18-20 December 2019</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>176</fpage>&#x2013;<lpage>181</lpage>. <pub-id pub-id-type="doi">10.1109/ICC47138.2019.9123182</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Ahmadzadeh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Keller</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Pappas</surname>
<given-names>G. J.</given-names>
</name>
<name>
<surname>Jadbabaie</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kumar</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2008</year>). &#x201c;<article-title>An optimization-based approach to time critical cooperative surveillance and coverage with unmanned aerial vehicles</article-title>,&#x201d; in <source>Experimental robotics: The 10th international symposium on experimental robotics</source> (<publisher-name>Springer Berlin Heidelberg</publisher-name>), <fpage>491</fpage>&#x2013;<lpage>500</lpage>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ai</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Jia</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wen</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>B.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Coverage path planning for maritime search and rescue using reinforcement learning</article-title>. <source>Ocean. Eng.</source> <volume>241</volume>, <fpage>110098</fpage>. <pub-id pub-id-type="doi">10.1016/j.oceaneng.2021.110098</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cabreira</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Brisolara</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Ferreira</surname>
<given-names>P. R.</given-names>
<suffix>Jr.</suffix>
</name>
</person-group> (<year>2019a</year>). <article-title>Survey on coverage path planning with unmanned aerial vehicles</article-title>. <source>Drones</source> <volume>3</volume>, <fpage>4</fpage>. <pub-id pub-id-type="doi">10.3390/drones3010004</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Cabreira</surname>
<given-names>T. M.</given-names>
</name>
<name>
<surname>Ferreira</surname>
<given-names>P. R.</given-names>
</name>
<name>
<surname>Franco</surname>
<given-names>C. D.</given-names>
</name>
<name>
<surname>Buttazzo</surname>
<given-names>G. C.</given-names>
</name>
</person-group> (<year>2019b</year>). &#x201c;<article-title>Grid-based coverage path planning with minimum energy over irregular-shaped areas with uavs</article-title>,&#x201d; in <conf-name>2019 International Conference on Unmanned Aircraft Systems (ICUAS)</conf-name>, <conf-loc>Atlanta, GA, USA</conf-loc>, <conf-date>11-14 June 2019</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>758</fpage>&#x2013;<lpage>767</lpage>. <pub-id pub-id-type="doi">10.1109/ICUAS.2019.8797937</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Champagne Gareau</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Beaudry</surname>
<given-names>&#xc9;.</given-names>
</name>
<name>
<surname>Makarenkov</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2021a</year>). &#x201c;<article-title>A fast electric vehicle planner using clustering</article-title>,&#x201d; in <source>Studies in classification, data analysis, and knowledge organization</source> (<publisher-name>Springer Science and Business Media Deutschland GmbH</publisher-name>), <volume>5</volume>, <fpage>17</fpage>&#x2013;<lpage>25</lpage>.</citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Champagne Gareau</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Beaudry</surname>
<given-names>&#xc9;.</given-names>
</name>
<name>
<surname>Makarenkov</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2021b</year>). &#x201c;<article-title>Fast and optimal planner for the discrete grid-based coverage path-planning problem</article-title>,&#x201d; in <source>Intelligent data engineering and automated learning &#x2013; IDEAL 2021</source> (<publisher-name>Springer International Publishing</publisher-name>), <fpage>87</fpage>&#x2013;<lpage>96</lpage>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cho</surname>
<given-names>S. W.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>H. J.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Shim</surname>
<given-names>D. H.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S.-Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Coverage path planning for multiple unmanned aerial vehicles in maritime search and rescue operations</article-title>. <source>Comput. Industrial Eng.</source> <volume>161</volume>, <fpage>107612</fpage>. <pub-id pub-id-type="doi">10.1016/j.cie.2021.107612</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Choset</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Coverage for robotics - a survey of recent results</article-title>. <source>Ann. Math. Artif. Intell.</source> <volume>31</volume>, <fpage>113</fpage>&#x2013;<lpage>126</lpage>. <pub-id pub-id-type="doi">10.1023/a:1016639210559</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Choset</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Pignon</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>1998</year>). &#x201c;<article-title>Coverage path planning: The boustrophedon cellular decomposition</article-title>,&#x201d; in <source>Field and service robotics</source> (<publisher-name>Springer</publisher-name>), <fpage>203</fpage>&#x2013;<lpage>209</lpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Conroy</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Thierauf</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Rule</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Krause</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Akitaya</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Gonczi</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). &#x201c;<article-title>Robot development and path planning for indoor ultraviolet light disinfection</article-title>,&#x201d; in <conf-name>2021 IEEE international conference on robotics and automation</conf-name>, <conf-date>May 30&#x2013;June 5, 2021</conf-date>, <conf-loc>Xi&#x2019;an, China</conf-loc> (<publisher-loc>New York</publisher-loc>: <publisher-name>Institute for Electrical and Electronics Engineers (IEEE)</publisher-name>), <fpage>7795</fpage>&#x2013;<lpage>7801</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA48506.2021.9561405</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>&#xd0;akulovic</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Petrovic</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Complete coverage path planning of mobile robots for humanitarian demining</article-title>. <source>Industrial Robot Int. J.</source> <volume>39</volume>, <fpage>484</fpage>&#x2013;<lpage>493</lpage>. <pub-id pub-id-type="doi">10.1108/01439911211249779</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Dogru</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Marques</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>A&#x2a;-based solution to the coverage path planning problem</article-title>,&#x201d; in <source>Advances in intelligent Systems and computing</source> (<publisher-name>Springer-Verlag</publisher-name>), <volume>693</volume>, <fpage>240</fpage>&#x2013;<lpage>248</lpage>.</citation>
</ref>
<ref id="B15">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Edwards</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>S&#xf6;rme</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2018</year>). <source>A comparison of path planning algorithms for robotic vacuum cleaners</source>. <comment>Ph.D. thesis</comment> (<publisher-loc>Stockholm, Sweden</publisher-loc>: <publisher-name>KTH Royal Institute of Technology</publisher-name>).</citation>
</ref>
<ref id="B16">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Farsi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ratcliff</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Johnson</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Allen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Karam</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Pawson</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1994</year>). &#x201c;<article-title>Robot control system for window cleaning</article-title>,&#x201d; in <conf-name>Proceedings of 1994 American Control Conference - ACC &#x2019;94</conf-name>, <conf-loc>Baltimore, MD, USA</conf-loc>, <conf-date>29 June 1994-01 July 1994</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>994</fpage>&#x2013;<lpage>995</lpage>.</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fournier</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Fussell</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Carpenter</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>1982</year>). <article-title>Computer rendering of stochastic models</article-title>. <source>Commun. ACM</source> <volume>25</volume>, <fpage>371</fpage>&#x2013;<lpage>384</lpage>. <pub-id pub-id-type="doi">10.1145/358523.358553</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Gabriely</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Rimon</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2001</year>). &#x201c;<article-title>Spanning-tree based coverage of continuous areas by a mobile robot</article-title>,&#x201d; in <conf-name>Proceedings 2001 ICRA. IEEE International Conference on Robotics and Automation (Cat. No.01CH37164)</conf-name>, <conf-loc>Seoul, South Korea</conf-loc>, <conf-date>21-26 May 2001</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>1927</fpage>&#x2013;<lpage>1933</lpage>.</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Galceran</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Carreras</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>A survey on coverage path planning for robotics</article-title>. <source>Robotics Aut. Syst.</source> <volume>61</volume>, <fpage>1258</fpage>&#x2013;<lpage>1276</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2013.09.004</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Ghallab</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Nau</surname>
<given-names>D. S.</given-names>
</name>
<name>
<surname>Traverso</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2016</year>). <source>Automated planning and acting</source>. <publisher-name>Cambridge University Press</publisher-name>.</citation>
</ref>
<ref id="B21">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Gupta</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2021</year>). <source>Algorithms for path planning in 3D printing</source>. <comment>Ph.D. thesis</comment> (<publisher-loc>Ann Arbor, United States</publisher-loc>: <publisher-name>Washington State University</publisher-name>).</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Peng</surname>
<given-names>Y.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Ant-colony-based complete-coverage path-planning algorithm for underwater gliders in ocean areas with thermoclines</article-title>. <source>IEEE Trans. Veh. Technol.</source> <volume>69</volume>, <fpage>8959</fpage>&#x2013;<lpage>8971</lpage>. <pub-id pub-id-type="doi">10.1109/TVT.2020.2998137</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hayat</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yanmaz</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Bettstetter</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Brown</surname>
<given-names>T. X.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Multi-objective drone path planning for search and rescue with quality-of-service requirements</article-title>. <source>Aut. Robots</source> <volume>44</volume>, <fpage>1183</fpage>&#x2013;<lpage>1198</lpage>. <pub-id pub-id-type="doi">10.1007/s10514-020-09926-9</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Healey</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2001</year>). &#x201c;<article-title>Application of formation control for multi-vehicle robotic minesweeping</article-title>,&#x201d; in <conf-name>Proceedings of the 40th IEEE Conference on Decision and Control (Cat. No.01CH37228)</conf-name>, <conf-loc>Orlando, FL, USA</conf-loc>, <conf-date>04-07 December 2001</conf-date>, <fpage>1497</fpage>&#x2013;<lpage>1502</lpage>. <pub-id pub-id-type="doi">10.1109/CDC.2001.981106</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jin</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>L. Tang</surname>
</name>
</person-group> (<year>2010</year>). <article-title>Optimal coverage path planning for arable farming on 2D surfaces</article-title>. <source>Trans. ASABE</source> <volume>53</volume>, <fpage>283</fpage>&#x2013;<lpage>295</lpage>. <pub-id pub-id-type="doi">10.13031/2013.29488</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>John Dhanaseely</surname>
<given-names>A.</given-names>
<suffix>Dr</suffix>
</name>
<name>
<surname>Srinivasan</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Remote controlled painter combined window washer using quadopter</article-title>,&#x201d; in <conf-name>2021 Third International Conference on Intelligent Communication Technologies and Virtual Mobile Networks (ICICV)</conf-name>, <conf-loc>Tirunelveli, India</conf-loc>, <conf-date>04-06 February 2021</conf-date>, <fpage>1458</fpage>&#x2013;<lpage>1461</lpage>. <pub-id pub-id-type="doi">10.1109/ICICV50876.2021.9388383</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Noreen</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Habib</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>On complete coverage path planning algorithms for non-holonomic mobile robots: Survey and challenges</article-title>. <source>J. Inf. Sci. Eng.</source> <volume>33</volume>, <fpage>101</fpage>&#x2013;<lpage>121</lpage>.</citation>
</ref>
<ref id="B28">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lechowicz</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Koszalka</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Pozniak-Koszalka</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Kasprzak</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Path optimization in 3D printer: Algorithms and experimentation system</article-title>,&#x201d; in <conf-name>4th International Symposium on Computational and Business Intelligence (ISCBI)</conf-name>, <conf-loc>Olten, Switzerland</conf-loc>, <conf-date>05-07 September 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>137</fpage>&#x2013;<lpage>142</lpage>.</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Sensor-based complete coverage path planning in dynamic environment for cleaning robot</article-title>. <source>CAAI Trans. Intell. Technol.</source> <volume>3</volume>, <fpage>65</fpage>&#x2013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1049/trit.2018.0009</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Mirkin</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2005</year>). <source>Clustering for data mining</source>. <publisher-name>Chapman and Hall/CRC</publisher-name>.</citation>
</ref>
<ref id="B31">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Mitchell</surname>
<given-names>J. S.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Shortest paths and networks</article-title>,&#x201d; in <source>Handbook of discrete and computational geometry</source>. <edition>Third Edition</edition> (<publisher-name>Chapman and Hall/CRC</publisher-name>), <fpage>811</fpage>&#x2013;<lpage>848</lpage>.</citation>
</ref>
<ref id="B32">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Modares</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ghanei</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Mastronarde</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Dantu</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>UB-ANC planner: Energy efficient coverage path planning with multiple drones</article-title>,&#x201d; in <conf-name>2017 IEEE International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Singapore</conf-loc>, <conf-date>29 May 2017-03 June 2017</conf-date>, <fpage>6182</fpage>&#x2013;<lpage>6189</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA.2017.7989732</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Moravec</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Elfes</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>1985</year>). &#x201c;<article-title>High resolution maps from wide angle sonar</article-title>,&#x201d; in <conf-name>1985 IEEE International Conference on Robotics and Automation Proceedings</conf-name>, <conf-loc>St. Louis, MO, USA</conf-loc>, <conf-date>25-28 March 1985</conf-date>, <fpage>116</fpage>&#x2013;<lpage>121</lpage>. <pub-id pub-id-type="doi">10.1109/ROBOT.1985.1087316</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nasirian</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Mehrandezh</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Janabi-Sharifi</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Efficient coverage path planning for mobile disinfecting robots using graph-based representation of environment</article-title>. <source>Front. Robotics AI</source> <volume>8</volume>, <fpage>624333</fpage>. <pub-id pub-id-type="doi">10.3389/frobt.2021.624333</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oh</surname>
<given-names>J. S.</given-names>
</name>
<name>
<surname>Choi</surname>
<given-names>Y. H.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>J. B.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Complete coverage navigation of cleaning robots using triangular-cell-based map</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>51</volume>, <fpage>718</fpage>&#x2013;<lpage>726</lpage>. <pub-id pub-id-type="doi">10.1109/TIE.2004.825197</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oksanen</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Visala</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Coverage path planning algorithms for agricultural field machines</article-title>. <source>J. Field Robotics</source> <volume>26</volume>, <fpage>651</fpage>&#x2013;<lpage>668</lpage>. <pub-id pub-id-type="doi">10.1002/rob.20300</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Russell</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Norvig</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Artificial intelligence: A modern approach</source>. <edition>3rd edn</edition>. <publisher-loc>Upper Saddle River, NJ, USA</publisher-loc>: <publisher-name>Prentice Hall Press</publisher-name>.</citation>
</ref>
<ref id="B38">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Santos</surname>
<given-names>L. C.</given-names>
</name>
<name>
<surname>Santos</surname>
<given-names>F. N.</given-names>
</name>
<name>
<surname>Solteiro Pires</surname>
<given-names>E. J.</given-names>
</name>
<name>
<surname>Valente</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Costa</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Magalh&#xe3;es</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Path planning for ground robots in agriculture: A short review</article-title>,&#x201d; in <conf-name>2020 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC)</conf-name>, <conf-loc>Ponta Delgada, Portugal</conf-loc>, <conf-date>15-17 April 2020</conf-date>, <fpage>61</fpage>&#x2013;<lpage>66</lpage>. <pub-id pub-id-type="doi">10.1109/ICARSC49921.2020.9096177</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Shivashankar</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Jain</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Kuter</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Nau</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>Real-time planning for covering an initially-unknown spatial environment</article-title>,&#x201d; in <source>Proceedings of the 24th international Florida artificial intelligence research society</source>, <fpage>63</fpage>&#x2013;<lpage>68</lpage>. <comment>FLAIRS - 24</comment>.</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Valente</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Sanz</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Barrientos</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>de Frutos</surname>
<given-names>M. &#xc1;.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Del CerroNear-optimal coverage trajectories for image mosaicing using a mini quad-rotor over irregular-shaped fields</article-title>. <source>Precis. Agric.</source> <volume>14</volume>, <fpage>115</fpage>&#x2013;<lpage>132</lpage>. <pub-id pub-id-type="doi">10.1007/s11119-012-9287-0</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Vasquez-Gomez</surname>
<given-names>J. I.</given-names>
</name>
<name>
<surname>Herrera-Lozada</surname>
<given-names>J.-C.</given-names>
</name>
<name>
<surname>Olguin-Carbajal</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Coverage path planning for surveying disjoint areas</article-title>,&#x201d; in <conf-name>2018 International Conference on Unmanned Aircraft Systems (ICUAS)</conf-name>, <conf-loc>Dallas, TX, USA</conf-loc>, <conf-date>12-15 June 2018</conf-date>, <fpage>899</fpage>&#x2013;<lpage>904</lpage>. <pub-id pub-id-type="doi">10.1109/ICUAS.2018.8453386</pub-id>
</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vazquez-Carmona</surname>
<given-names>E. V.</given-names>
</name>
<name>
<surname>Vasquez-Gomez</surname>
<given-names>J. I.</given-names>
</name>
<name>
<surname>Herrera-Lozada</surname>
<given-names>J. C.</given-names>
</name>
<name>
<surname>Antonio-Cruz</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Coverage path planning for spraying drones</article-title>. <source>Comput. Industrial Eng.</source> <volume>168</volume>, <fpage>108125</fpage>. <pub-id pub-id-type="doi">10.1016/j.cie.2022.108125</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Viet</surname>
<given-names>H. H.</given-names>
</name>
<name>
<surname>Dang</surname>
<given-names>V.-H.</given-names>
</name>
<name>
<surname>Laskar</surname>
<given-names>M. N. U.</given-names>
</name>
<name>
<surname>Chung</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>BA&#x2a;: An online complete coverage algorithm for cleaning robots</article-title>. <source>Appl. Intell.</source> <volume>39</volume>, <fpage>217</fpage>&#x2013;<lpage>235</lpage>. <pub-id pub-id-type="doi">10.1007/s10489-012-0406-4</pub-id>
</citation>
</ref>
<ref id="B44">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Williams</surname>
<given-names>D. P.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>On optimal AUV track-spacing for underwater mine detection</article-title>,&#x201d; in <conf-name>2010 IEEE International Conference on Robotics and Automation</conf-name>, <conf-loc>Anchorage, AK, USA</conf-loc>, <conf-date>03-07 May 2010</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>4755</fpage>&#x2013;<lpage>4762</lpage>. <pub-id pub-id-type="doi">10.1109/ROBOT.2010.5509435</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2011</year>). <source>Graph planning for environmental coverage</source>. <comment>Thesis</comment> (<publisher-name>Carnegie Mellon University</publisher-name>).</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yakoubi</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Laskri</surname>
<given-names>M. T.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>The path planning of cleaner robot for coverage region using Genetic Algorithms</article-title>. <source>J. Innovation Digital Ecosyst.</source> <volume>3</volume>, <fpage>37</fpage>&#x2013;<lpage>43</lpage>. <pub-id pub-id-type="doi">10.1016/j.jides.2016.05.004</pub-id>
</citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>S. X.</given-names>
</name>
<name>
<surname>Luo</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>A neural network approach to complete coverage path planning</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Part B Cybern.</source> <volume>34</volume>, <fpage>718</fpage>&#x2013;<lpage>724</lpage>. <pub-id pub-id-type="doi">10.1109/tsmcb.2003.811769</pub-id>
</citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yordanova</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Gips</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Coverage path planning with track spacing adaptation for autonomous underwater vehicles</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>5</volume>, <fpage>4774</fpage>&#x2013;<lpage>4780</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2020.3003886</pub-id>
</citation>
</ref>
<ref id="B49">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zelinsky</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Jarvis</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Byrne</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yuta</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>1993</year>). <article-title>Planning paths of complete coverage of an unstructured environment by a mobile robot</article-title>. <source>Proc. Int&#x2019;l Conf. Adv. Robotics Mechatronics (ICARM)</source> <volume>13</volume>, <fpage>533</fpage>&#x2013;<lpage>538</lpage>.</citation>
</ref>
<ref id="B50">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Luo</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Complete coverage path planning of autonomous underwater vehicle based on GBNN algorithm</article-title>. <source>J. Intelligent Robotic Syst. Theory Appl.</source> <volume>94</volume>, <fpage>237</fpage>&#x2013;<lpage>249</lpage>. <pub-id pub-id-type="doi">10.1007/s10846-018-0787-7</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>