Question 1:
Generally well done.
Points were deducted if you didn't follow the instructions correctly,
or if your maximum independent set was wrong.
Question 2:
* 5 points for a creative, sensible heuristic choice (e.g. pick
vertex of max. degree first)
* 15 points for a correct algorithm
* 5 points for proving your algorithm runs in polynomial time
* 5 points for providing an example where your alg fails
Fairly well done all around. The biggest mistake was that people
provided an example in which your algorithm sometimes failed; this
is not sufficient. You need to provide an example in which your
algorithm *always* fails (note that this might be an impossible
feat if you didn't employ some heuristic vertex selection tactic
like maxdegree).
Question 3:
* 8 points for correctly determining the size of the max.
independent set
* 17 points for having an algorithm that works correctly in
polynomial time
* 5 points for polynomial time justification
Overall, very well done by most. Some problems students used
exponential time algorithms, which resulted in a huge penalty.
Question 4:
* 3 points for realizing the structure of the graph (a family of
one or more disjoint cycles)
* 15 points for the algorithm
* 7 points for your correctness proof
* 5 points for complexity analysis
The biggest problem here was that students didn't realize that
such a graph may be more than one cycle. Apart from this, many
students relied on their algorithms from part (2), which was fine
if your alg from part (2) worked, and quite bad if it didn't.
Question 5:
* 2 points for showing HalfClique in NP
* 5 points for a working reduction algorithm
* 2 points for showing correctness
* 1 point for complexity analysis of reduction
Those who did this question did it fairly well all around.
Problems included insufficient complexity analyses, and
incorrect or partially correct algorithms. Some of you also
assumed we could take k-subsets in polytime or even solve
Clique in poly-time, which is incorrect.
General Notes:
PLEASE be careful about your mathematical notation. A graph
is an ordered pair G=(V,E), with V a set of vertices and
E = {{x,y}|x, y in V, x != y}.
If you tell me that you remove v1 from G, this doesn't *really*
make sense, because I don't know if you're just removing it
from V or if you're also removing all edges that contain v1.
And in certain problems, you're expected to return a vertex set,
where some of you returned a whole graph, or vice versa.
Note that I didn't take any marks off for this if I got the jist
of what you were doing and it seemed to work correctly, but in the
future, please try to be more precise.