Skip to content

Commit 4922203

Browse files
committed
Rename IsHamiltonianPath to IsHamiltonianCycle
1 parent 22b47c8 commit 4922203

File tree

10 files changed

+69
-67
lines changed

10 files changed

+69
-67
lines changed

doc/attr.xml

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,43 +1579,44 @@ gap> FacialWalks(D3, rot);
15791579
</ManSection>
15801580
<#/GAPDoc>
15811581

1582-
<#GAPDoc Label="HamiltonianPath">
1582+
<#GAPDoc Label="HamiltonianCycle">
15831583
<ManSection>
1584-
<Attr Name="HamiltonianPath" Arg="digraph"/>
1584+
<Attr Name="HamiltonianCycle" Arg="digraph"/>
15851585
<Returns>A list or <K>fail</K>.</Returns>
15861586
<Description>
1587-
Returns a Hamiltonian path if one exists, <K>fail</K> if not.<P/>
1587+
For a digraph <A>digraph</A>, this attribute returns a Hamiltonian cycle,
1588+
if one exists, and <K>fail</K> if one does not.<P/>
15881589

1589-
A <E>Hamiltonian path</E> of a digraph with <C>n</C> vertices is directed
1590+
A <E>Hamiltonian cycle</E> of a digraph with <C>n</C> vertices is a directed
15901591
cycle of length <C>n</C>. If <A>digraph</A> is a digraph that contains a
1591-
Hamiltonian path, then this function returns one, described in the form
1592-
used by <Ref Attr="DigraphAllSimpleCircuits"/>. Note if <A>digraph</A> has
1593-
0 or 1 vertices, then <C>HamiltonianPath</C> returns <C>[]</C> or
1592+
Hamiltonian cycle, then this function returns one, described in the form
1593+
used by <Ref Attr="DigraphAllSimpleCircuits"/>. Note that if <A>digraph</A>
1594+
has 0 or 1 vertices, then <Ref Attr="HamiltonianCycle"/> returns <C>[]</C> or
15941595
<C>[1]</C>, respectively.<P/>
15951596

15961597
The method used in this attribute has the same worst case complexity as
15971598
<Ref Oper="DigraphMonomorphism"/>.
15981599

15991600
<Example><![CDATA[
1600-
gap> D := Digraph([[]]);
1601+
gap> D := EmptyDigraph(1);
16011602
<immutable empty digraph with 1 vertex>
1602-
gap> HamiltonianPath(D);
1603+
gap> HamiltonianCycle(D);
16031604
[ 1 ]
1604-
gap> D := Digraph([[2], [1]]);
1605-
<immutable digraph with 2 vertices, 2 edges>
1606-
gap> HamiltonianPath(D);
1605+
gap> D := CycleDigraph(2);
1606+
<immutable cycle digraph with 2 vertices>
1607+
gap> HamiltonianCycle(D);
16071608
[ 1, 2 ]
16081609
gap> D := Digraph([[3], [], [2]]);
16091610
<immutable digraph with 3 vertices, 2 edges>
1610-
gap> HamiltonianPath(D);
1611+
gap> HamiltonianCycle(D);
16111612
fail
1612-
gap> D := Digraph([[2], [3], [1]]);
1613-
<immutable digraph with 3 vertices, 3 edges>
1614-
gap> HamiltonianPath(D);
1613+
gap> D := CycleDigraph(3);
1614+
<immutable cycle digraph with 3 vertices>
1615+
gap> HamiltonianCycle(D);
16151616
[ 1, 2, 3 ]
16161617
gap> D := GeneralisedPetersenGraph(IsMutableDigraph, 5, 2);
16171618
<mutable digraph with 10 vertices, 30 edges>
1618-
gap> HamiltonianPath(D);
1619+
gap> HamiltonianCycle(D);
16191620
fail
16201621
]]></Example>
16211622
</Description>

doc/examples.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1064,7 +1064,7 @@ gap> D := CirculantGraph(6, [2, 3]);
10641064
with 6 vertices, 18 edges>
10651065
gap> AutomorphismGroup(D) = DihedralGroup(IsPermGroup, 12);
10661066
true
1067-
gap> HamiltonianPath(D);
1067+
gap> HamiltonianCycle(D);
10681068
[ 1, 3, 5, 2, 6, 4 ]
10691069
gap> IsCompleteDigraph(CirculantGraph(6, [1, 2, 3]));
10701070
true]]></Example>

doc/prop.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -956,21 +956,21 @@ true
956956
&MUTABLE_RECOMPUTED_PROP;
957957

958958
<Example><![CDATA[
959-
gap> g := Digraph([[]]);
959+
gap> D := EmptyDigraph(1);
960960
<immutable empty digraph with 1 vertex>
961-
gap> IsHamiltonianDigraph(g);
961+
gap> IsHamiltonianDigraph(D);
962962
true
963-
gap> g := Digraph([[2], [1]]);
964-
<immutable digraph with 2 vertices, 2 edges>
965-
gap> IsHamiltonianDigraph(g);
963+
gap> D := CycleDigraph(2);
964+
<immutable cycle digraph with 2 vertices>
965+
gap> IsHamiltonianDigraph(D);
966966
true
967-
gap> g := Digraph([[3], [], [2]]);
967+
gap> D := Digraph([[3], [], [2]]);
968968
<immutable digraph with 3 vertices, 2 edges>
969-
gap> IsHamiltonianDigraph(g);
969+
gap> IsHamiltonianDigraph(D);
970970
false
971-
gap> g := Digraph([[2], [3], [1]]);
972-
<immutable digraph with 3 vertices, 3 edges>
973-
gap> IsHamiltonianDigraph(g);
971+
gap> D := CycleDigraph(3);
972+
<immutable cycle digraph with 3 vertices>
973+
gap> IsHamiltonianDigraph(D);
974974
true
975975
]]></Example>
976976
</Description>

doc/z-chap4.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
<#Include Label="DigraphLayers">
8686
<#Include Label="DigraphDegeneracy">
8787
<#Include Label="DigraphDegeneracyOrdering">
88-
<#Include Label="HamiltonianPath">
88+
<#Include Label="HamiltonianCycle">
8989
<#Include Label="NrSpanningTrees">
9090
<#Include Label="DigraphDijkstra">
9191
<#Include Label="DigraphCycleBasis">

gap/attr.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ DeclareOperation("DigraphAllChordlessCyclesOfMaximalLength",
6666
[IsDigraph, IsInt]);
6767
DeclareAttribute("DigraphAllChordlessCycles", IsDigraph);
6868
DeclareOperation("FacialWalks", [IsDigraph, IsList]);
69-
DeclareAttribute("HamiltonianPath", IsDigraph);
69+
DeclareAttribute("HamiltonianCycle", IsDigraph);
7070
DeclareAttribute("DigraphPeriod", IsDigraph);
7171
DeclareAttribute("DigraphLoops", IsDigraph);
7272

gap/attr.gi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2267,7 +2267,7 @@ function(D)
22672267
return Determinant(mat);
22682268
end);
22692269

2270-
InstallMethod(HamiltonianPath, "for a digraph", [IsDigraph],
2270+
InstallMethod(HamiltonianCycle, "for a digraph", [IsDigraph],
22712271
function(D)
22722272
local path, iter, n;
22732273

gap/prop.gi

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -605,11 +605,12 @@ function(D)
605605
return true;
606606
fi;
607607
fi;
608-
return HamiltonianPath(D) <> fail;
608+
return HamiltonianCycle(D) <> fail;
609609
end);
610610

611-
InstallMethod(IsHamiltonianDigraph, "for a digraph with hamiltonian path",
612-
[IsDigraph and HasHamiltonianPath], x -> HamiltonianPath(x) <> fail);
611+
InstallMethod(IsHamiltonianDigraph,
612+
"for a digraph with known hamiltonian cycle",
613+
[IsDigraph and HasHamiltonianCycle], x -> HamiltonianCycle(x) <> fail);
613614

614615
InstallMethod(IsDigraphCore, "for a digraph",
615616
[IsDigraph],

tst/extreme/attr.tst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,20 @@ gap> circs := DigraphAllSimpleCircuits(gr);;
4141
gap> Length(circs);
4242
1291792
4343

44-
# HamiltonianPath and IsHamiltonianDigraph
44+
# HamiltonianCycle and IsHamiltonianDigraph
4545
gap> g := CompleteDigraph(20);
4646
<immutable complete digraph with 20 vertices>
47-
gap> HamiltonianPath(g);
47+
gap> HamiltonianCycle(g);
4848
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]
4949
gap> IsDigraphMonomorphism(CycleDigraph(20),
5050
> g,
51-
> Transformation(HamiltonianPath(g)));
51+
> Transformation(HamiltonianCycle(g)));
5252
true
5353
gap> IsHamiltonianDigraph(g);
5454
true
5555
gap> g := CompleteMultipartiteDigraph([1, 9, 1, 1, 2, 1, 1, 1]);
5656
<immutable complete multipartite digraph with 17 vertices, 198 edges>
57-
gap> HamiltonianPath(g);
57+
gap> HamiltonianCycle(g);
5858
fail
5959
gap> IsHamiltonianDigraph(g);
6060
false

tst/standard/attr.tst

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,110 +2237,110 @@ gap> ForAll(D,
22372237
> d -> DigraphNrEdges(d) / 2 = DigraphNrEdges(StrongOrientation(d)));
22382238
true
22392239

2240-
# HamiltonianPath
2240+
# HamiltonianCycle
22412241
gap> g := Digraph([]);
22422242
<immutable empty digraph with 0 vertices>
2243-
gap> HamiltonianPath(g);
2243+
gap> HamiltonianCycle(g);
22442244
[ ]
22452245
gap> g := Digraph([[]]);
22462246
<immutable empty digraph with 1 vertex>
2247-
gap> HamiltonianPath(g);
2247+
gap> HamiltonianCycle(g);
22482248
[ 1 ]
22492249
gap> g := Digraph([[], []]);
22502250
<immutable empty digraph with 2 vertices>
2251-
gap> HamiltonianPath(g);
2251+
gap> HamiltonianCycle(g);
22522252
fail
22532253
gap> g := Digraph([[1]]);
22542254
<immutable digraph with 1 vertex, 1 edge>
2255-
gap> HamiltonianPath(g);
2255+
gap> HamiltonianCycle(g);
22562256
[ 1 ]
22572257
gap> g := Digraph([[2, 2], []]);
22582258
<immutable multidigraph with 2 vertices, 2 edges>
2259-
gap> HamiltonianPath(g);
2259+
gap> HamiltonianCycle(g);
22602260
fail
22612261
gap> g := Digraph([[2], [1]]);
22622262
<immutable digraph with 2 vertices, 2 edges>
2263-
gap> HamiltonianPath(g);
2263+
gap> HamiltonianCycle(g);
22642264
[ 1, 2 ]
22652265
gap> g := Digraph([[3], [3], []]);
22662266
<immutable digraph with 3 vertices, 2 edges>
2267-
gap> HamiltonianPath(g);
2267+
gap> HamiltonianCycle(g);
22682268
fail
22692269
gap> g := Digraph([[3], [3], [1, 2]]);
22702270
<immutable digraph with 3 vertices, 4 edges>
2271-
gap> HamiltonianPath(g);
2271+
gap> HamiltonianCycle(g);
22722272
fail
22732273
gap> g := Digraph([[3], [], [2]]);
22742274
<immutable digraph with 3 vertices, 2 edges>
2275-
gap> HamiltonianPath(g);
2275+
gap> HamiltonianCycle(g);
22762276
fail
22772277
gap> g := Digraph([[2], [3], [1]]);
22782278
<immutable digraph with 3 vertices, 3 edges>
2279-
gap> HamiltonianPath(g);
2279+
gap> HamiltonianCycle(g);
22802280
[ 1, 2, 3 ]
22812281
gap> g := Digraph([[2], [3], [1], []]);
22822282
<immutable digraph with 4 vertices, 3 edges>
2283-
gap> HamiltonianPath(g);
2283+
gap> HamiltonianCycle(g);
22842284
fail
22852285
gap> g := Digraph([[2], [3], [1, 4], []]);
22862286
<immutable digraph with 4 vertices, 4 edges>
2287-
gap> HamiltonianPath(g);
2287+
gap> HamiltonianCycle(g);
22882288
fail
22892289
gap> g := Digraph([[3, 6], [4], [2, 1], [5, 1], [3], [4]]);
22902290
<immutable digraph with 6 vertices, 9 edges>
2291-
gap> HamiltonianPath(g);
2291+
gap> HamiltonianCycle(g);
22922292
fail
22932293
gap> g := Digraph([[3, 6], [4, 1], [2, 1], [5, 1], [3], [4]]);
22942294
<immutable digraph with 6 vertices, 10 edges>
2295-
gap> HamiltonianPath(g);
2295+
gap> HamiltonianCycle(g);
22962296
[ 1, 6, 4, 5, 3, 2 ]
22972297
gap> g := Digraph([[3, 6], [4], [2, 1], [5, 1], [3], [4, 7], []]);
22982298
<immutable digraph with 7 vertices, 10 edges>
2299-
gap> HamiltonianPath(g);
2299+
gap> HamiltonianCycle(g);
23002300
fail
23012301
gap> g := Digraph([[3, 6, 7], [4, 1], [2, 1], [5, 1], [3], [4, 7], [6]]);
23022302
<immutable digraph with 7 vertices, 13 edges>
2303-
gap> HamiltonianPath(g);
2303+
gap> HamiltonianCycle(g);
23042304
[ 1, 7, 6, 4, 5, 3, 2 ]
23052305
gap> g := Digraph([[3, 6], [4], [2, 1], [5, 1], [3], [4, 7], [6]]);
23062306
<immutable digraph with 7 vertices, 11 edges>
2307-
gap> HamiltonianPath(g);
2307+
gap> HamiltonianCycle(g);
23082308
fail
23092309
gap> g := Digraph([[5, 6, 10], [2, 9], [3, 7], [2, 3], [9, 10], [2, 9], [1],
23102310
> [2, 3, 4, 7, 9], [3, 10], [4, 5, 6, 8]]);
23112311
<immutable digraph with 10 vertices, 25 edges>
2312-
gap> HamiltonianPath(g);
2312+
gap> HamiltonianCycle(g);
23132313
fail
23142314
gap> g := Digraph([[2, 4, 6, 10], [1, 3, 4, 5, 6, 7, 9, 10], [1, 5, 7, 8],
23152315
> [6, 10], [1, 7], [3, 4, 6, 7, 9], [2, 3, 4, 7],
23162316
> [2, 4, 5, 6], [2, 3, 5, 6, 7, 9, 10], [2, 3, 5]]);
23172317
<immutable digraph with 10 vertices, 43 edges>
2318-
gap> HamiltonianPath(g);
2318+
gap> HamiltonianCycle(g);
23192319
[ 1, 4, 6, 9, 10, 3, 8, 5, 7, 2 ]
23202320
gap> IsDigraphMonomorphism(CycleDigraph(10),
23212321
> g,
2322-
> Transformation(HamiltonianPath(g)));
2322+
> Transformation(HamiltonianCycle(g)));
23232323
true
23242324
gap> g := CompleteMultipartiteDigraph([1, 30]);
23252325
<immutable complete bipartite digraph with bicomponent sizes 1 and 30>
2326-
gap> HamiltonianPath(g);
2326+
gap> HamiltonianCycle(g);
23272327
fail
23282328
gap> g := Digraph([[2, 5, 6], [3, 1, 7], [4, 2, 8], [5, 3, 9], [1, 4, 10],
23292329
> [1, 8, 9], [2, 9, 10], [3, 10, 6], [4, 6, 7], [5, 7, 8]]);
23302330
<immutable digraph with 10 vertices, 30 edges>
2331-
gap> HamiltonianPath(g);
2331+
gap> HamiltonianCycle(g);
23322332
fail
23332333
gap> g := CompleteMultipartiteDigraph([16, 15]);
23342334
<immutable complete bipartite digraph with bicomponent sizes 16 and 15>
2335-
gap> HamiltonianPath(g);
2335+
gap> HamiltonianCycle(g);
23362336
fail
23372337
gap> g := CompleteMultipartiteDigraph([1, 15, 1, 1, 1, 1, 1, 1]);
23382338
<immutable complete multipartite digraph with 22 vertices, 252 edges>
2339-
gap> HamiltonianPath(g);
2339+
gap> HamiltonianCycle(g);
23402340
fail
23412341
gap> g := CycleDigraph(100);
23422342
<immutable cycle digraph with 100 vertices>
2343-
gap> HamiltonianPath(g);
2343+
gap> HamiltonianCycle(g);
23442344
[ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
23452345
96, 97, 98, 99, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
23462346
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -2353,7 +2353,7 @@ gap> g := DigraphAddEdges(g, [[6, 8], [8, 7], [7, 9]]);
23532353
<immutable digraph with 513 vertices, 516 edges>
23542354
gap> g := DigraphRemoveEdge(g, [6, 7]);
23552355
<immutable digraph with 513 vertices, 515 edges>
2356-
gap> HamiltonianPath(g);
2356+
gap> HamiltonianCycle(g);
23572357
[ 1, 2, 3, 4, 5, 6, 8, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
23582358
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
23592359
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
@@ -2390,7 +2390,7 @@ gap> HamiltonianPath(g);
23902390
gap> gr := DigraphAddEdges(DigraphAddVertex(CycleDigraph(600)),
23912391
> [[600, 601], [601, 600]]);
23922392
<immutable digraph with 601 vertices, 602 edges>
2393-
gap> HamiltonianPath(gr);
2393+
gap> HamiltonianCycle(gr);
23942394
fail
23952395

23962396
# DigraphCore

tst/standard/prop.tst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1636,7 +1636,7 @@ true
16361636
gap> gr := DigraphAddEdges(DigraphAddVertex(CycleDigraph(600)),
16371637
> [[600, 601], [601, 600]]);
16381638
<immutable digraph with 601 vertices, 602 edges>
1639-
gap> HamiltonianPath(gr);
1639+
gap> HamiltonianCycle(gr);
16401640
fail
16411641
gap> IsHamiltonianDigraph(gr);
16421642
false

0 commit comments

Comments
 (0)