  We describe a dynamic programming algorithm for predicting optimal RNA
secondary structure, including pseudoknots. The algorithm has a worst case
complexity of ${\cal O}(N^6)$ in time and ${\cal O}(N^4)$ in storage. The
description of the algorithm is complex, which led us to adopt a useful
graphical representation (Feynman diagrams) borrowed from quantum field theory.
We present an implementation of the algorithm that generates the optimal
minimum energy structure for a single RNA sequence, using standard RNA folding
thermodynamic parameters augmented by a few parameters describing the
thermodynamic stability of pseudoknots. We demonstrate the properties of the
algorithm by using it to predict structures for several small pseudoknotted and
non-pseudoknotted RNAs. Although the time and memory demands of the algorithm
are steep, we believe this is the first algorithm to be able to fold optimal
(minimum energy) pseudoknotted RNAs with the accepted RNA thermodynamic model.
