September 12, 2026 · note
Parameterized Algorithms Ch. 1: exploiting a small k
My analysis of Chapter 1 of Cygan et al. with a clean solution to Vertex Cover Problem!
Book: Cygan, Fomin, Kowalik, Lokshtanov, Marx, Pilipczuk, Pilipczuk, Saurabh, Parameterized Algorithms (Springer, 2016), Chapter 1 On the writing: the content and the reasoning here are mine. I used an AI to reorder it and format the tables.
So to start with the author picks up the Bar Fight Prevention Problem which is basically a problem which states:
"You have a list of all of the n people who will come to the bar, and for each pair of people a prediction of whether or not they will fight if they both are admitted. You need to figure out whether it is possible to admit everyone except for at most k troublemakers, such that no fight breaks out among the admitted guests."
The diagram of the graph the author gives:
My analysis for the solution
This is clearly the vertex cover problem which is a NP complete problem as everyone knows.
The standard non optimal solution is a exponential solution in which for bounds like takes the time , which is a extremely large number, much larger than even the Avogadro’s constant.
Now suppose we have the fact that () is very small, thus we can exploit its advantage to solve the problem. We now do a chain of thoughts of different observations for the optimal solution:
Idea one
We can chose any pair of elements which is which is still large for the bounds:
Idea two
We know that any node that has more than edges surely must be removed since for keeping that node we must remove the other nodes and hence that invalidates the answer, similarly for the nodes that are not connected to other nodes can surely be taken (isolated islands).

One precheck
We know that total edges count must be less than .
(Why?) Reason is that at worst case even if each node is connected to other nodes, even after removal of nodes there will surely exist at least one edge which shows answer does not exist.
This is a very similar idea to what we do after removal of edges as in reverse process of the Kruskal Algorithm, reverse the idea and then it builds the answer. Please be clear this isn’t the actual answer and it just a heuristic unlike the correct idea of removing nodes with degree or higher.
Idea three
Now suppose we have a list of people who are admitted and some who aren’t, can have at max conflicts and minimum 1, thus there can be a total of nodes in worst case for edges not used, as this is a dense graph overall it can be fast overall.
Hence this takes the following number of operations:
Idea four (Kernelization)
Say for some person with one edge we can surely take that.
(Why?) Reason is suppose we don’t take it and instead take someone else then we surely know that the other guy will have the node degree . Hence it is always optimal to take those nodes with degree .
Now we can reduce the bound of to , the reason is pretty simple, all the nodes with degree one aren’t present hence min degree is 2 and hence total edges at worst case has 2 end points thus nodes used and there we know that each has atleast 2 edges hence worst case unique nodes is .
Idea five
We can also bound the time complexity by another logic of bounding the search space, for each conflict try removing one of the two and keep going deep into the tree with remaining options decreased by 1, this way the worst case of recursive calls is as we know that at each height nodes double by 2 as the recurrence:
to check and verify if the solution exists as we know we can easily check any NP complete problem in polynomial time. Here is the possible conflicts which is bounded again by reason being very similar to what it was above:
hence the solution of recurrence becomes:
Worst case bound is which is computable with smart implementation. If we kernelize first then , so each call costs and the total is .
The numbers
For and :
| Approach | Cost | Roughly | Runnable |
|---|---|---|---|
| Every subset | no | ||
| Every -subset (1) | no | ||
| After forced removals (3) | no | ||
| After kernelization (4) | no | ||
| Search tree (5) | seconds | ||
| Kernelize, then search (4 + 5) | instant |
The idea of exploiting small to find a much efficient solution is what motivates this topic.
FPT
A problem parameterized by is fixed-parameter tractable (FPT) if it can be solved in time , where is a computable function depending only on .
A similar idea for finding cliques with the constraint of max degree bounded by some value delta say (), this can be done by FPT as well. Any clique then has at most vertices, so for each vertex we only search its own neighbourhood:
I won’t state the standard definitions because those aren’t the point of discussion here unlike my understanding for the topic and that’s it for the first note. Do mail me for any suggestions as that would help me learn more about writing and expressing my thoughts!