In combinatorial auctions, multiple goods are sold simultaneously and bidders may bid for arbitrary combinations of goods. Determining the outcome of such an auction is an optimization problem that is NP-complete in the general case. We propose two methods of overcoming this apparent intractability. The first method, which is guaranteed to be optimal, reduces running time by structuring the search space so that a modified depth-first search usually avoids even considering allocations that contain confl icting bids. Caching and pruning are also used to speed searching. Our second method is a heuristic, market-based approach. It sets up a virtual multi-round auction in which a virtual agent represents each original bid bundle and places bids, according to a fixed strategy, for each good in that bundle. We show through experiments on synthetic data that (a) our first method finds optimal allocations quickly and offers good anytime performance, and (b) in many cases our second method, despite lacking guarantees regarding optimality or running time, quickly reaches solutions that are nearly optimal. 1 Combina tor ia l Auct ions Auction theory has received increasing attention from computer scientists in recent years. One reason is the explosion of internet-based auctions. The use of auctions in business-to-business trades is also increasing rapidly [Cortese and Stepanek, 1998]. Within AI there is growing interest in using auction mechanisms to solve distributed resource allocation problems. For example, auctions and other market mechanisms are used in network bandwidth allocation, distributed configuration design, factory scheduling, and operating system memory allocation [Clearwater, 1996]. Market-oriented programming has 1 Funded in part by DARPA under the CoABS program, contract #F30602-98-C-0214. been particularly influential [Wellman, 1993; Mullen and Wellman, 1996]. The value of a good to a potential buyer can depend on what other goods s/he wins. We say that there exists complementarity between goods and to bidder b if where is the uti l i ty to h of acquiring the set of goods G. If goods g and were auctioned separately, it is l ikely that neither of the typically desired properties for auctions—efficiency and revenue maximization—would hold. One way to accommodate complementarity in auctions is to allow bids for combinations of goods as well as individual goods. Generally, auctions in which multiple goods are auctioned simultaneously and bidders place as many bids as they want for different bundles of goods are called combinatorial auctions. It is also common for bidders to desire a second good less if they have already won a first. We say that there exists substitutability between goods g and h to bidder b when A common example of substitutability is for a bidder to be indifferent between several goods but not to want more than one. In order to be useful, a combinatorial auction mechanism should provide some way for bidders to indicate that goods are substitutable. Combinatorial auctions are applicable to many realworld situations. In an auction for the right to use rai lroad segments a bidder desires a bundle of segments that connect two particular points; at the same time, there may be alternate paths between these points and the bidder needs only one [Brewer and Plott, 1996]. Similarly, in the FCC spectrum auction bidders may desire licenses for multiple geographical regions at the same frequency band while being indifferent to which particular band they receive [Mi lgrom, 1998]. The same situation also occurs in mil itary operations when multiple units each have several alternate plans and each plan may require a different bundle of resources. 2 Auctions in which combinatorial bidding is allowed are alternately called combinatorial and combinational.