A fast parallel algorithm for the maximal independent set problem

A parallel algorithm is presented that accepts as input a graph <italic>G</italic> and produces a maximal independent set of vertices in <italic>G</italic>. On a P-RAM without the concurrent write or concurrent read features, the algorithm executes in <italic>O</italic>((log <italic>n</italic>)<supscrpt>4</supscrpt>) time and uses <italic>O</italic>((<italic>n</italic>/(log <italic>n</italic>))<supscrpt>3</supscrpt>) processors, where <italic>n</italic> is the number of vertices in <italic>G</italic>. The algorithm has several novel features that may find other applications. These include the use of balanced incomplete block designs to replace random sampling by deterministic sampling, and the use of a “dynamic pigeonhole principle” that generalizes the conventional pigeonhole principle.