NoodlePath generates an Euler path that attempts to minimize a given heuristic (such as the sum of angles between edges).
One current limitation is that it only accepts even valence for every nodes of the input graph. I think.
Requirements: a C++14 compiler (g++ 5.1+, clang 3.4+, Visual Studio 2015+)
mkdir build
cd build && cmake .. && make
./noodlepath -g graphFile > pathFile
to generate a pathFile from a graphFile
./noodlepath -g graphFile -p pathFile
to print out an evaluation of the pathFile (turning costs + total distance)
Complete Usage: NoodlePath [OPTION...]
-a, --algorithm arg Algorithm to use: fleury or |hierholzer|
-h, --heuristic arg Heuristic to use: |angle|, angleDistance or random
-g, --graphFile arg Graph file path
-p, --pathFile arg Path file: will print stats about the given path
-s, --startNode arg Choose start node. Default is 0 or first odd degree
node
--help Print help
NODE_ID X Y Z [list of connected NODE_ID]
0 0 0 0 2 4
1 1 0 0 4 2
2 1 1 0 3 4 0 1
3 0.5 2 0 4 2
4 0 1 0 0 1 2 3