The process of using dynamic programming to build and store parse trees as a series of smaller, overlapping sub-trees.