<?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">INFOR568</article-id>
<article-id pub-id-type="doi">10.15388/24-INFOR568</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>Beyond Quasi-Adjoint Graphs: On Polynomial-Time Solvable Cases of the Hamiltonian Cycle and Path Problems</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-9863-5412</contrib-id>
<name><surname>Kasprzak</surname><given-names>Marta</given-names></name><email xlink:href="mkasprzak@cs.put.poznan.pl">mkasprzak@cs.put.poznan.pl</email><xref ref-type="aff" rid="j_infor568_aff_001"/><bio>
<p><bold>M. Kasprzak</bold> is a professor at the Institute of Computing Science, Poznan University of Technology, Poland. She focuses her scientific research on bioinformatics, with a stress put on theoretical analysis of problems: combinatorial modelling of real-world problems, determining their computational complexity, designing algorithms. She published 73 articles and monographs, 43 of them indexed in Web of Science. She is a laureate of, among others, the Prime Minister Award for her doctoral dissertation, Award of the IV Division of Technical Sciences of the Polish Academy of Sciences in the field of computer science for her habilitation thesis, and the Medal of the National Education Commission.</p></bio>
</contrib>
<aff id="j_infor568_aff_001">Institute of Computing Science, <institution>Poznan University of Technology</institution>, Piotrowo 2, 60-965 Poznan, <country>Poland</country></aff>
</contrib-group>
<pub-date pub-type="ppub"><year>2024</year></pub-date><pub-date pub-type="epub"><day>18</day><month>9</month><year>2024</year></pub-date><volume>35</volume><issue>4</issue><fpage>807</fpage><lpage>816</lpage><history><date date-type="received"><month>9</month><year>2023</year></date><date date-type="accepted"><month>9</month><year>2024</year></date></history>
<permissions><copyright-statement>© 2024 Vilnius University</copyright-statement><copyright-year>2024</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 Hamiltonian cycle and path problems are fundamental in graph theory and useful in modelling real-life problems. Research in this area is directed toward designing better and better algorithms for general problems, but also toward defining new special cases for which exact polynomial-time algorithms exist. In the paper, such new classes of digraphs are proposed. The classes include, among others, quasi-adjoint graphs, which are a superclass of adjoints, directed line graphs, and graphs modelling a DNA sequencing problem.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>directed line graph</kwd>
<kwd>quasi-adjoint graph</kwd>
<kwd>Hamiltonian cycle</kwd>
<kwd>Hamiltonian path</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="j_infor568_s_001">
<label>1</label>
<title>Introduction</title>
<p>The problem of searching for a Hamiltonian cycle or path is fundamental in graph theory and useful in modelling real-life problems. Electronic circuit design, job scheduling, and sequencing of DNA chains are just a few examples of such an application. In its decision version, the problem for directed or undirected graphs belongs to the NP-complete class of computationally hard problems. As the problem is regularly used, a lot of effort was put into designing more and more efficient algorithms (see, e.g., Jäger and Zhang, <xref ref-type="bibr" rid="j_infor568_ref_015">2010</xref>; Björklund, <xref ref-type="bibr" rid="j_infor568_ref_005">2014</xref>). On a more theoretical ground, research was directed toward proving polynomial-time solvability of Hamiltonicity for subsequent classes of graphs. There are many works related to the problem in undirected graphs (see surveys of Gould, <xref ref-type="bibr" rid="j_infor568_ref_013">1991</xref>; Gross <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_014">2013</xref>), its directed version was not so extensively studied (e.g., Favaron and Ordaz, <xref ref-type="bibr" rid="j_infor568_ref_011">1986</xref>; Bang-Jensen and Gutin, <xref ref-type="bibr" rid="j_infor568_ref_001">1999</xref>).</p>
<p>In the paper, superclasses of (directed) quasi-adjoint graphs are defined and proven to have a polynomial-time solution of the Hamiltonian cycle problem and, partially, the Hamiltonian path problem. Section <xref rid="j_infor568_s_002">2</xref> introduces necessary definitions and summarizes previous work, Section <xref rid="j_infor568_s_003">3</xref> contains theoretical results including algorithms, and a conclusion is given in Section <xref rid="j_infor568_s_004">4</xref>.</p>
</sec>
<sec id="j_infor568_s_002">
<label>2</label>
<title>Theoretical Background</title>
<p>The following statements refer to <italic>directed graphs</italic> with, in general, loops and multiple arcs accepted. Throughout the paper, standard terminology from graph theory is used, see, e.g. Berge (<xref ref-type="bibr" rid="j_infor568_ref_003">1973</xref>). Let <italic>V</italic> stand for the set of vertices of a graph <inline-formula id="j_infor568_ineq_001"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$G=(V,A)$]]></tex-math></alternatives></inline-formula>, and <italic>A</italic> for its set of arcs. The Hamiltonian cycle (path) in <italic>G</italic> is a directed cycle (path) including every vertex <inline-formula id="j_infor568_ineq_002"><alternatives><mml:math>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$v\in V$]]></tex-math></alternatives></inline-formula> exactly once; the Eulerian cycle (path) is a directed cycle (path) including every arc <inline-formula id="j_infor568_ineq_003"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi></mml:math><tex-math><![CDATA[$a\in A$]]></tex-math></alternatives></inline-formula> exactly once. Transpose graph <inline-formula id="j_infor568_ineq_004"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}=(V,{A^{\prime }})$]]></tex-math></alternatives></inline-formula> of a digraph <inline-formula id="j_infor568_ineq_005"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$G=(V,A)$]]></tex-math></alternatives></inline-formula> has <inline-formula id="j_infor568_ineq_006"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">A</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$(u,v)\in {A^{\prime }}$]]></tex-math></alternatives></inline-formula> if and only if <inline-formula id="j_infor568_ineq_007"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi></mml:math><tex-math><![CDATA[$(v,u)\in A$]]></tex-math></alternatives></inline-formula>.</p>
<p>The problem of searching for a Hamiltonian cycle or a Hamiltonian path is NP-hard even if all vertices in a digraph have their indegree and outdegree not exceeding 2 (Garey and Johnson, <xref ref-type="bibr" rid="j_infor568_ref_012">1979</xref>). It is solvable in polynomial time when restricted to special subclasses of digraphs, for example, acyclic digraphs (Lawler, <xref ref-type="bibr" rid="j_infor568_ref_018">1976</xref>), directed line graphs (Kasteleyn, <xref ref-type="bibr" rid="j_infor568_ref_017">1963</xref>), or specific variations of dense digraphs (Bang-Jensen and Gutin, <xref ref-type="bibr" rid="j_infor568_ref_002">2002</xref>).</p>
<p>A <italic>directed line graph</italic> is a 1-graph (a graph with no multiple arcs) where the following holds for all pairs <inline-formula id="j_infor568_ineq_008"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> of its vertices: 
<disp-formula id="j_infor568_eq_001">
<alternatives><mml:math display="block">
<mml:mtable columnspacing="4.0pt 4.0pt 4.0pt" equalrows="false" columnlines="none none none" equalcolumns="false" columnalign="right right left left">
<mml:mtr>
<mml:mtd class="array">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:mo>∧</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array"/>
<mml:mtd class="array"/>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{r@{\hskip4.0pt}r@{\hskip4.0pt}l@{\hskip4.0pt}l}{\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)\ne \varnothing & \hspace{1em}\Rightarrow & \hspace{1em}{\mathrm{N}^{+}}(u)={\mathrm{N}^{+}}(v)& \hspace{1em}\wedge \\ {} & & \hspace{1em}{\mathrm{N}^{-}}(u)\cap {\mathrm{N}^{-}}(v)=\varnothing ,\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor568_ineq_009"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> is the set of (direct) successors of vertex <italic>u</italic> and <inline-formula id="j_infor568_ineq_010"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{-}}(u)$]]></tex-math></alternatives></inline-formula> is the set of its (direct) predecessors (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_008">1999</xref>). As defined in Berge (<xref ref-type="bibr" rid="j_infor568_ref_003">1973</xref>) in the context of directed graphs, <italic>adjoint</italic> <inline-formula id="j_infor568_ineq_011"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$G=(V,A)$]]></tex-math></alternatives></inline-formula> of a graph <inline-formula id="j_infor568_ineq_012"><alternatives><mml:math>
<mml:mi mathvariant="italic">H</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">U</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$H=(U,V)$]]></tex-math></alternatives></inline-formula> is a 1-graph whose vertices represent arcs of <italic>H</italic> and in which <inline-formula id="j_infor568_ineq_013"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">A</mml:mi></mml:math><tex-math><![CDATA[$(u,v)\in A$]]></tex-math></alternatives></inline-formula> if and only if the head of arc <italic>u</italic> is the tail of arc <italic>v</italic> in <italic>H. H</italic> is not necessarily a 1-graph. If <italic>H</italic> is a 1-graph, its adjoint <italic>G</italic> is a directed line graph (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_008">1999</xref>). 1-graph <italic>G</italic> is an adjoint if and only if the following property is satisfied for all <inline-formula id="j_infor568_ineq_014"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula> (Berge, <xref ref-type="bibr" rid="j_infor568_ref_003">1973</xref>): 
<disp-formula id="j_infor568_eq_002">
<alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)\ne \varnothing \hspace{1em}\Rightarrow \hspace{1em}{\mathrm{N}^{+}}(u)={\mathrm{N}^{+}}(v).\]]]></tex-math></alternatives>
</disp-formula> 
The relation between vertices of adjoint <italic>G</italic> and arcs of the corresponding graph <italic>H</italic> leads to the polynomial-time solvability of the Hamiltonian cycle and path problems in adjoints. There is a Hamiltonian cycle (path) in graph <italic>G</italic> if and only if graph <italic>H</italic> contains an Eulerian cycle (path) (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_008">1999</xref>), this property follows from the definitions. Such a conversion of problems is not possible for analogous situation of an undirected line graph and its corresponding graph (Bertossi, <xref ref-type="bibr" rid="j_infor568_ref_004">1981</xref>).</p>
<p>Adjoints have this useful property because of the vertex-arc relation with their graphs <italic>H</italic>, and a question arose whether this class could be widened. In 2008, its superclass of <italic>quasi-adjoint graphs</italic> was defined and a polynomial-time exact algorithm solving the Hamiltonian cycle problem was provided (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_010">2008</xref>). Digraph <italic>G</italic> is a <italic>quasi-adjoint graph</italic> if and only if, for all <inline-formula id="j_infor568_ineq_015"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula>, the following property holds: 
<disp-formula id="j_infor568_eq_003">
<alternatives><mml:math display="block">
<mml:mtable columnspacing="4.0pt 4.0pt 4.0pt" equalrows="false" columnlines="none none none" equalcolumns="false" columnalign="right right left left">
<mml:mtr>
<mml:mtd class="array">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:mo>∨</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array"/>
<mml:mtd class="array"/>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
</mml:mtd>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:mo>∨</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd class="array"/>
<mml:mtd class="array"/>
<mml:mtd class="array">
<mml:mspace width="1em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[\begin{array}{r@{\hskip4.0pt}r@{\hskip4.0pt}l@{\hskip4.0pt}l}{\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)\ne \varnothing & \hspace{1em}\Rightarrow & \hspace{1em}{\mathrm{N}^{+}}(u)={\mathrm{N}^{+}}(v)& \hspace{1em}\vee \\ {} & & \hspace{1em}{\mathrm{N}^{+}}(u)\subset {\mathrm{N}^{+}}(v)& \hspace{1em}\vee \\ {} & & \hspace{1em}{\mathrm{N}^{+}}(v)\subset {\mathrm{N}^{+}}(u).\end{array}\]]]></tex-math></alternatives>
</disp-formula> 
Quasi-adjoint graphs, unlike adjoints, can be multigraphs. They are a superclass of, among others, digraphs modelling a bioinformatical problem of isothermic DNA sequencing by hybridization, which are 1-graphs intersecting the class of adjoints (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_009">2004</xref>; Blazewicz and Kasprzak, <xref ref-type="bibr" rid="j_infor568_ref_006">2006</xref>). (For more relations of quasi-adjoint graphs and adjoints with other classes of digraphs, see the systematization made in Blazewicz and Kasprzak (<xref ref-type="bibr" rid="j_infor568_ref_007">2012</xref>) and Kasprzak (<xref ref-type="bibr" rid="j_infor568_ref_016">2018</xref>).) The recognition whether a graph is a quasi-adjoint graph can be done in <inline-formula id="j_infor568_ineq_016"><alternatives><mml:math>
<mml:mi mathvariant="normal">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>3</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathrm{O}({n^{3}})$]]></tex-math></alternatives></inline-formula> time, and the exact algorithm solving the Hamiltonian cycle problem within it works in <inline-formula id="j_infor568_ineq_017"><alternatives><mml:math>
<mml:mi mathvariant="normal">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>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({n^{2}}+{m^{2}})$]]></tex-math></alternatives></inline-formula> time, where <italic>n</italic> is the number of its vertices and <italic>m</italic> the number of arcs (Blazewicz <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_010">2008</xref>). The algorithm also uses a transformation of a graph <italic>G</italic> into the corresponding graph <italic>H</italic>, but this time it is more complicated and includes insertion of extra structures. There, the numbers of vertices before the transformation and arcs after the transformation differ, nevertheless, the correspondence between the Hamiltonian and Eulerian cycles is preserved. This algorithm can be easily adjusted to solve the Hamiltonian path problem (Kasprzak, <xref ref-type="bibr" rid="j_infor568_ref_016">2018</xref>).</p>
</sec>
<sec id="j_infor568_s_003">
<label>3</label>
<title>Superclasses of Quasi-Adjoint Graphs</title>
<fig id="j_infor568_fig_001">
<label>Fig. 1</label>
<caption>
<p>Graph <inline-formula id="j_infor568_ineq_018"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∉</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$G\notin {\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula> and its transpose graph <inline-formula id="j_infor568_ineq_019"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula>. <italic>G</italic> is not a quasi-adjoint graph because of any of these pairs of vertices: <inline-formula id="j_infor568_ineq_020"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{a,b\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_021"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{a,e\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_022"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{b,d\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_023"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{d,e\}$]]></tex-math></alternatives></inline-formula>. In <inline-formula id="j_infor568_ineq_024"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}$]]></tex-math></alternatives></inline-formula> all pairs of vertices satisfy the condition for quasi-adjoint graphs.</p>
</caption>
<graphic xlink:href="infor568_g001.jpg"/>
</fig>
<p>The considered class of polynomially solvable instances of the Hamiltonian cycle/path problem can be further extended. The simplest extension is to add to quasi-adjoint graphs their counterparts with the adjacency matrix transposed. Obviously, digraph <italic>G</italic> has a Hamiltonian cycle/path if and only if its transposed counterpart <inline-formula id="j_infor568_ineq_025"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}$]]></tex-math></alternatives></inline-formula> has (see an example in Fig. <xref rid="j_infor568_fig_001">1</xref>). Adjoints are digraphs whose membership in this class does not change after the transposition, however, it is not the case of quasi-adjoint graphs. Let <inline-formula id="j_infor568_ineq_026"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{a}}}$]]></tex-math></alternatives></inline-formula> be the class of adjoints, and <inline-formula id="j_infor568_ineq_027"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula> the class of quasi-adjoint graphs.</p><statement id="j_infor568_stat_001"><label>Proposition 1.</label>
<p><inline-formula id="j_infor568_ineq_028"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">⇔</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}_{\mathrm{a}}}\Leftrightarrow {G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{a}}}$]]></tex-math></alternatives></inline-formula><italic>.</italic></p></statement><statement id="j_infor568_stat_002"><label>Proof.</label>
<p>According to the definition, every two vertices of an adjoint have their sets of successors either identical or disjoint. Consequently, if two vertices have a common predecessor, they must have the same sets of predecessors, because all the predecessors point to the same subset of vertices.  □</p></statement><statement id="j_infor568_stat_003"><label>Lemma 1.</label>
<p><inline-formula id="j_infor568_ineq_029"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}\ne \{G:{G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}\}$]]></tex-math></alternatives></inline-formula><italic>.</italic></p></statement><statement id="j_infor568_stat_004"><label>Proof.</label>
<p>Figure <xref rid="j_infor568_fig_001">1</xref> presents an example of a graph, which becomes the quasi-adjoint graph after the transposition of its adjacency matrix.  □</p></statement>
<p>The following extension of the quasi-adjoint graphs takes into account the above property. Let <inline-formula id="j_infor568_ineq_030"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> be the class of digraphs where the following holds for all <inline-formula id="j_infor568_ineq_031"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor568_eq_004">
<label>(3.1)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
<mml:mspace width="1em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">⋃</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mo>⩽</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)\ne \varnothing \hspace{1em}\Rightarrow \hspace{1em}\bigg|\hspace{0.1667em}\bigcup \limits_{z\in Z}\hspace{0.2778em}{\mathrm{N}^{-}}(z)\hspace{0.1667em}\bigg|\leqslant |Z|,\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor568_ineq_032"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_033"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(v)\setminus {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> (a choice made independently for each pair <inline-formula id="j_infor568_ineq_034"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> toward satisfying the clause). Analogously, let <inline-formula id="j_infor568_ineq_035"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> be the class of digraphs with the property 
<disp-formula id="j_infor568_eq_005">
<label>(3.2)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
<mml:mspace width="1em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">⋃</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mo>⩽</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\mathrm{N}^{-}}(u)\cap {\mathrm{N}^{-}}(v)\ne \varnothing \hspace{1em}\Rightarrow \hspace{1em}\bigg|\hspace{0.1667em}\bigcup \limits_{z\in Z}\hspace{0.2778em}{\mathrm{N}^{+}}(z)\hspace{0.1667em}\bigg|\leqslant |Z|\]]]></tex-math></alternatives>
</disp-formula> 
satisfied for all <inline-formula id="j_infor568_ineq_036"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_infor568_ineq_037"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{-}}(u)\setminus {\mathrm{N}^{-}}(v)$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_038"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{-}}(v)\setminus {\mathrm{N}^{-}}(u)$]]></tex-math></alternatives></inline-formula>.</p><statement id="j_infor568_stat_005"><label>Theorem 1.</label>
<p>(i) <inline-formula id="j_infor568_ineq_039"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}\subset {\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula><italic>.</italic> (ii) <inline-formula id="j_infor568_ineq_040"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>∪</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}\cup \{G:{G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}\}\subset {\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula><italic>.</italic></p></statement><statement id="j_infor568_stat_006"><label>Proof.</label>
<p>From the definition, for each pair of vertices of a quasi-adjoint graph, their sets of successors are either disjoint or one of them is a subset of the other. If they are disjoint, the left part of the clause defining elements of <inline-formula id="j_infor568_ineq_041"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> (clause (<xref rid="j_infor568_eq_004">3.1</xref>)) is fulfilled. Otherwise, at least one of the equations for <italic>Z</italic> gives <inline-formula id="j_infor568_ineq_042"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[$Z=\varnothing $]]></tex-math></alternatives></inline-formula> and the inequality from the clause is fulfilled. Thus, <inline-formula id="j_infor568_ineq_043"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula> is a subset of <inline-formula id="j_infor568_ineq_044"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>. The subset is proper, an example graph belonging to <inline-formula id="j_infor568_ineq_045"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∖</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\setminus {\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula> is shown in Fig. <xref rid="j_infor568_fig_002">2</xref>(A). This completes the proof for (i).</p>
<p>
<fig id="j_infor568_fig_002">
<label>Fig. 2</label>
<caption>
<p>(A) An example graph <inline-formula id="j_infor568_ineq_046"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∖</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime }}\setminus {\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula>. Pair <inline-formula id="j_infor568_ineq_047"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi></mml:math><tex-math><![CDATA[$a,c$]]></tex-math></alternatives></inline-formula> does not satisfy the condition for quasi-adjoint graphs but satisfies the one for <inline-formula id="j_infor568_ineq_048"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>. (B) An example graph <inline-formula id="j_infor568_ineq_049"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∉</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\notin {\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>. An obstacle to belonging to this class follows from pairs of vertices <inline-formula id="j_infor568_ineq_050"><alternatives><mml:math>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi></mml:math><tex-math><![CDATA[$b,c$]]></tex-math></alternatives></inline-formula> (when the membership in <inline-formula id="j_infor568_ineq_051"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> is considered) or <inline-formula id="j_infor568_ineq_052"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi></mml:math><tex-math><![CDATA[$a,d$]]></tex-math></alternatives></inline-formula> (for <inline-formula id="j_infor568_ineq_053"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>). After the reduction according to the procedure from the proof of Theorem <xref rid="j_infor568_stat_007">2</xref> made for pair <inline-formula id="j_infor568_ineq_054"><alternatives><mml:math>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi></mml:math><tex-math><![CDATA[$a,b$]]></tex-math></alternatives></inline-formula>, when the membership in <inline-formula id="j_infor568_ineq_055"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> is considered, arc <inline-formula id="j_infor568_ineq_056"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(a,d)$]]></tex-math></alternatives></inline-formula> is removed and <inline-formula id="j_infor568_ineq_057"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>. Or, in the variant of the reduction for <inline-formula id="j_infor568_ineq_058"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> made for the same pair of vertices, arc <inline-formula id="j_infor568_ineq_059"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(c,b)$]]></tex-math></alternatives></inline-formula> is removed and <inline-formula id="j_infor568_ineq_060"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>.</p>
</caption>
<graphic xlink:href="infor568_g002.jpg"/>
</fig>
</p>
<p>The same we have for the clause for <inline-formula id="j_infor568_ineq_061"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> (clause (<xref rid="j_infor568_eq_005">3.2</xref>)) and a graph <italic>G</italic> such that <inline-formula id="j_infor568_ineq_062"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula>, because the transposition is realized in the clause by replacing successors with predecessors and vice versa. Therefore, the property from (ii) is also satisfied. According to Lemma <xref rid="j_infor568_stat_003">1</xref>, classes <inline-formula id="j_infor568_ineq_063"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_064"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{G:{G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}\}$]]></tex-math></alternatives></inline-formula> are different, this justifies the presence of sum of these sets in (ii).  □</p></statement>
<p>The joint class <inline-formula id="j_infor568_ineq_065"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> is interesting in such a sense that its elements are polynomially solvable instances of the Hamiltonian cycle problem. It should be noticed that these graphs can bring the positive, as well as the negative answer to the problem. The recognition whether a graph belongs to this class can be done in <inline-formula id="j_infor568_ineq_066"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> time (clause (<xref rid="j_infor568_eq_004">3.1</xref>) or (<xref rid="j_infor568_eq_005">3.2</xref>) checked in <inline-formula id="j_infor568_ineq_067"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{2}})$]]></tex-math></alternatives></inline-formula> time for all pairs of vertices).</p><statement id="j_infor568_stat_007"><label>Theorem 2.</label>
<p><italic>The Hamiltonian cycle problem in graphs belonging to</italic> <inline-formula id="j_infor568_ineq_068"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> <italic>can be polynomially solved in</italic> <inline-formula id="j_infor568_ineq_069"><alternatives><mml:math>
<mml:mi mathvariant="normal">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>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({n^{4}}+{m^{2}})$]]></tex-math></alternatives></inline-formula> <italic>time.</italic></p></statement><statement id="j_infor568_stat_008"><label>Proof.</label>
<p>The algorithm solving the problem consists of two stages. Firstly, graph <inline-formula id="j_infor568_ineq_070"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> is reduced to a quasi-adjoint graph or its transposed version. Secondly, the algorithm for the Hamiltonian cycle problem from Blazewicz <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor568_ref_010">2008</xref>) is applied to the reduced <italic>G</italic>, if <inline-formula id="j_infor568_ineq_071"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>, or to <inline-formula id="j_infor568_ineq_072"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${G^{\mathrm{T}}}$]]></tex-math></alternatives></inline-formula> otherwise.</p>
<p>The reduction is made by removal of arcs where no arc having the possibility of composing any Hamiltonian cycle is removed. For <inline-formula id="j_infor568_ineq_073"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>, all pairs <inline-formula id="j_infor568_ineq_074"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula> sharing a successor are analysed, and if the inequality from clause (<xref rid="j_infor568_eq_004">3.1</xref>) is fulfilled for <inline-formula id="j_infor568_ineq_075"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_076"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$|Z|\gt 0$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_infor568_ineq_077"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\setminus {\mathrm{N}^{+}}(u)\ne \varnothing $]]></tex-math></alternatives></inline-formula>, all arcs from <italic>u</italic> to <inline-formula id="j_infor568_ineq_078"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> are marked to be removed; if the inequality is fulfilled for <inline-formula id="j_infor568_ineq_079"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(v)\setminus {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_080"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:math><tex-math><![CDATA[$|Z|\gt 0$]]></tex-math></alternatives></inline-formula>, where <inline-formula id="j_infor568_ineq_081"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(v)\ne \varnothing $]]></tex-math></alternatives></inline-formula>, all arcs from <italic>v</italic> to <inline-formula id="j_infor568_ineq_082"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> are marked to be removed. It is enough to mark (and, further, to remove) arcs in one of these cases to get <inline-formula id="j_infor568_ineq_083"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_084"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> disjoint, thus satisfying the condition for quasi-adjoint graphs. (However, as we see later in Algorithm <xref rid="j_infor568_fig_004">1</xref>, we may remove arcs in both of these cases, and it does not affect Hamiltonicity.) Such an operation is legitimized by the fact that, in any Hamiltonian cycle in <italic>G</italic> (if it exists), vertices from <italic>Z</italic> need exactly <inline-formula id="j_infor568_ineq_085"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|Z|$]]></tex-math></alternatives></inline-formula> direct predecessors. Because the number of their predecessors in <italic>G</italic> is not greater than <inline-formula id="j_infor568_ineq_086"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|Z|$]]></tex-math></alternatives></inline-formula>, a Hamiltonian cycle entering any of the predecessors must leave it toward one of the elements of <inline-formula id="j_infor568_ineq_087"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|Z|$]]></tex-math></alternatives></inline-formula>. We may say that vertices from <italic>Z</italic> ‘bind’ all their predecessors in a cycle, <italic>u</italic> (<italic>v</italic>) among them. As a consequence, none of the arcs from <italic>u</italic> (<italic>v</italic>) to <inline-formula id="j_infor568_ineq_088"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> will be used in a solution.</p>
<p>If <inline-formula id="j_infor568_ineq_089"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(v)=\varnothing $]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_090"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\setminus {\mathrm{N}^{+}}(u)=\varnothing $]]></tex-math></alternatives></inline-formula>, pair <inline-formula id="j_infor568_ineq_091"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> fulfills the condition from the definition of quasi-adjoint graphs and, typically, no arc is removed. However, arcs marked to be removed for other pairs, characterized as in the above paragraph, can have an influence on <inline-formula id="j_infor568_ineq_092"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula>. If some arcs leaving <italic>u</italic> have been marked and <inline-formula id="j_infor568_ineq_093"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊆</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)\subseteq {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_094"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> after the removal stays encapsulated in <inline-formula id="j_infor568_ineq_095"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> and the condition is fulfilled. But the encapsulation will be not preserved if <inline-formula id="j_infor568_ineq_096"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\subset {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and arcs leaving <italic>u</italic> and entering only a part of <inline-formula id="j_infor568_ineq_097"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> are to be removed. In that situation, arcs leaving <italic>v</italic> that break the encapsulation are also marked for removal according to the following rule. Each time a pair <inline-formula id="j_infor568_ineq_098"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi></mml:math><tex-math><![CDATA[$u,w$]]></tex-math></alternatives></inline-formula> is solved as described in the previous paragraph, where arcs from <italic>u</italic> to elements of <inline-formula id="j_infor568_ineq_099"><alternatives><mml:math>
<mml:mi mathvariant="italic">U</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$U={\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(w)$]]></tex-math></alternatives></inline-formula> are marked for removal (so <inline-formula id="j_infor568_ineq_100"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(w)$]]></tex-math></alternatives></inline-formula>), all arcs going from <italic>v</italic> to <italic>U</italic> are also marked for removal for all <italic>v</italic> having <inline-formula id="j_infor568_ineq_101"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\subset {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_102"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:mi mathvariant="italic">U</mml:mi>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\setminus U\ne \varnothing $]]></tex-math></alternatives></inline-formula>. Such <italic>v</italic> is one of predecessors of some elements of <italic>Z</italic>, thus is bound by one of such elements in any Hamiltonian cycle in <italic>G</italic>. As a consequence, all arcs going from <italic>v</italic> to <italic>U</italic> can be safely removed as they will never be used. See Fig. <xref rid="j_infor568_fig_003">3</xref> for an example.</p>
<p>Finally, all the marked arcs are removed from <italic>G</italic>. Analogous operations are performed for <inline-formula id="j_infor568_ineq_103"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime\prime }}\setminus {\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> with predecessors instead of successors. This procedure takes <inline-formula id="j_infor568_ineq_104"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> time. If, at any moment, we get <inline-formula id="j_infor568_ineq_105"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">⋃</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|{\textstyle\bigcup _{z\in Z}}\hspace{0.2778em}{\mathrm{N}^{-}}(z)|\lt |Z|$]]></tex-math></alternatives></inline-formula> (resp. <inline-formula id="j_infor568_ineq_106"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">⋃</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo mathvariant="normal">&lt;</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|{\textstyle\bigcup _{z\in Z}}\hspace{0.2778em}{\mathrm{N}^{+}}(z)|\lt |Z|$]]></tex-math></alternatives></inline-formula>), there is no Hamiltonian cycle in the graph and the algorithm can be stopped. The algorithm from Blazewicz <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor568_ref_010">2008</xref>) solving the Hamiltonian cycle problem in quasi-adjoint graphs works in <inline-formula id="j_infor568_ineq_107"><alternatives><mml:math>
<mml:mi mathvariant="normal">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>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({n^{2}}+{m^{2}})$]]></tex-math></alternatives></inline-formula> time in a general case (<inline-formula id="j_infor568_ineq_108"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> for 1-graphs). Hence, the overall time complexity of the current algorithm is <inline-formula id="j_infor568_ineq_109"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> under the assumption that <italic>m</italic> is bounded by <inline-formula id="j_infor568_ineq_110"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_111"><alternatives><mml:math>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({m^{2}})$]]></tex-math></alternatives></inline-formula> otherwise.  □</p></statement>
<p>If graph <italic>G</italic> has <italic>m</italic> significantly greater than <inline-formula id="j_infor568_ineq_112"><alternatives><mml:math>
<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:math><tex-math><![CDATA[${n^{2}}$]]></tex-math></alternatives></inline-formula>, we can simply reduce the overall time complexity by analysing its underlying 1-graph.</p>
<fig id="j_infor568_fig_003">
<label>Fig. 3</label>
<caption>
<p>An illustration for the operations described in the proof of Theorem <xref rid="j_infor568_stat_007">2</xref>. Let <inline-formula id="j_infor568_ineq_113"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi></mml:math><tex-math><![CDATA[$u,w$]]></tex-math></alternatives></inline-formula> be the analysed pair of vertices. They share a successor, and the inequality from clause (<xref rid="j_infor568_eq_004">3.1</xref>) is fulfilled for both <inline-formula id="j_infor568_ineq_114"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(w)\setminus {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_115"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(w)$]]></tex-math></alternatives></inline-formula>. Therefore, either arc <inline-formula id="j_infor568_ineq_116"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(w,b)$]]></tex-math></alternatives></inline-formula> may be marked for removal (with <inline-formula id="j_infor568_ineq_117"><alternatives><mml:math>
<mml:mi mathvariant="italic">U</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$U={\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(w)=\{b\}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_118"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(w)\setminus {\mathrm{N}^{+}}(u)=\{a\}$]]></tex-math></alternatives></inline-formula>) or arc <inline-formula id="j_infor568_ineq_119"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(u,b)$]]></tex-math></alternatives></inline-formula> (with <inline-formula id="j_infor568_ineq_120"><alternatives><mml:math>
<mml:mi mathvariant="italic">U</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$U=\{b\}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_121"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">d</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(w)=\{c,d,e,f\}$]]></tex-math></alternatives></inline-formula>). The former case is simpler: after the removal all the pairs from the set <inline-formula id="j_infor568_ineq_122"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{w,u,v,{v^{\prime }},{v^{\prime\prime }}\}$]]></tex-math></alternatives></inline-formula> fulfill the condition for quasi-adjoint graphs, and arcs do not need to be removed anymore. In the latter case, after the removal of <inline-formula id="j_infor568_ineq_123"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(u,b)$]]></tex-math></alternatives></inline-formula> only, these pairs would not fulfill the condition: <inline-formula id="j_infor568_ineq_124"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{w,v\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_125"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{w,{v^{\prime }}\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_126"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{u,v\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_127"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{u,{v^{\prime }}\}$]]></tex-math></alternatives></inline-formula>. But here we have the situation that there are some vertices <italic>v</italic> (<italic>v</italic> and <inline-formula id="j_infor568_ineq_128"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${v^{\prime }}$]]></tex-math></alternatives></inline-formula> in the example) such that <inline-formula id="j_infor568_ineq_129"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\subset {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and arcs leaving <italic>u</italic> and entering only a part of <inline-formula id="j_infor568_ineq_130"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> are marked for removal. According to the rule from the proof, all arcs going from <italic>v</italic> to <italic>U</italic> and from <inline-formula id="j_infor568_ineq_131"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${v^{\prime }}$]]></tex-math></alternatives></inline-formula> to <italic>U</italic> are also marked for removal. After the removal, all the pairs from the set <inline-formula id="j_infor568_ineq_132"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">w</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{w,u,v,{v^{\prime }},{v^{\prime\prime }}\}$]]></tex-math></alternatives></inline-formula> fulfill the condition for quasi-adjoint graphs.</p>
</caption>
<graphic xlink:href="infor568_g003.jpg"/>
</fig>
<p>As we see, the algorithms for recognizing graphs from <inline-formula id="j_infor568_ineq_133"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> and for solving the Hamiltonian cycle problem in these graphs are of the same computational complexity as the algorithm solving the problem in quasi-adjoint graphs. Keeping the same complexity function, we can further extend the class of polynomially solvable instances of the problem. The reduction made by the procedure from the proof of Theorem <xref rid="j_infor568_stat_007">2</xref> for a pair of vertices can make another pair consistent with the condition for <inline-formula id="j_infor568_ineq_134"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_135"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>. Therefore, some graphs outside <inline-formula id="j_infor568_ineq_136"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup \hspace{0.1667em}{\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> may, after the reduction, become members of this class. An example of such a situation is shown in Fig. <xref rid="j_infor568_fig_002">2</xref>(B).</p>
<p>Precisely, the reduction from the proof of Theorem <xref rid="j_infor568_stat_007">2</xref> in the case of a graph outside <inline-formula id="j_infor568_ineq_137"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> can be applied to these pairs of its vertices that fulfill the appropriate condition (either for <inline-formula id="j_infor568_ineq_138"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_139"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>, see the caption of Fig. <xref rid="j_infor568_fig_002">2</xref>(B)). However, the reduction can be naturally extended as in Algorithm <xref rid="j_infor568_fig_004">1</xref>.</p>
<fig id="j_infor568_fig_004">
<label>Algorithm 1</label><graphic xlink:href="infor568_g004.jpg"/>
</fig>
<statement id="j_infor568_stat_009"><label>Theorem 3.</label>
<p><italic>Algorithm</italic> <xref rid="j_infor568_fig_004">1</xref> <italic>works in</italic> <inline-formula id="j_infor568_ineq_140"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> <italic>time and keeps all Hamiltonian cycles in G.</italic></p></statement><statement id="j_infor568_stat_010"><label>Proof.</label>
<p>The time complexity immediately follows from the pseudocode. The correctness, i.e. whether all Hamiltonian cycles are preserved after the reduction, has been partially analysed in the proof of Theorem <xref rid="j_infor568_stat_007">2</xref>, here it remains to prove that: (i) the algorithm can be applied to a graph outside <inline-formula id="j_infor568_ineq_141"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup \hspace{0.1667em}{\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> without losing any solution to the Hamiltonian cycle problem; (ii) the operations assuming the opposite direction of arcs, i.e. the reduction toward <inline-formula id="j_infor568_ineq_142"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_143"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>, can be alternated; (iii) the removal can be safely done for a pair <inline-formula id="j_infor568_ineq_144"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> where <inline-formula id="j_infor568_ineq_145"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">⊂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)\subset {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula>; (iv) the removal can be safely done for <italic>p</italic> such that <inline-formula id="j_infor568_ineq_146"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">p</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(p)={\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula>.</p>
<p>(i) As the reduction is made only for pairs that satisfy the appropriate condition, only these arcs are removed which for sure will not compose any solution of the problem. (ii) The arcs marked to be reduced stay in the graph until the end of the algorithm, thus they do not influence other connections. Every next operation of marking an arc is independent of the previous ones. At any moment we can treat the graph as having the opposite direction of all its arcs, as it does not change the answer to the problem. (iii) Although such a pair already fulfills the condition for quasi-adjoint graphs, a reduction made for it can help to positively classify another pair. Only arcs that do not compose any solution are marked for the reduction. (iv) Vertex <italic>p</italic> with the same set of successors as <italic>u</italic> has the same connections that will never be used, thus safe to be removed.  □</p></statement>
<p>By re-running the algorithm, one increases its efficiency as new pairs of vertices can meet the required criteria. If the number of runs is constant, the complexity function does not grow. If one decides to re-run the algorithm as long as there are some reductions made, the number of runs is upper bounded by <inline-formula id="j_infor568_ineq_147"><alternatives><mml:math>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$\mathrm{O}(m)$]]></tex-math></alternatives></inline-formula>.</p>
<p>Another observation led to a further extension of the considered classes. If, among all successors (resp. predecessors) of a pair of vertices, there is one with a unique predecessor (resp. successor), it binds in any Hamiltonian cycle its predecessor (resp. successor). Such a case can be added to the clauses defining <inline-formula id="j_infor568_ineq_148"><alternatives><mml:math>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub></mml:math><tex-math><![CDATA[${\mathcal{G}_{\mathrm{q}}}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_149"><alternatives><mml:math>
<mml:mo fence="true" stretchy="false">{</mml:mo>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" stretchy="false">}</mml:mo></mml:math><tex-math><![CDATA[$\{G:{G^{\mathrm{T}}}\in {\mathcal{G}_{\mathrm{q}}}\}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_150"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor568_ineq_151"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> without changing their property of polynomial-time solvability of the Hamiltonian cycle problem. Let <inline-formula id="j_infor568_ineq_152"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> be a class of digraphs having the following property satisfied for all <inline-formula id="j_infor568_ineq_153"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor568_eq_006">
<label>(3.3)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
<mml:mspace width="1em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">⋃</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mo>⩽</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mspace width="1em"/>
<mml:mo>∨</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">{</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">}</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\mathrm{N}^{+}}(u)\cap {\mathrm{N}^{+}}(v)\ne \varnothing \hspace{1em}\Rightarrow \hspace{1em}\bigg|\hspace{0.1667em}\bigcup \limits_{z\in Z}\hspace{0.2778em}{\mathrm{N}^{-}}(z)\hspace{0.1667em}\bigg|\leqslant |Z|\hspace{1em}\vee \hspace{1em}{\mathrm{min}_{y\in Y}}\big\{{\mathrm{N}^{-}}(y)\big\}=1,\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor568_ineq_154"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(u)\setminus {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_155"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{+}}(v)\setminus {\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> (a choice made independently for each pair <inline-formula id="j_infor568_ineq_156"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> toward satisfying the clause) and <inline-formula id="j_infor568_ineq_157"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Y={\mathrm{N}^{+}}(u)\cup {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula>. Let <inline-formula id="j_infor568_ineq_158"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> be a class of digraphs with the following property satisfied for all <inline-formula id="j_infor568_ineq_159"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula>: 
<disp-formula id="j_infor568_eq_007">
<label>(3.4)</label><alternatives><mml:math display="block">
<mml:mtable displaystyle="true">
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∩</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">≠</mml:mo>
<mml:mo>∅</mml:mo>
<mml:mspace width="1em"/>
<mml:mo stretchy="false">⇒</mml:mo>
<mml:mspace width="1em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:munder>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo largeop="true" movablelimits="false">⋃</mml:mo></mml:mstyle>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.2778em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo fence="true" maxsize="2.03em" minsize="2.03em" stretchy="true">|</mml:mo>
<mml:mo>⩽</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo>
<mml:mspace width="1em"/>
<mml:mo>∨</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">{</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo fence="true" maxsize="1.19em" minsize="1.19em">}</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo mathvariant="normal">,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable></mml:math><tex-math><![CDATA[\[ {\mathrm{N}^{-}}(u)\cap {\mathrm{N}^{-}}(v)\ne \varnothing \hspace{1em}\Rightarrow \hspace{1em}\bigg|\hspace{0.1667em}\bigcup \limits_{z\in Z}\hspace{0.2778em}{\mathrm{N}^{+}}(z)\hspace{0.1667em}\bigg|\leqslant |Z|\hspace{1em}\vee \hspace{1em}{\mathrm{min}_{y\in Y}}\big\{{\mathrm{N}^{+}}(y)\big\}=1,\]]]></tex-math></alternatives>
</disp-formula> 
where <inline-formula id="j_infor568_ineq_160"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{-}}(u)\setminus {\mathrm{N}^{-}}(v)$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_161"><alternatives><mml:math>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Z={\mathrm{N}^{-}}(v)\setminus {\mathrm{N}^{-}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_162"><alternatives><mml:math>
<mml:mi mathvariant="italic">Y</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$Y={\mathrm{N}^{-}}(u)\cup {\mathrm{N}^{-}}(v)$]]></tex-math></alternatives></inline-formula>.</p><statement id="j_infor568_stat_011"><label>Theorem 4.</label>
<p><italic>The Hamiltonian cycle problem in graphs belonging to</italic> <inline-formula id="j_infor568_ineq_163"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}\cup {\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> <italic>can be polynomially solved in</italic> <inline-formula id="j_infor568_ineq_164"><alternatives><mml:math>
<mml:mi mathvariant="normal">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>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({n^{4}}+{m^{2}})$]]></tex-math></alternatives></inline-formula> <italic>time.</italic></p></statement><statement id="j_infor568_stat_012"><label>Proof.</label>
<p>The reduction is done similarly as for the graphs in <inline-formula id="j_infor568_ineq_165"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula> except for these pairs <inline-formula id="j_infor568_ineq_166"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">V</mml:mi></mml:math><tex-math><![CDATA[$u,v\in V$]]></tex-math></alternatives></inline-formula> for which the last expression in clauses (<xref rid="j_infor568_eq_006">3.3</xref>) or (<xref rid="j_infor568_eq_007">3.4</xref>) is fulfilled. If <inline-formula id="j_infor568_ineq_167"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_168"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> share a successor, and there exists a vertex <inline-formula id="j_infor568_ineq_169"><alternatives><mml:math>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$y\in {\mathrm{N}^{+}}(u)\cup {\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> that has only one predecessor, then all arcs leaving <inline-formula id="j_infor568_ineq_170"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{-}}(y)$]]></tex-math></alternatives></inline-formula>, except the one from <inline-formula id="j_infor568_ineq_171"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{-}}(y)$]]></tex-math></alternatives></inline-formula> to <italic>y</italic>, are marked for removal. This way we get <inline-formula id="j_infor568_ineq_172"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(u)$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_173"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(v)$]]></tex-math></alternatives></inline-formula> disjoint, thus satisfying the condition for quasi-adjoint graphs. Here no conflict between vertices having encapsulated successor sets is present. If <inline-formula id="j_infor568_ineq_174"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}\setminus {\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_175"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> share a predecessor, and there exists a vertex <inline-formula id="j_infor568_ineq_176"><alternatives><mml:math>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$y\in {\mathrm{N}^{-}}(u)\cup {\mathrm{N}^{-}}(v)$]]></tex-math></alternatives></inline-formula> that has only one successor, then all arcs entering <inline-formula id="j_infor568_ineq_177"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(y)$]]></tex-math></alternatives></inline-formula>, except the one from <italic>y</italic> to <inline-formula id="j_infor568_ineq_178"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">y</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[${\mathrm{N}^{+}}(y)$]]></tex-math></alternatives></inline-formula>, are marked for removal. See Fig. <xref rid="j_infor568_fig_005">4</xref> for an example.</p>
<p>After the removal of the marked arcs from <italic>G</italic>, the algorithm solving the Hamiltonian cycle problem in quasi-adjoint graphs is executed with, optionally, the reversed orientation of arcs if <inline-formula id="j_infor568_ineq_179"><alternatives><mml:math>
<mml:mi mathvariant="italic">G</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∖</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[$G\in {\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}\setminus {\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula>. The reduction procedure still takes <inline-formula id="j_infor568_ineq_180"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> time, thus the overall time complexity is <inline-formula id="j_infor568_ineq_181"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{4}})$]]></tex-math></alternatives></inline-formula> under the assumption that <italic>m</italic> is bounded by <inline-formula id="j_infor568_ineq_182"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_183"><alternatives><mml:math>
<mml:mi mathvariant="normal">O</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">m</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[$\mathrm{O}({m^{2}})$]]></tex-math></alternatives></inline-formula> otherwise.  □</p></statement>
<fig id="j_infor568_fig_005">
<label>Fig. 4</label>
<caption>
<p>An example graph, which does not belong to <inline-formula id="j_infor568_ineq_184"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>, but belongs to <inline-formula id="j_infor568_ineq_185"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula>. The condition for <inline-formula id="j_infor568_ineq_186"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula> (clause (<xref rid="j_infor568_eq_004">3.1</xref>)) is not fulfilled by the pair <inline-formula id="j_infor568_ineq_187"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula>. The condition for <inline-formula id="j_infor568_ineq_188"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> (clause (<xref rid="j_infor568_eq_006">3.3</xref>)) is fulfilled by all the pairs from the graph. After the reduction from the proof of Theorem <xref rid="j_infor568_stat_011">4</xref> made for <inline-formula id="j_infor568_ineq_189"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula>, the graph becomes a quasi-adjoint graph.</p>
</caption>
<graphic xlink:href="infor568_g005.jpg"/>
</fig>
<p>It should be noticed that the example graph from Fig. <xref rid="j_infor568_fig_002">2</xref>(B) does not belong to any of the classes <inline-formula id="j_infor568_ineq_190"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_191"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_192"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor568_ineq_193"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula>, but can be reduced to be a member of any of them by Algorithm <xref rid="j_infor568_fig_004">1</xref> run once or the procedure from the proof of Theorem <xref rid="j_infor568_stat_007">2</xref>. It shows potential wide applicability of the approach proposed here.</p>
<p>When solving the Hamiltonian path problem in graphs from class <inline-formula id="j_infor568_ineq_194"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup \hspace{0.1667em}{\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>, one encounters a complication. A natural approach consisting in running <inline-formula id="j_infor568_ineq_195"><alternatives><mml:math>
<mml:mi mathvariant="normal">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[$\mathrm{O}({n^{2}})$]]></tex-math></alternatives></inline-formula> times an algorithm for the Hamiltonian cycle problem, with successive pairs of vertices assumed as the ends of the path and their connection fixed in the cycle, cannot be easily applied here. It works for quasi-adjoint graphs, where, after the appropriate modification, a graph still belongs to this class (Kasprzak, <xref ref-type="bibr" rid="j_infor568_ref_016">2018</xref>). Here, the addition of the arc from the last to the first vertex, accompanied by the removal of some arcs or not, can make the graph no longer an element of <inline-formula id="j_infor568_ineq_196"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>∪</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime }}\cup {\mathcal{G}^{\prime\prime }}$]]></tex-math></alternatives></inline-formula>.</p>
<p>Let <italic>a</italic> be the assumed beginning of the path, <italic>b</italic> its end, and the added arc be <inline-formula id="j_infor568_ineq_197"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(b,a)$]]></tex-math></alternatives></inline-formula> (not present in the initial graph). The complication is for the cases where, for a pair <inline-formula id="j_infor568_ineq_198"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula>, clause (<xref rid="j_infor568_eq_004">3.1</xref>) or (<xref rid="j_infor568_eq_005">3.2</xref>) was fulfilled with <inline-formula id="j_infor568_ineq_199"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">⋃</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|{\textstyle\bigcup _{z\in Z}}{\mathrm{N}^{-}}(z)|=|Z|$]]></tex-math></alternatives></inline-formula> or <inline-formula id="j_infor568_ineq_200"><alternatives><mml:math>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo largeop="false" movablelimits="false">⋃</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo stretchy="false">∈</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>+</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">z</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="italic">Z</mml:mi>
<mml:mo stretchy="false">|</mml:mo></mml:math><tex-math><![CDATA[$|{\textstyle\bigcup _{z\in Z}}{\mathrm{N}^{+}}(z)|=|Z|$]]></tex-math></alternatives></inline-formula>, respectively, and <italic>a</italic> or <italic>b</italic> supplied one of the sides of these equations. Whether the arcs initially entering <italic>a</italic>/leaving <italic>b</italic> (or both) will be removed or not, the pair <inline-formula id="j_infor568_ineq_201"><alternatives><mml:math>
<mml:mi mathvariant="italic">u</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">v</mml:mi></mml:math><tex-math><![CDATA[$u,v$]]></tex-math></alternatives></inline-formula> can lose the required property. Therefore, the case of the Hamiltonian path in the considered classes (also <inline-formula id="j_infor568_ineq_202"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>′</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor568_ineq_203"><alternatives><mml:math>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="script">G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>″</mml:mo>
<mml:mspace width="0.1667em"/>
<mml:mo>∗</mml:mo>
</mml:mrow>
</mml:msup></mml:math><tex-math><![CDATA[${\mathcal{G}^{\prime\prime \hspace{0.1667em}\ast }}$]]></tex-math></alternatives></inline-formula>) needs a special treatment, including such exceptions. The algorithm from the proof of Theorem <xref rid="j_infor568_stat_007">2</xref> could be used directly to these elements of the classes, supplemented by arc <inline-formula id="j_infor568_ineq_204"><alternatives><mml:math>
<mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo>
<mml:mi mathvariant="italic">b</mml:mi>
<mml:mo mathvariant="normal">,</mml:mo>
<mml:mi mathvariant="italic">a</mml:mi>
<mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math><tex-math><![CDATA[$(b,a)$]]></tex-math></alternatives></inline-formula>, that are not such problematic instances.</p>
</sec>
<sec id="j_infor568_s_004">
<label>4</label>
<title>Conclusion</title>
<p>Until now, the quasi-adjoint graphs were the widest class of digraphs proven to have a polynomial-time solution of the Hamiltonian cycle and path problems based on the transformation of graphs <italic>G</italic> into <italic>H</italic>. The extended classes of digraphs defined in the paper add new cases to this class. In addition, the reduction of arcs being a part of the proposed algorithms can function standalone and can be applied to digraphs outside the classes, possibly resulting in polynomial-time solutions for them.</p>
<p>The case of the Hamiltonian path has a more complicated solution because of the underlying assumptions in the definitions of the classes. Research on the algorithm for this problem could especially benefit, as the Hamiltonian path model is willingly used for real-life problems. As one of the current applications, the computational part of the process of genome assembly can be given, modelled, among others, as searching for variants of such a path (Swat <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor568_ref_019">2021</xref>).</p>
</sec>
</body>
<back>
<ref-list id="j_infor568_reflist_001">
<title>References</title>
<ref id="j_infor568_ref_001">
<mixed-citation publication-type="journal"><string-name><surname>Bang-Jensen</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Gutin</surname>, <given-names>G.</given-names></string-name> (<year>1999</year>). <article-title>On the complexity of Hamiltonian path and cycle problems in certain classes of digraphs</article-title>. <source>Discrete Applied Mathematics</source>, <volume>95</volume>, <fpage>41</fpage>–<lpage>60</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_002">
<mixed-citation publication-type="book"><string-name><surname>Bang-Jensen</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Gutin</surname>, <given-names>G.</given-names></string-name> (<year>2002</year>). <source>Digraphs. Theory, Algorithms and Applications</source>. <publisher-name>Springer-Verlag</publisher-name>, <publisher-loc>London</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_003">
<mixed-citation publication-type="book"><string-name><surname>Berge</surname>, <given-names>C.</given-names></string-name> (<year>1973</year>). <source>Graphs and Hypergraphs</source>. <publisher-name>North-Holland Publishing Company</publisher-name>, <publisher-loc>London</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_004">
<mixed-citation publication-type="journal"><string-name><surname>Bertossi</surname>, <given-names>A.A.</given-names></string-name> (<year>1981</year>). <article-title>The edge Hamiltonian path problem is NP-complete</article-title>. <source>Information Processing Letters</source>, <volume>13</volume>(<issue>4–5</issue>), <fpage>157</fpage>–<lpage>159</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Björklund</surname>, <given-names>A.</given-names></string-name> (<year>2014</year>). <article-title>Determinant sums for undirected hamiltonicity</article-title>. <source>SIAM Journal on Computing</source>, <volume>43</volume>(<issue>1</issue>), <fpage>280</fpage>–<lpage>299</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name> (<year>2006</year>). <article-title>Computational complexity of isothermic DNA sequencing by hybridization</article-title>. <source>Discrete Applied Mathematics</source>, <volume>154</volume>(<issue>5</issue>), <fpage>718</fpage>–<lpage>729</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_007">
<mixed-citation publication-type="journal"><string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name> (<year>2012</year>). <article-title>Reduced-by-matching graphs: toward simplifying Hamiltonian circuit problem</article-title>. <source>Fundamenta Informaticae</source>, <volume>118</volume>(<issue>3</issue>), <fpage>225</fpage>–<lpage>244</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Hertz</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Kobler</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>de Werra</surname>, <given-names>D.</given-names></string-name> (<year>1999</year>). <article-title>On some properties of DNA graphs</article-title>. <source>Discrete Applied Mathematics</source>, <volume>98</volume>(<issue>1–2</issue>), <fpage>1</fpage>–<lpage>19</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Formanowicz</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Markiewicz</surname>, <given-names>W.T.</given-names></string-name> (<year>2004</year>). <article-title>Sequencing by hybridization with isothermic oligonucleotide libraries</article-title>. <source>Discrete Applied Mathematics</source>, <volume>145</volume>(<issue>1</issue>), <fpage>40</fpage>–<lpage>51</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_010">
<mixed-citation publication-type="journal"><string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Leroy-Beaulieu</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>de Werra</surname>, <given-names>D.</given-names></string-name> (<year>2008</year>). <article-title>Finding Hamiltonian circuits in quasi-adjoint graphs</article-title>. <source>Discrete Applied Mathematics</source>, <volume>156</volume>(<issue>13</issue>), <fpage>2573</fpage>–<lpage>2580</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_011">
<mixed-citation publication-type="journal"><string-name><surname>Favaron</surname>, <given-names>O.</given-names></string-name>, <string-name><surname>Ordaz</surname>, <given-names>O.</given-names></string-name> (<year>1986</year>). <article-title>A sufficient condition for oriented graphs to be Hamiltonian</article-title>. <source>Discrete Mathematics</source>, <volume>58</volume>(<issue>3</issue>), <fpage>243</fpage>–<lpage>252</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_012">
<mixed-citation publication-type="book"><string-name><surname>Garey</surname>, <given-names>M.R.</given-names></string-name>, <string-name><surname>Johnson</surname>, <given-names>D.S.</given-names></string-name> (<year>1979</year>). <source>Computers and Intractability. A Guide to the Theory of NP-Completeness</source>. <publisher-name>W.H. Freeman and Company</publisher-name>, <publisher-loc>San Francisco</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Gould</surname>, <given-names>R.J.</given-names></string-name> (<year>1991</year>). <article-title>Updating the Hamiltonian problem – a survey</article-title>. <source>Journal of Graph Theory</source>, <volume>15</volume>(<issue>2</issue>), <fpage>121</fpage>–<lpage>157</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_014">
<mixed-citation publication-type="book"><string-name><surname>Gross</surname>, <given-names>J.L.</given-names></string-name>, <string-name><surname>Yellen</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>P.</given-names></string-name> (Eds.) (<year>2013</year>). <source>Handbook of Graph Theory</source>, <edition>second edition</edition>. <publisher-name>Chapman and Hall/CRC</publisher-name>, <publisher-loc>Boca Raton</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_015">
<mixed-citation publication-type="journal"><string-name><surname>Jäger</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Zhang</surname>, <given-names>W.</given-names></string-name> (<year>2010</year>). <article-title>An effective algorithm for and phase transitions of the directed Hamiltonian cycle problem</article-title>. <source>Journal of Artificial Intelligence Research</source>, <volume>39</volume>, <fpage>663</fpage>–<lpage>687</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_016">
<mixed-citation publication-type="journal"><string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name> (<year>2018</year>). <article-title>Classification of de Bruijn-based labeled digraphs</article-title>. <source>Discrete Applied Mathematics</source>, <volume>234</volume>, <fpage>86</fpage>–<lpage>92</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_017">
<mixed-citation publication-type="journal"><string-name><surname>Kasteleyn</surname>, <given-names>P.W.</given-names></string-name> (<year>1963</year>). <article-title>A soluble self-avoiding walk problem</article-title>. <source>Physica</source>, <volume>29</volume>(<issue>12</issue>), <fpage>1329</fpage>–<lpage>1337</lpage>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_018">
<mixed-citation publication-type="book"><string-name><surname>Lawler</surname>, <given-names>E.L.</given-names></string-name> (<year>1976</year>). <source>Combinatorial Optimization: Networks and Matroids</source>. <publisher-name>Holt, Rinehart and Winston</publisher-name>, <publisher-loc>New York</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor568_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Swat</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Laskowski</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Badura</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Frohmberg</surname>, <given-names>W.</given-names></string-name>, <string-name><surname>Wojciechowski</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Swiercz</surname>, <given-names>A.</given-names></string-name>, <string-name><surname>Kasprzak</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Blazewicz</surname>, <given-names>J.</given-names></string-name> (<year>2021</year>). <article-title>Genome-scale de novo assembly using ALGA</article-title>. <source>Bioinformatics</source>, <volume>37</volume>(<issue>12</issue>), <fpage>1644</fpage>–<lpage>1651</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>
