Group Testing refers to the situation in which one is given a set of objects script O sign, an unknown subset P ⊆ script O sign, and the task is to determine P by asking queries of the type "does P intersect Q?", where Q is a subset of script O sign. Group testing is a basic search paradigm that occurs in a variety of situations such as quality control in product testing, searching in storage systems, multiple access communications, and software testing, among the others. Group testing procedures have been recently applied in Computational Molecular Biology, where they are used for screening library of clones with hybridization probes and sequencing by hybridization. Motivated by particular features of group testing algorithms used in biological screening, we study the efficiency of two-stage group testing procedures. Our main result is the first optimal two-stage algorithm that uses a number of tests of the same order as the information theoretic lower bound on the problem. We also provide efficient algorithms for the case in which there is a Bernoulli probability distribution on the possible sets P, and an optimal algorithm for the case in which the outcome of tests may be unreliable because of the presence of "inhibitory" items in script O sign. Our results depend on a combinatorial structure introduced in this paper. We believe that it will prove useful in other contexts too.