Understanding approximate dynamic programming