<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn><issn pub-type="ppub">0868-4952</issn><issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR477</article-id>
<article-id pub-id-type="doi">10.15388/22-INFOR477</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Efficient Speed-Up of the Smallest Enclosing Circle Algorithm</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Smolik</surname><given-names>Michal</given-names></name><email xlink:href="smolik@kiv.zcu.cz">smolik@kiv.zcu.cz</email><xref ref-type="aff" rid="j_infor477_aff_001"/><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>M. Smolik</bold> received the PhD degree in software engineering from the University of West Bohemia, Czech Republic, in 2020. He currently holds the position of researcher at the Department of Computer Graphics at the University of West Bohemia. His research areas are meshless methods for approximation and interpolation, specifically Radial basis functions. He works in the area of vector fields and develops basic algorithms connected with computer graphics.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Skala</surname><given-names>Vaclav</given-names></name><email xlink:href="skala@kiv.zcu.cz">skala@kiv.zcu.cz</email><xref ref-type="aff" rid="j_infor477_aff_001"/><bio>
<p><bold>V. Skala</bold> is a full professor of computer science at the University of West Bohemia, Plzen, Czech Republic. He received his ING. (equivalent of MSc) degree in 1975 from the Institute of Technology in Plzen and CSc. (equivalent of PhD) degree from the Czech Technical University in Prague, in 1981. In 1996, he became a full professor in computer science. His current research interests are computer graphics and visualization, applied mathematics, especially geometrical algebra, algorithms, and data structures.</p></bio>
</contrib>
<aff id="j_infor477_aff_001">Plzen, <institution>Faculty of Applied Sciences, University of West Bohemia</institution>, <country>Czech Republic</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2022</year></pub-date><pub-date pub-type="epub"><day>18</day><month>3</month><year>2022</year></pub-date><volume>33</volume><issue>3</issue><fpage>623</fpage><lpage>633</lpage><history><date date-type="received"><month>2</month><year>2021</year></date><date date-type="accepted"><month>2</month><year>2022</year></date></history>
<permissions><copyright-statement>© 2022 Vilnius University</copyright-statement><copyright-year>2022</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>The smallest enclosing circle is a well-known problem. In this paper, we propose modifications to speed-up the existing Weltzl’s algorithm. We perform the preprocessing to reduce as many input points as possible. The reduction step has lower computational complexity than the Weltzl’s algorithm and thus speed-ups its computation. Next, we propose some changes to Weltzl’s algorithm. In the end are summarized results, that show the speed-up for <inline-formula id="j_infor477_ineq_001"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${10^{6}}$]]></tex-math></alternatives></inline-formula> input points up to 100 times compared to the original Weltzl’s algorithm. Even more, the proposed algorithm is capable to process significantly larger data sets than the standard Weltzl’s algorithm.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>smallest enclosing circle</kwd>
<kwd>space subdivision</kwd>
<kwd>convex hull</kwd>
<kwd>speed-up</kwd>
<kwd>Weltzl’s algorithm</kwd>
</kwd-group>
<funding-group><funding-statement>The research was supported by the University of West Bohemia – Institutional research support No. 1311, and by SGS 2019-016.</funding-statement></funding-group>
</article-meta>
</front>
<body>
<sec id="j_infor477_s_001">
<label>1</label>
<title>Introduction</title>
<p>The smallest enclosing circle problem is defined as follows. Given a set of <inline-formula id="j_infor477_ineq_002"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula> points, find a circle with the smallest radius such that all the given points are contained in either inside of this circle or its circumference. The smallest enclosing circle meets all the following requirements:</p>
<list>
<list-item id="j_infor477_li_001">
<label>•</label>
<p>The maximal distance of all points to the center is minimal for the center of the smallest enclosing circle.</p>
</list-item>
<list-item id="j_infor477_li_002">
<label>•</label>
<p>Given any three points, we can uniquely define a circle, with at least two points of these points on the circumference.</p>
</list-item>
<list-item id="j_infor477_li_003">
<label>•</label>
<p>The smallest enclosing circle is unique for any set of <inline-formula id="j_infor477_ineq_003"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula> points.</p>
</list-item>
<list-item id="j_infor477_li_004">
<label>•</label>
<p>Given <inline-formula id="j_infor477_ineq_004"><alternatives><mml:math>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>⩾</mml:mo>
<mml:mn>2</mml:mn></mml:math><tex-math><![CDATA[$N\geqslant 2$]]></tex-math></alternatives></inline-formula> points in the plane, the smallest circle that encloses them contains at least two of the points within its circumference.</p>
</list-item>
</list>
<p>The brutal force algorithm has the time complexity <inline-formula id="j_infor477_ineq_005"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({N^{4}})$]]></tex-math></alternatives></inline-formula>. The algorithm tests all possible circles, i.e. all combinations of two points <inline-formula id="j_infor477_ineq_006"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({N^{2}})$]]></tex-math></alternatives></inline-formula> and all combinations of three points <inline-formula id="j_infor477_ineq_007"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({N^{4}})$]]></tex-math></alternatives></inline-formula>. To test if one circle is the smallest enclosing circle takes <inline-formula id="j_infor477_ineq_008"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(N)$]]></tex-math></alternatives></inline-formula>. This whole brutal force algorithm runs in <inline-formula id="j_infor477_ineq_009"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O({N^{4}})$]]></tex-math></alternatives></inline-formula> time.</p>
<p>There are two best known algorithms, i.e. the Welzl’s algorithm, which has expected <inline-formula id="j_infor477_ineq_010"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">expected</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${O_{\textit{expected}}}(N)$]]></tex-math></alternatives></inline-formula> running time (Welzl, <xref ref-type="bibr" rid="j_infor477_ref_013">1991</xref>), and the Megiddo’s algorithm, which has expected <inline-formula id="j_infor477_ineq_011"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">expected</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${O_{\textit{expected}}}(N)$]]></tex-math></alternatives></inline-formula> running time (Megiddo, <xref ref-type="bibr" rid="j_infor477_ref_006">1983</xref>). The technique prune and search is used in Megiddo’s algorithm (Megiddo, <xref ref-type="bibr" rid="j_infor477_ref_006">1983</xref>) to reduce the problem size by removing approximately <inline-formula id="j_infor477_ineq_012"><alternatives><mml:math>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" stretchy="false">/</mml:mo>
<mml:mn>16</mml:mn></mml:math><tex-math><![CDATA[$N/16$]]></tex-math></alternatives></inline-formula> unnecessary points. The algorithm is rather complicated which resulted to a very high multiplicative constant. The reduction needs to solve twice the similar problem where the centre of the enclosing circle is located using the construction of bisectors of points. The randomized incremental construction is used in the Welzl’s algorithm (Welzl, <xref ref-type="bibr" rid="j_infor477_ref_013">1991</xref>). The algorithm iterates over all points. In case, the point is not inside the actual smallest enclosing circle, the point must be part of the new smallest enclosing circle in the next step. Using this basic knowledge the final minimal enclosing circle is recursively constructed.</p>
<p>The Skyum algorithm (Skyum, <xref ref-type="bibr" rid="j_infor477_ref_012">1991</xref>) presents a simple iterative <inline-formula id="j_infor477_ineq_013"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(N\log N)$]]></tex-math></alternatives></inline-formula> algorithm for computing the smallest enclosing circle. This is not optimal but its simplicity makes it a better alternative for medium-sized problems than both previous algorithms. The Gau algorithm (Gao and Wang, <xref ref-type="bibr" rid="j_infor477_ref_003">2018</xref>) computes the minimal enclosing disk in an iterative manner and needs to define some distance parameter delta value that is used in the algorithm.</p>
<p>Other alternative algorithms (Har-Peled and Mazumdar, <xref ref-type="bibr" rid="j_infor477_ref_004">2003</xref>, <xref ref-type="bibr" rid="j_infor477_ref_005">2005</xref>) compute the smallest enclosing circle not for all input points but for at least <italic>k</italic> points. It can also compute an approximation of this circle, which can be useful in some applications as well. The algorithm of the smallest enclosing circle of at least <italic>k</italic> points is described in Efrat <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor477_ref_001">1993</xref>, <xref ref-type="bibr" rid="j_infor477_ref_002">1994</xref>), too. The paper (Xu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor477_ref_014">2003</xref>) summarizes four different approaches for the location of a minimal enclosing circle for a set of fixed circles.</p>
<p>One of the first sophisticated geometry algorithms developed with many variations of it is the convex hull algorithm. The convex hull is the minimal set of points, that form a boundary for all other points, i.e. all other points are located inside. There are numerous applications for convex hulls: collision avoidance, maximum distance using convex hull diameter for large data sets (Skala, <xref ref-type="bibr" rid="j_infor477_ref_007">2013</xref>; Skala and Majdisova, <xref ref-type="bibr" rid="j_infor477_ref_008">2015</xref>), hidden object determination, shape analysis, point inside polygon (Skala and Smolik, <xref ref-type="bibr" rid="j_infor477_ref_009">2015</xref>).</p>
<p>In this paper, an adapted convex hull algorithm from Skala <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>), based on Skala (<xref ref-type="bibr" rid="j_infor477_ref_007">2013</xref>), is used to speed-up the computation of the smallest enclosing circle. This convex hull algorithm uses the space subdivision to achieve time complexity of <inline-formula id="j_infor477_ineq_014"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">h</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(N+s\log h)$]]></tex-math></alternatives></inline-formula>, where <italic>s</italic> is number of suspicious points to be on convex hull and <italic>h</italic> is number of points on convex hull. It is expected that <inline-formula id="j_infor477_ineq_015"><alternatives><mml:math>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo movablelimits="false">log</mml:mo>
<mml:mi mathvariant="italic">h</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≪</mml:mo>
<mml:mi mathvariant="italic">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$O(s\log h)\ll O(N)$]]></tex-math></alternatives></inline-formula>, thus the expected time complexity of the convex hull algorithm is <inline-formula id="j_infor477_ineq_016"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">expected</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${O_{\textit{expected}}}(N)$]]></tex-math></alternatives></inline-formula> (Skala <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>).</p>
</sec>
<sec id="j_infor477_s_002">
<label>2</label>
<title>Proposed Approach</title>
<p>The smallest enclosing circle contains within its circumference only points from the convex hull. To speed-up the processing time, two step algorithm was developed. The first step is a removal of all points that cannot form the smallest enclosing circle. While the second one is a computation of the smallest enclosing circle using the Weltzl’s algorithm (Welzl, <xref ref-type="bibr" rid="j_infor477_ref_013">1991</xref>) as it is fast and easy to implement.</p>
<p>In order to obtain a significant speed-up of the input points reduction, the convex hull construction needs to have a lower computational cost than the Weltzl’s algorithm. The convex hull algorithm (Skala <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>) uses space subdivision technique to speed-up the computation with <inline-formula id="j_infor477_ineq_017"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">O</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">expected</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">N</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${O_{\textit{expected}}}(N)$]]></tex-math></alternatives></inline-formula> time complexity.</p>
<p>The proposed algorithm for the smallest enclosing circle is summarized in Algorithm <xref rid="j_infor477_fig_001">1</xref> and will be described in more detail in the following sub-sections.</p>
<fig id="j_infor477_fig_001">
<label>Algorithm 1</label>
<caption>
<p>Smallest enclosing circle.</p>
</caption>
<graphic xlink:href="infor477_g001.jpg"/>
</fig>
<sec id="j_infor477_s_003">
<label>2.1</label>
<title>Convex Hull Construction</title>
<p>The convex hull algorithm (Skala <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>) significantly speeds-up the construction of the convex hull by reducing the input points to only a few ones that are suspicious of forming the convex hull. The detailed algorithm is described in Skala <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>). We summarize only the important steps without details.</p>
<fig id="j_infor477_fig_002">
<label>Fig. 1</label>
<caption>
<p>Convex hull construction. Blue lines represent the convex hull.</p>
</caption>
<graphic xlink:href="infor477_g002.jpg"/>
</fig>
<p>The first step is to find an estimation of the axis-aligned bounding box (AABB) if not known. This is done by searching only <inline-formula id="j_infor477_ineq_018"><alternatives><mml:math>
<mml:mn>10</mml:mn>
<mml:mi mathvariant="normal">%</mml:mi></mml:math><tex-math><![CDATA[$10\% $]]></tex-math></alternatives></inline-formula> of input points. A convex polygon is estimated from those points defining the estimated AABB. All points that are inside of this polygon cannot form the convex hull and thus are discarded (the gray part in Fig. <xref rid="j_infor477_fig_002">1</xref>).</p>
<p>The next step is to create a star shape division of the remaining points. In each cell, we determine points with the maximal distance from the centre, that can form the convex hull (there can be more points in each cell). All other points are discarded. The remaining points (connected with red lines in Fig. <xref rid="j_infor477_fig_002">1</xref>) are the result of the reduction. Now, the actual algorithm for convex hull construction using only the suspicious points is used.</p>
</sec>
<sec id="j_infor477_s_004">
<label>2.2</label>
<title>Smallest Enclosing Circle Computation</title>
<p>The Welzl’s algorithm for the smallest enclosing circle is recursive. Originally, the algorithm is randomized. However, in this approach, it is used without randomization as the input points are already sorted in the required order enabling speed-up of the computation significantly.</p>
<p>One limitation of the Weltzl’s algorithm is the recursion as it allows to process only limited number of input points, due to the depth of recursion. We overcome this limitation by reducing the input points to only points on the convex hull. Now, the amount of points to be processed is limited only by available RAM memory.</p>
<p>The original algorithm selects points totally in a random manner. However, if the first selected points form a circle, which is big enough to contain almost all the points, then the algorithm will speed-up. In the first step, we locate the two points <inline-formula id="j_infor477_ineq_019"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}}\}$]]></tex-math></alternatives></inline-formula> with maximum distance from each other using the algorithm (Skala and Majdisova, <xref ref-type="bibr" rid="j_infor477_ref_008">2015</xref>). Next, we locate the point <inline-formula id="j_infor477_ineq_020"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{3}}$]]></tex-math></alternatives></inline-formula>, which has the maximal distance from the center of previously located two points <inline-formula id="j_infor477_ineq_021"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}}\}$]]></tex-math></alternatives></inline-formula>. Last, we locate one more point <inline-formula id="j_infor477_ineq_022"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{4}}$]]></tex-math></alternatives></inline-formula>, which has the maximal distance from point <inline-formula id="j_infor477_ineq_023"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${C_{3}}$]]></tex-math></alternatives></inline-formula>. All of those four points are moved to the end of input points for modified Weltzl’s algorithm and the rest of the points are randomly shuffled. In the case, when the smallest enclosing circle is defined only by two points, then these two points are exactly <inline-formula id="j_infor477_ineq_024"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}}\}$]]></tex-math></alternatives></inline-formula> and the points <inline-formula id="j_infor477_ineq_025"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{3}},{C_{4}}\}$]]></tex-math></alternatives></inline-formula> are the same as <inline-formula id="j_infor477_ineq_026"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}}\}$]]></tex-math></alternatives></inline-formula>.</p>
<p>The input for the Weltzl’s algorithm is a set of points <italic>P</italic>. In each step, the algorithm selects the last one point <italic>p</italic> from <italic>P</italic>, and recursively finds the smallest circle containing <inline-formula id="j_infor477_ineq_027"><alternatives><mml:math>
<mml:mi mathvariant="italic">P</mml:mi>
<mml:mo>−</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$P-\{p\}$]]></tex-math></alternatives></inline-formula>, i.e. all of the other points in <italic>P</italic> except of point <italic>p</italic>. If the point <italic>p</italic> is also included in the returned circle, then it is the smallest enclosing circle for the whole set of points <italic>P</italic>.</p>
<p>Otherwise, if the point <italic>p</italic> lies outside the circle, it must lie on the boundary of the resulting circle. In the next step, it recurses with <italic>p</italic> as an additional point in <italic>R</italic> (points known to be on the boundary for already tested points from <italic>P</italic>).</p>
<p>The recursion terminates when <italic>P</italic> is empty, and a solution can be found from the points in <italic>R</italic>. In case of 0 or 1 points, the circle is only none or one point. The smallest enclosing circle for 2 points is defined, that has its centre in the middle of the two points and radius half of the distance between the two points. The last case are 3 points, where the smallest enclosing circle is the circumcircle of the triangle described by the points.</p>
<p>When <italic>R</italic> contains 3 points, the recursion terminates, as all points in <italic>P</italic> are already inside of the circle formed by <italic>R</italic>.</p>
</sec>
</sec>
<sec id="j_infor477_s_005">
<label>3</label>
<title>Experimental Results</title>
<p>In this chapter, we summarize the obtained results of the proposed algorithm for the smallest enclosing circle of points in <inline-formula id="j_infor477_ineq_028"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula>. The proposed approach is capable to compute the smallest enclosing circle for both synthetic and real data sets as well. The synthetic data sets were used to measure the performance of the proposed algorithm. The result of the proposed approach on real data sets is visualized in Fig. <xref rid="j_infor477_fig_003">2</xref>. The 3 points that define the smallest enclosing circle for bunny were actually selected between the first 4 points that are processed at the beginning of the Weltzl’s algorithm. For the dragon data set were 2 out of 3 points that define the smallest enclosing circle selected to be in the first 4 points that are processed by Weltzl’s algorithm.</p>
<fig id="j_infor477_fig_003">
<label>Fig. 2</label>
<caption>
<p>The smallest enclosing circle for real data sets. The <inline-formula id="j_infor477_ineq_029"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula> input points are created by projection of all <inline-formula id="j_infor477_ineq_030"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$3D$]]></tex-math></alternatives></inline-formula> points into <inline-formula id="j_infor477_ineq_031"><alternatives><mml:math>
<mml:mi mathvariant="italic">x</mml:mi>
<mml:mi mathvariant="italic">y</mml:mi></mml:math><tex-math><![CDATA[$xy$]]></tex-math></alternatives></inline-formula> plane. The models are from the Stanford <inline-formula id="j_infor477_ineq_032"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$3D$]]></tex-math></alternatives></inline-formula> scanning repository (<uri>http://www.graphics.stanford.edu/data/3Dscanrep/</uri>).</p>
</caption>
<graphic xlink:href="infor477_g003.jpg"/>
</fig>
<p>To test the proposed approach, we used several data sets with different types of point distribution in <inline-formula id="j_infor477_ineq_033"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula>. Some of the distributions are well known, randomly distributed uniform points inside a unit square or inside a unit circle and points with Gaussian distribution. Then we also used Halton points and Gauss Ring points. The last two distributions are described in Skala <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor477_ref_011">2016b</xref>). The visualization of all tested distributions of points together with their convex hulls is presented in Fig. <xref rid="j_infor477_fig_004">3</xref>.</p>
<fig id="j_infor477_fig_004">
<label>Fig. 3</label>
<caption>
<p>Distributions of points used for testing. The blue line represents the convex hull of the data set, i.e. the initial points for Weltzl’s algorithm.</p>
</caption>
<graphic xlink:href="infor477_g004.jpg"/>
</fig>
<p>The main purpose of the proposed approach is the speed-up of the Weltzl’s algorithm. The running time of the algorithm for the smallest enclosing circle depends on the distribution of points and of course on the number of input points. We performed <inline-formula id="j_infor477_ineq_034"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${10^{3}}$]]></tex-math></alternatives></inline-formula> tests for each points distribution from Fig. <xref rid="j_infor477_fig_004">3</xref> and for each different number of input points. The running time of the algorithm for one input data set was measured as running time of <inline-formula id="j_infor477_ineq_035"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mn>10</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${10^{2}}-{10^{3}}$]]></tex-math></alternatives></inline-formula> repetitions divided by the number of repetitions. The random generator was initialized with the same seed number for each of those repetitions. The times were measured for the original Weltzl’s algorithm and in the first phase also for the proposed approach without the selection of four best candidates <inline-formula id="j_infor477_ineq_036"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}},{C_{3}},{C_{4}}\}$]]></tex-math></alternatives></inline-formula>. As the algorithm is randomized, the running time depends on the randomization and thus we computed the minimal and maximal running time for each configuration as well as the 33th% fastest and 33th% slowest time. The visualization of these four running times is described in Fig. <xref rid="j_infor477_fig_005">4</xref>. The resulting running times are visualized in Figs. <xref rid="j_infor477_fig_006">5</xref>–<xref rid="j_infor477_fig_010">9</xref>. It should be noted, that there is a logarithmic scaling on both axes. The horizontal axis on graphs with proposed approach presents higher maximal number of input points compared to graphs with standard Weltzl’s algorithm.</p>
<fig id="j_infor477_fig_005">
<label>Fig. 4</label>
<caption>
<p>Definition of symbol used in graphs with running times.</p>
</caption>
<graphic xlink:href="infor477_g005.jpg"/>
</fig>
<fig id="j_infor477_fig_006">
<label>Fig. 5</label>
<caption>
<p>Running times in <inline-formula id="j_infor477_ineq_037"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[\mu s]$]]></tex-math></alternatives></inline-formula> (vertical axis) for different number of uniform points in circle (horizontal axis).</p>
</caption>
<graphic xlink:href="infor477_g006.jpg"/>
</fig>
<fig id="j_infor477_fig_007">
<label>Fig. 6</label>
<caption>
<p>Running times in <inline-formula id="j_infor477_ineq_038"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[\mu s]$]]></tex-math></alternatives></inline-formula> (vertical axis) for different number of Gauss Ring points (horizontal axis).</p>
</caption>
<graphic xlink:href="infor477_g007.jpg"/>
</fig>
<fig id="j_infor477_fig_008">
<label>Fig. 7</label>
<caption>
<p>Running times in <inline-formula id="j_infor477_ineq_039"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[\mu s]$]]></tex-math></alternatives></inline-formula> (vertical axis) for different number of Gauss points (horizontal axis).</p>
</caption>
<graphic xlink:href="infor477_g008.jpg"/>
</fig>
<fig id="j_infor477_fig_009">
<label>Fig. 8</label>
<caption>
<p>Running times in <inline-formula id="j_infor477_ineq_040"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[\mu s]$]]></tex-math></alternatives></inline-formula> (vertical axis) for different number of Halton points (horizontal axis).</p>
</caption>
<graphic xlink:href="infor477_g009.jpg"/>
</fig>
<fig id="j_infor477_fig_010">
<label>Fig. 9</label>
<caption>
<p>Running times in <inline-formula id="j_infor477_ineq_041"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">[</mml:mo>
<mml:mi mathvariant="italic">μ</mml:mi>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo fence="true" stretchy="false">]</mml:mo></mml:math><tex-math><![CDATA[$[\mu s]$]]></tex-math></alternatives></inline-formula> (vertical axis) for different number of uniform points in square (horizontal axis).</p>
</caption>
<graphic xlink:href="infor477_g010.jpg"/>
</fig>
<p>It can be seen that for the original Weltzl’s algorithm there is a difference between the fastest and the slowest running time for one distribution and one number of points almost every time at least 10 times different. This is a huge difference in the algorithm behaviour. The proposed approach without the selection of four best candidates <inline-formula id="j_infor477_ineq_042"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}},{C_{3}},{C_{4}}\}$]]></tex-math></alternatives></inline-formula> has the difference between slowest and fastest time mostly around 3.2 times, i.e. much better ratio resulting to stability of algorithm behaviour.</p>
<p>It can be also seen that we measured the running times of Weltzl’s algorithm for a lower maximal number of input points. The reason for this is that this was the maximal size of the input data set, as there is a significant limitation due to the maximal depth of recursion.</p>
<p>In the second set of tests, we measured the running times with the same distributions and the same number of points for our proposed approach (with all steps of the algorithm, i.e. also with the selection of four best candidates <inline-formula id="j_infor477_ineq_043"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{{C_{1}},{C_{2}},{C_{3}},{C_{4}}\}$]]></tex-math></alternatives></inline-formula>). The fastest times are the same as in Figs. <xref rid="j_infor477_fig_006">5</xref>b–<xref rid="j_infor477_fig_010">9</xref>b but the slowest times are lower. The slowest times are now only about 1.9 times slower than the fastest times. This is a great improvement from the previous 3.2 times difference.</p>
<p>We also computed the speed-up of our algorithm to the Weltzl’s algorithm. We used the average running times to compute the speed-up (see Fig. <xref rid="j_infor477_fig_011">10</xref>). It can be seen that with an increasing number of input points, the speed-up increases as well. This proves, that our proposed approach is not only faster, but it has also better time complexity than the original Weltzl’s algorithm.</p>
<fig id="j_infor477_fig_011">
<label>Fig. 10</label>
<caption>
<p>Speed-up of average running times of the proposed method compared to the standard Weltzl’s algorithm.</p>
</caption>
<graphic xlink:href="infor477_g011.jpg"/>
</fig>
</sec>
<sec id="j_infor477_s_006">
<label>4</label>
<title>Conclusion</title>
<p>We proposed a simple and efficient speed-up of the Weltzl’s algorithm for computation of the smallest enclosing circle of <inline-formula id="j_infor477_ineq_044"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula> points. The proposed approach is easy to implement. It reduces the randomness of the algorithm and speeds-up the computation, too. The proposed algorithm also improves the computational complexity, which is beneficial for a higher number of processed input points. Also, the maximal number of points, that can be processed, is significantly increased, as the required depth of recursion is dramatically decreased.</p>
<p>The proposed algorithm for computation of the smallest enclosing circle of <inline-formula id="j_infor477_ineq_045"><alternatives><mml:math>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$2D$]]></tex-math></alternatives></inline-formula> points can be adapted for the computation of the smallest enclosing sphere of <inline-formula id="j_infor477_ineq_046"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$3D$]]></tex-math></alternatives></inline-formula> points using convex hull computation in <inline-formula id="j_infor477_ineq_047"><alternatives><mml:math>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="italic">D</mml:mi></mml:math><tex-math><![CDATA[$3D$]]></tex-math></alternatives></inline-formula> (Skala <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor477_ref_010">2016a</xref>). Another possible improvement could be usage of the smallest enclosing circle/sphere of the points forming axis-aligned bounding box as the initial step because all points inside cannot form the smallest enclosing circle/sphere.</p>
</sec>
</body>
<back>
<ack id="j_infor477_ack_001">
<title>Acknowledgements</title>
<p>The authors would like to thank their colleagues at the University of West Bohemia, Plzen, for their discussions and suggestions.</p></ack>
<ref-list id="j_infor477_reflist_001">
<title>References</title>
<ref id="j_infor477_ref_001">
<mixed-citation publication-type="chapter"><string-name><surname>Efrat</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Sharir</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Ziv</surname>, <given-names>A.</given-names></string-name> (<year>1993</year>). <chapter-title>Computing the smallest k-enclosing circle and related problems</chapter-title>. In: <source>Workshop on Algorithms and Data Structures</source>. <publisher-name>Springer</publisher-name>, pp. <fpage>325</fpage>–<lpage>336</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_002">
<mixed-citation publication-type="journal"><string-name><surname>Efrat</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Sharir</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Ziv</surname>, <given-names>A.</given-names></string-name> (<year>1994</year>). <article-title>Computing the smallest <italic>k</italic>-enclosing circle and related problems</article-title>. <source>Computational Geometry</source>, <volume>4</volume>(<issue>3</issue>), <fpage>119</fpage>–<lpage>136</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_003">
<mixed-citation publication-type="chapter"><string-name><surname>Gao</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>C.</given-names></string-name> (<year>2018</year>). <chapter-title>A new algorithm for the smallest enclosing circle</chapter-title>. In: <source>2018 8th International Conference on Management, Education and Information (MEICI 2018)</source>, <publisher-name>Atlantis Press</publisher-name>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_004">
<mixed-citation publication-type="chapter"><string-name><surname>Har-Peled</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Mazumdar</surname>, <given-names>S.</given-names></string-name> (<year>2003</year>). <chapter-title>Fast algorithms for computing the smallest <italic>k</italic>-enclosing disc</chapter-title>. In: <source>European Symposium on Algorithms</source>. <publisher-name>Springer</publisher-name>, pp. <fpage>278</fpage>–<lpage>288</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Har-Peled</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Mazumdar</surname>, <given-names>S.</given-names></string-name> (<year>2005</year>). <article-title>Fast algorithms for computing the smallest <italic>k</italic>-enclosing circle</article-title>. <source>Algorithmica</source>, <volume>41</volume>(<issue>3</issue>), <fpage>147</fpage>–<lpage>157</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>Megiddo</surname>, <given-names>N.</given-names></string-name> (<year>1983</year>). <article-title>Linear-time algorithms for linear programming in <italic>R</italic><sup>3</sup> and related problems</article-title>. <source>SIAM Journal on Computing</source>, <volume>12</volume>(<issue>4</issue>), <fpage>759</fpage>–<lpage>776</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_007">
<mixed-citation publication-type="chapter"><string-name><surname>Skala</surname>, <given-names>V.</given-names></string-name> (<year>2013</year>). <chapter-title>Fast <italic>O</italic><sub><italic>expected</italic></sub>(<italic>N</italic>) algorithm for finding exact maximum distance in E2 instead of <italic>O</italic>(<italic>N</italic><sup>2</sup>) or <italic>O</italic>(<italic>N</italic>log <italic>N</italic>)</chapter-title>. In: <source>AIP Conference Proceedings</source>, Vol. <volume>1558</volume>. <publisher-name>American Institute of Physics</publisher-name>, pp. <fpage>2496</fpage>–<lpage>2499</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_008">
<mixed-citation publication-type="chapter"><string-name><surname>Skala</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Majdisova</surname>, <given-names>Z.</given-names></string-name> (<year>2015</year>). <chapter-title>Fast algorithm for finding maximum distance with space subdivision in E2</chapter-title>. In: <source>International Conference on Image and Graphics</source>. <publisher-name>Springer</publisher-name>, pp. <fpage>261</fpage>–<lpage>274</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_009">
<mixed-citation publication-type="chapter"><string-name><surname>Skala</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Smolik</surname>, <given-names>M.</given-names></string-name> (<year>2015</year>). <chapter-title>A point in non-convex polygon location problem using the polar space subdivision in E2</chapter-title>. In: <source>International Conference on Image and Graphics</source>. <publisher-name>Springer</publisher-name>, pp. <fpage>394</fpage>–<lpage>404</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Skala</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Majdisova</surname>, <given-names>Z.</given-names></string-name>, <string-name><surname>Smolik</surname>, <given-names>M.</given-names></string-name> (<year>2016</year>a). <article-title>Space subdivision to speed-up convex hull construction in E3</article-title>. <source>Advances in Engineering Software</source>, <volume>91</volume>, <fpage>12</fpage>–<lpage>22</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_011">
<mixed-citation publication-type="chapter"><string-name><surname>Skala</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Smolik</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Majdisova</surname>, <given-names>Z.</given-names></string-name> (<year>2016</year>b). <chapter-title>Reducing the number of points on the convex hull calculation using the polar space subdivision in E2</chapter-title>. In: <source>2016 29th SIBGRAPI Conference on Graphics, Patterns and Images (SIBGRAPI)</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>40</fpage>–<lpage>47</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Skyum</surname>, <given-names>S.</given-names></string-name> (<year>1991</year>). <article-title>A simple algorithm for computing the smallest enclosing circle</article-title>. <source>Information Processing Letters</source>, <volume>37</volume>(<issue>3</issue>), <fpage>121</fpage>–<lpage>125</lpage>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_013">
<mixed-citation publication-type="chapter"><string-name><surname>Welzl</surname>, <given-names>E.</given-names></string-name> (<year>1991</year>). <chapter-title>Smallest enclosing disks (balls and ellipsoids)</chapter-title>. In: <string-name><surname>Maurer</surname>, <given-names>H.</given-names></string-name> (Ed.), <source>New Results and New Trends in Computer Science</source>, <series>Lecture Notes in Computer Science</series>, Vol. <volume>555</volume>. <publisher-name>Springer</publisher-name>, <publisher-loc>Berlin, Heidelberg</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor477_ref_014">
<mixed-citation publication-type="journal"><string-name><surname>Xu</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Freund</surname>, <given-names>R.M.</given-names></string-name>, <string-name><surname>Sun</surname>, <given-names>J.</given-names></string-name> (<year>2003</year>). <article-title>Solution methodologies for the smallest enclosing circle problem</article-title>. <source>Computational Optimization and Applications</source>, <volume>25</volume>(<issue>1–3</issue>), <fpage>283</fpage>–<lpage>292</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
