This talk will discuss computational algorithms that deal with the following general task: given a function f and a dictionary of functions D in a Hilbert space, extract a linear combination of N functions in D which approximates f at best. We shall review the properties of existing algorithms, and focus on two of them which are computationally simple and have optimal convergence properties. This work is motivated by applications as various as data compression, adaptive numerical simulation of PDE's in large space dimension, statistical learning theory.