The Collins parser (Collins, 1997) does use dynamic programming in its search.
whenever a constituent with the same history is generated a second time, it is discarded if its probability is lower than the original version.