Using DONE_SET method to make algorithm faster

What we do is like to maintain a dict {DONE_SET: memory peak}, then Each time when we execute Node X, we make a check if the peak in dict and the current peak bigger than that peak. If yes(or equal), break and start a new branch. if no, update the peak in dict and continue.
should be past_mem > mem_count.

If it is equal, we want to skip that branch.