Final answer:
To show the 'CS focus group' problem as NP-complete, it must be proven to be in NP and reducible to a known NP-complete problem. Part b would require adjusting the proof to include the new constraint of excluding ENGG course-takers. A randomized algorithm for part c could be Monte-Carlo or Las Vegas, and should avoid sample bias by ensuring equal selection chances.
Step-by-step explanation:
The 'CS focus group' problem refers to selecting a group of k students from different computer science courses to gather comprehensive feedback while minimizing group size. To prove this problem is NP-complete, we would need to demonstrate that it is both in NP and that any problem in NP can be reduced to it in polynomial time, a process that often involves relating it to known NP-complete problems like Set Cover or Vertex Cover. The goal is to create a subset of students that collectively covers all the CS courses, which is a similar conceptual framework as these well-known problems.
For part b, if the constraint is added where students cannot be taking an ENGG course simultaneously, the proof would still follow a similar structure but would need additional components to capture the increased complexity of the problem. This might involve modifying the reduction to account for the additional constraint or showing that this version of the problem is also NP-hard separately.
Regarding part c, a randomized algorithm might approach the problem by repeatedly selecting random groups of students until it finds one that covers all courses or reaches a specified iteration limit. Depending on whether the algorithm guarantees a correct solution (and thus may run indefinitely) or provides a probable solution within a fixed number of steps, it would be classified as Las Vegas or Monte-Carlo, respectively. To avoid a biased outcome, the student selection process within the algorithm must ensure that each student has an equal chance of being chosen.