It would be fun to ski the whole Sun Peaks nordic trail network in a single day. Too lazy to plot a good route by hand, I wrote a computer program to find some good routes that traverse the entire trail network, all of them under 43km — see below (click the image for a larger version).
Sun Peaks has about 35km of groomed nordic trails. But the shortest route that covers the whole network is longer — about 43km — since some trails are inevitably skied twice. In graph-theoretic terms, the network has no Eulerian path because it has some odd-degree vertices: if an odd number of trails meet at an intersection, then one of those trails has to be skied twice. The problem then is to choose which trails to ski twice, so that the total distance/elevation gain are as small as possible. Finding an optimal route is an instance of the “route inspection” or “Chinese postman” problem, which is similar to the famous “travelling salesman problem“. The number of possible routes is astronomically huge, which is why doing this by hand is so hard.
That’s about all the graph theory I know. A better mathematician would use a graph-theoretic algorithm to do this. Instead, I used simulated annealing to search for a route that covers all the trails while trying to minimize a weighted sum of the total distance and total elevation gain, and avoiding having to ski certain trails in an “undesirable” direction (e.g. I don’t want to skate up En Garde in the middle of a 43km ski). This search algorithm has an element of randomness, so every time the code runs it finds a different route. The routes shown above are just a few that offer some variety, though inevitably there are similarities.
In all there are 29 intersections and 48 trail segments, not including the two isolated trails to the village and outpost cabin. Stripping away the geography gives a “mathematician’s view” of the trail network (drawn using the igraph package in the R language):
My numbering of intersections is a bit haphazard — the result of making many corrections along the way. Distances shown are only approximate: I had to estimate them from the trail map. If anyone has more accurate GPS data I would love to have it!
Update 19.01.2021 — I’m delighted (surprised!) that interest in this continues. By request, I worked out some optimal routes that include the ski up (and back down) Holy Cow, rather than riding the chairlift up (what! are you crazy!?). Here is one such, which excludes the currently-closed part of En Garde between Black Bear and Great Grey:
24 28 21 20 22 12 17 16 13 14 4 3 2 15 1 29 1 2 3 5 4 5 25 26 9 11 27 12 27 10 9 8 11 9 8 7 6 5 6 26 25 10 27 23 28 23 22 27 13 14 15 18 19 20 17 12 16 17 20 19 21 24
Find Your Own Route
Here I’ve doubled up some of the trail segments so that an even number of trails leave every intersection: this guarantees existence of a closed-loop route that visits every segment exactly once. Every doubled-up segment corresponds to a trail that you will have to ski twice (though not necessarily in the same direction each time) so I’ve tried to double up only on short segments.
Try printing the image above and drawing a route on it with a pencil: start wherever you want and trace a route so that you never trace over the same path twice. In this way you can easily find lots of different routes that cover the whole network. They all have the same total distance (about 43 km).
Note: to follow the recommended safest directions on Stellar Jay / En Garde you’ll have to ski up segment 8-11 twice.
To include the Holy Cow climb you need to delete segment 24-29, but then you also need to add/delete other doubled-up segments so that you again end up with an even number of trails at every intersection. If you have the fortitude for such a ski then you certainly have the mental stamina to work this out for yourself.