Algorithm Design Exercises 1

These are the exercises for chapter 1 of The Algorithm Design Manual.

1-1

Show that $a + b$ can be less than $min(a,b)$

Where $a,b < 0$, e.g. if $a = -1, b = -2$, then $a + b = -3 < min(a,b) = -5$.

1-2

Show that $a \times b$ can be less than $min(a,b)$

Where one of $\{a,b\}$ is negative and one is positive, e.g. if $a = -1, b = 2$, then $a \times b = -2 < min(a,b) = -1$.

1-3

Design/draw a road network with two points $a$ and $b$ such that the fastest route between $a$ and $b$ is not the shortest route.

E.g.

a──────c──────b
│             │
│             │
└────┐   ┌────┘
     └─d─┘

If $\overrightarrow{acb}$ is less distance than $\overrightarrow{adb}$, but there is a single lane bridge with traffic lights at $c$, then $\overrightarrow{adb}$ can be the faster route despite not being the shortest.

1-4

Design/draw a road network with two points $a$ and $b$ such that the shortest route between $a$ and $b$ is not the route with the fewest turns.

E.g.

      ┌┐
      ││      
      ││
      ││
      ││
      ││
a─────┘└c────b
│ ┌┐┌┐   ┌┐  │
└─┘└┘└─d─┘└──┘
     

The route $\overrightarrow{adb}$ has 13 turns and a distance of 23, while the route $\overrightarrow{acb}$ has 4 turns but a distance of 25.

1-5

The knapsack problem is as follows: given a set of integers $S = \{s_1,s_2,…s_n\}$, and a target number $T$, find a subset of $S$ which adds up exactly to $T$. For example, there exists a subset within $S = \{1,2,5,9,10\}$ that adds up to $T = 22$ but not $T = 23$.

Find counterexamples to each of the following algorithms for the knapsack problem. That is, giving an S and T such that the subset is selected using the algorithm does not leave the knapsack completely full, even though such a solution exists.

 

(a) Put the elements of $S$ in the knapsack in left to right order if they fit, i.e. the first-fit algorithm.

E.g. $S = \{1,3,2\}$ and $T = 5$. The solution is $\{3,2\}$, but this algorithm will first select $\{1,3\}$ and then be unable to make the target.

(b) Put the elements of $S$ in the knapsack from smallest to largest, i.e. the best-fit algorithm.

Can use the same set as for (a), above. In size order it’s $S = \{1,2,3\}$, when $T = 5$ this algorithm will first select $\{1,2\}$ and then be unable to make the target.

(c) Put the elements of $S$ in the knapsack from largest to smallest.

E.g. $S = \{1,4,2\}$ and $T = 3$. This algorithm will first select $\{4,2\}$ and go over the target.

1-6

The set cover problem is as follows: given a set of subsets $S_1,…,S_m$ of the universal set $U = \{1,…,n\}$, find the smallest subset of subsets $T \subset S$ such that $\cup_{t_i \in T} t_i = U$.

For example, there are the following subsets, $S_1 = \{1,3,5\}$, $S_2 = \{2,4\}$, $S_3 = \{1,4\}$ and $S_4 = \{2,5\}$. The set cover would then be $S_1$ and $S_2$.

Find a counterexample for the following algorithm: Select the largest subset for the cover, and then delete all its elements from the universal set. Repeat by adding the subset containing the largest number of uncovered elements until all are covered.

This seems similar to algorithm (c) for the knapsack problem above. E.g. for the following set of sets:

The optimal solution is $\{S_4,S_5\}$ with a size of 2, but this algorithm will select $\{S_3,S_1,S_2\}$ or $\{S_3,S_1,S_5\}$ each with a size of 3.

1-26

Nearest neighbour demo

1-28

1-28

1-29

There are 25 horses. At most, 5 horses can race together at a time. You must determine the fastest, second fastest, and third fastest horses. Find the minimum number of races in which this can be done.