Patent ID: 7577554

Claim:
A process for modeling at least a portion of a workflow for logistics planning of an enterprise, comprising: accessing a computer data structure that represents an acyclic directed graph, the acyclic directed graph represents the workflow for logistics planning of the enterprise and comprises a plurality of nodes and one or more edges, each of the edges linking two adjacent nodes within the acyclic directed graph; requesting the value of a first function at a selected node, the value of the first function at the selected node depending at least in part on values of the first function at one or more adjacent nodes lying in a first direction from the selected node within the acyclic directed graph, a cached value of at least a second function at the selected node depending only on the value of the first function at the selected node and one or more other values associated with the selected node; determining whether a cached value of the first function at the selected node is assured to be valid; if the cached value of the first function at the selected node is assured to be valid, then: return the cached value of the first function at the selected node without recomputing the value of the first function at the selected node; if the cached value of the first function at the selected node is not assured to be valid, then: requesting the value of a second function at the adjacent node corresponding to an edge lying in a first direction from the selected node; adding the returned value of the second function at the adjacent node to a value associated with movement in a second direction opposite the first direction from the adjacent node to the selected node along the edge, this addition generating a total value for the edge; if the total value for the edge is greater than the cached value of the first function at the selected node, then exit the first iteration and perform the second iteration; and if the total value for the edge is not greater than the cached value of the first function at the selected node, then either process the next edge within the first iteration or, if there are no more edges to be processed within the first iteration: providing an indication associated with the selected node that the cached value of the first function at the selected node is assured to be valid; and returning the cached value of the first function at the selected node.