1. A method, comprising: representing each of a plurality of subtasks configured to explore optimization alternatives for a combinatorial optimization problem by a reentrant finite state machine; representing a space of optimization alternatives for a combinatorial optimization problem by a recursive data structure, wherein the reentrant finite state machine includes a state to store a solution to the given subtask in the data structure; using a processor to assign a first subtask of the plurality of subtasks to a first processing thread, and a second subtask of the plurality of subtasks to a second processing thread; determining that processing a current state of a first state machine associated with the first subtask is in a blocked condition that cannot be completed until the second subtask has been completed; and suspending the first state machine for future reentrance and making the first processing thread available to perform a third subtask not currently in the blocked condition.