The water-filling algorithm is a technique used in digital communications systems for allocating power among different channels in multicarrier schemes. It was described by R. C. Gallager in 1968 along with the water-filling theorem which proves its optimality for channels having Additive White Gaussian Noise (AWGN) and intersymbol interference (ISI). For this reason, it is a standard baseline algorithm for various digital communications systems, such as MIMO wireless systems.