-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathhcoset.html
117 lines (86 loc) · 4.24 KB
/
hcoset.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<html><head><title>Tom's Coset Solver</title></head><body>
<pre>
This code should build on almost any linux platform. It requires
pthreads but not much else.
On a 32-bit platform, it needs a kernel that supports a 4GB userspace.
These are rare, but can be found.
* Compiling *
In general, just type
make
That should generate the programs hcoset. This program requires
about 3.4GB to run.
The first time you run one of these programs, they will take a
while and generate a large pruning table. On a fast machine
this will take about ten minutes. The pruning table this program
needs is about 680MB in size.
General usage is:
./hcoset [options] [seq]
Either you can give a sequence, or you can use the -r switch
below, or you can do neither in which case it defaults to
running all 56 million cosets in the embedded cover.
A valid seq is some sequence of moves (in notation such as
R3F1U2R3U3B3F1L1F3U2---note, face in capital letters, followed
by required numeric twist of 1, 2, or 3 for each move), or it
can be a pair of numbers indicating a range of cosets to run.
This latter uses built-in information about what cosets to run
to prove 21, and then to add to that collection to prove 20.
In general, the first move should always be one of F1, F3,
R1, R3, B1, B3, L1, L3 as the other moves leave the position
in the Kociemba group and thus have no effect.
Options are as follows:
-t n Run with n threads (up to 8 currently, but it's a
compile-time constant so can easily be increased).
If you have hyperthreading, use it.
-S n Use search only up to depth n. This means values
after n will be conservative, but of course this
makes things much faster. For HTM, -S 16 is
usually sufficient to prove all positions take
20 moves or less. Tuning this value is your primary
means of trading off speed for exact counts at the
higher plys.
-e n Terminate search (and use prepass only) once this
many bits have been set. This is useful to get
even more speed, by not doing a full search at the
maximum -S level. This option only takes effect
on the last search (typically the value passed to
-S) and indicates it need not be a full search.
-d n Don't do a prepass or a search past this level.
Typical value is 20.
-a Suppress bit counts for phases where we only do a
prepass. This gives a small speed bump.
-f sfil Write the remaing positions in SING format to
the file named sfil, rather than to stdout.
-F Select options for quick proof of 20. This sets
enoughbits (-e) magically for levels 15 and 16, and
also selects -S 16, -d 20, and forces all positions
left after 20 to be dumped.
-r a b If b>a, then only run the cosets b..(a-1) from the
input file (where the first coset is given index
0). If b<=a, then run the cosets b..(b+a-1).
Options used only for testing and validation:
-U Disable prepass; let all positions be found by
search.
-s # With values of 0 or 1, does a very simple and
relatively slow coset search, with no threading
or prepass. This is used to verify the results
of the faster default search.
There may be more options, but they are experimental or
enable little-used features.
If you don't see "Completed." at the end, something went wrong and the
program did not terminate properly.
The line
Tests at 12 16110 in 0.00122499 unique 16713 thislev 15533 bits 16713 nodes 5019
3
means that we did a search pass at depth 12 and found 16,110 ways to get
to the Kociemba group; it took 0.00122499 seconds. After this pass we
had found a total of 16,613 total positions, which include the 15,533
found at this level. Bits will always equal unique in this version.
Nodes is the total count of nodes evaluated during the search.
The line
Prepass at 17 done in 12.3186; unique 3978706016
says we executed a prepass at depth 17 in 12.3186 seconds, and that prepass
increased the total found positions to 3978706016.
Note that we don't use prepasses at very low depths; it's faster just to do
a more extensive search.
</pre>
</body></html>