Well, I did find something by the group that started working on the Bio.RNA branch of Biopython, but I only skimmed it:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2248259/Not sure if it really is a must-read.
I came up with coloring a conflict graph (most such conflict graphs - at least so I thought - would be bipartite, with a comparatively small number of edges, where several long-range pseudoknot helices would be responsible for most edges). The greedy criterion for selecting the next component to color is simply the number of conflicting helices: I sort components by their highest degree vertex from highest to lowest and start coloring each one from this highest degree vertex, using a standard FIFO queue. The first color used is '[' (the helix with most conflicts of the component gets labeled as a pseudoknotted helix) and further colors are assigned based on a priority list that starts with '(', so that if currently possible, the helix should be a non-pseudoknotted helix. If the graph component is trivial (a helix with no conflicts), I start coloring it with '('. There could be other greedy criteria - for instance some function of helix length, number of base pairs, number of spanned helices, etc.
JH.