Setup. Suppose you're on the first floor and going up to your office on the $M$-th floor of a skyscraper. On floor $i$, there are $n_i$ people that you'd like to talk to. However, you only have time to stop at $k$ intermediate floors (not including the $M$-th floor). If you stop on floor $i$, you can talk to all $n_i$ people on that floor. Your utility function is the number of people you end up talking to. To simplify the problem, you're going up in one direction only and $n_i \gt 0$ for every floor $i$, $1 \leq i \lt M$.
  1. [2 points] Setup a state space model where finding the minimum cost path corresponds to maximizing your utility. Be precise.
  2. [2 points] Which search algorithms (out of: DAG search, DFS, BFS, UCS, Bellman-Ford) will maximize your utility?
  3. [2 points] As a function of $M$ and $k$, what is the running time of each search algorithm that you chose above?
  4. [2 points] Devise an algorithm to solve this problem without search in $O(M \log M)$ time. (Remember that having a state space model doesn't mean you need to do search.)