We consider the semi-matching problem in bipartite graphs. The network is represented by a bipartite graph G = (U ∪ V, E), where U corresponds to clients, V to servers, and E is the set of available connections between them. The goal is to find a set of edges M ⊆ E such that every vertex in U is incident to exactly one edge in M. The load of a server v ε V is defined as the square of its degree in M and the problem is to find an optimal semi-matching, i.e. a semi-matching that minimizes the sum of the loads of the servers. Formally, given a bipartite graph G = ∪ V,E), a semi-matching in G is a subgraph M such that deg M (u) = 1 for every u ε U. A semi-matching M is called optimal if cost(M): = Σ v ε V (deg M (v))2 is minimal. It is not difficult to see that for any semi-matching M, where Δ is such that max v ε V d(v) ≤ Δ. Consequently, if M* is optimal and M is arbitrary, then cost (M) ≤ Δ|V|cost(M*)/|U|. Our main result shows that in some networks the Δ|V|/|U| factor can be reduced to a constant (Theorem 1).