The Dynamic Programming Algorithm to find the best join ordering (in a left-deep join tree)