  In this paper we consider a wide class of discrete diffusion load balancing
algorithms. The problem is defined as follows. We are given an interconnection
network and a number of load items, which are arbitrarily distributed among the
nodes of the network. The goal is to redistribute the load in iterative
discrete steps such that at the end each node has (almost) the same number of
items. In diffusion load balancing nodes are only allowed to balance their load
with their direct neighbors.
  We show three main results. Firstly, we present a general framework for
randomly rounding the flow generated by continuous diffusion schemes over the
edges of a graph in order to obtain corresponding discrete schemes. Compared to
the results of Rabani, Sinclair, and Wanka, FOCS'98, which are only valid
w.r.t. the class of homogeneous first order schemes, our framework can be used
to analyze a larger class of diffusion algorithms, such as algorithms for
heterogeneous networks and second order schemes. Secondly, we bound the
deviation between randomized second order schemes and their continuous
counterparts. Finally, we provide a bound for the minimum initial load in a
network that is sufficient to prevent the occurrence of negative load at a node
during the execution of second order diffusion schemes.
  Our theoretical results are complemented with extensive simulations on
different graph classes. We show empirically that second order schemes, which
are usually much faster than first order schemes, will not balance the load
completely on a number of networks within reasonable time. However, the maximum
load difference at the end seems to be bounded by a constant value, which can
be further decreased if first order scheme is applied once this value is
achieved by second order scheme.
