"MIN": THE EARLIER VERSION OF "MING"
Ying-Qing Wu
"min" works on unix. It does not have graphic output. It can
read a knot file, compute its energy, and run the minimizing process
for any number of steps. It can add vertices, or double the number of
vertices. The output contains the new knot, the MD energy,
vertex-energy and edge energy for the knot, and for the standard
unknot of the same number of edges. The code file is min.c++ . It can be compiled by any C++
compiler, for example
g++ min.c++ -lm -o min
To run the program, type "min" or "min knot1 knot2", where knot1 is
the input file, and knot2 the output file. See the section "Knot
File" below for informations about how to specify a knot. The program
will ask you to send a command. Type "h" to see a list of commands.
Here are some of them that need explanation.
- method: Toggle between Method m and Method e for approaching.
Method m uses gradient flow of MD energy, Method e uses
that of edge energy. Method e might change knot type.
- pstyle: Toggle between short (default) and long output
printing stype.
The short style only contains the knot data and energy,
the long style also contains gradient and edge length.
- tpoint x: Set up turning point between two different
approaches. The
first one is faster for bad knot, while the second one
is more accurate. See below for details. x=-1 (default)
for automatic change. Set x between 0 and 1 if you want
it run x*100% with the first method.
If number of edges exceed 1010, change "size 1010" in the #define part
of the program file to the desired number.
The program runs in two different methods:
1. Move each vertex according to its own gradient and derivative,
subject to restriction on minimum distance from adjacent edges to the
other edges. For generic knot, this one reduce energy more rapidly,
but it does not work when close to a critical point.
2. Move along gradient direction, try to minimize gradient. It is
slower, but gets better approach to critical point.
Definition. A "badrun" is a step which increases the energy.
"badrunlimit" is a number set to 0.01. "runnum" is the total number
of steps.
When the number of badruns exceed badrunlimit*runnum, the program
change from method 1 to method 2. After that, each time badruns
exceed that number the speed in method 2 is bring down by a factor of
0.9.
Thus, for example, if the energy of the knot is already close to
minimum, we may set
tpoint to 0 to use method 2 only, to get slow but accurate approach.
On the other hand, if we only want some rough approach, we may set
tpoint to 1.
You may look at the sample file knot.5-1 ,
which is the file of an 18 edges knot named 5_1 on the knot table.
There are some freedom about the format of the file, but it must
following the following rules:
- The first integer number N indicate the number of vertices on the knot.
You may put some comments before this number, like the name of the knot,
but it should contain no numbers.
- Each of the following N lines contains three real numbers, which are
the coordinates of the vertices.
Here is another example file knot.5-1.1000
, which is actually the output file of "min" after running for
1000 steps. Output files can be used as input files.
to the Ying-Qing Wu's home page .