Final Review

Pre-midterm material

  • Theoretical questions (~ 25%): Examples

    1. Formulate a specified problem, such as the Vertex Cover problem, as an integer linear program. Give its relaxation and its dual.
    2. Given a problem, give a good bound on an optimal solution.
    3. Prove approximation factors or correctness of new algorithms that are presented, such as problem 3 in HW 2 (HW2 does not ask you to prove these, but you should be able to).
    4. Give tight examples for new algorithms that you are given, such as problem 3 in HW 2.
    5. Prove any properties that you are asked to prove!
    6. Disprove statements, using counter-examples.
    7. Given a randomized algorithm, derandomize it to yield a deterministic algorithm that performs at least as well as the expected behavior of the randomized one.

    Post-midterm material

    Use algorithms (~ 50%): Examples

    1. Given a matrix, a vector, the number of processors, and the type of decomposition (1-D or 2-D), show the steps in parallel matrix-vector multiplication.
    2. Given a graph, write its Laplacian. Given a few eigenvectors for the Laplacian, choose the correct one and use it to partition the graph.
    3. Given two matrices, show the steps in the cache-aware matrix multiplication algorithm.
    4. Given a sequence of integers and a sequence of random numbers in (0, 1), demonstrate the steps in the randomized quicksort algorithm RandQS.
    5. Given a sequence of integers and a sequence of random numbers in (0, 1), demonstrate the steps in the randomized selection algorithm Find.
    6. Given a set of data and an orthogonal range query, determine a range tree that represents it, and show the steps involved in searching that tree for the specified range query.
    7. Given a text, a pattern, and a modulus, show the steps taken by the Rabin-Karp algorithm in finding all the valid shifts.
    8. Given a text, a pattern, construct a DFA and show the steps taken by the finite-automaton based algorithm in finding all the valid shifts. Show the sigma function too.

    Theoretical questions (~ 25%)

    1. Given a parallel algorithm, analyze its time complexity, and give its speedup and efficiency.
    2. Given an problem and cache complexity, give an algorithm that solves the problem with the specified cache complexity under the ideal cache model. For example, matrix-vector multiplication with O(n2/L) cache complexity.
    3. Analyze the time complexity of modifications to the randomized sorting and selection algorithms discussed in class.
    4. Given a modified version of the string-matching problem, such as a 2-D search, give modifications to the Rabin-Karp algorithms to solve the modified problem.
    5. Prove or disprove statements about properties of strings, such as lemma 32.1.

    Notes:

    1. You should show steps in questions that ask you to use an algorithm.
    2. You should justify answers to theoretical questions.
    3. You may use facts that we have discussed in class, such as lemma 32.1, unless the question forbids it.
    4. The exam is closed book and closed notes.

    Weights


    Last modified: 20 Feb 2005