CPSC 327 Data Structures and Algorithms Spring 2024

Homework 13
due Fri 3/8 in class

Ski orienteering is the sport of cross-country navigation on skis - competitors must navigate to a series of checkpoints (called controls) using a map and compass. An orange-and-white flag marks the location in the terrain. Controls typically must be visited in a particular order, and the goal is to navigate to a certain sequence of controls as quickly as possible.

Maps for ski-o (click for a larger version) show the track network, terrain, vegetation, and the course:

It is OK to visit a control more than once (or visit controls not on your course) as long as there is a subsequence of controls visited that contains the right controls in the right order.


  1. Model a ski-o race as a graph problem and give an efficient algorithm for finding the fastest route through the course.

    Use the "design graphs, not algorithms" philosophy - design a graph so that the desired solution can be obtained from a standard graph algorithm (or algorithms) discussed in class, rather than customizing an algorithm or even designing one from scratch.

    Be sure to fully describe how the graph is formulated - what do the vertices of the graph represent? The edges? Is the graph undirected or directed? Weighted or unweighted? (If weighted, what do the weights represent?) What is a solution to the problem in terms of the graph? Also address: Is the graph simple or not simple? Sparse or dense? Cyclic or acyclic? Provide a brief explanation with each answer.

You can make the following assumptions for this problem: