class GeneOrder;
+struct Component{
+ Component(int b,int e,int s):begin(b),end(e),sign(s){}
+ int begin;
+ int end;
+ int sign;
+};
+typedef std::pair<size_t,size_t> Interval;
+
/**
* Returns the length of the longest increasing sequence and the longest
* decreasing sequence.
*/
std::vector<std::vector<int> > robinsonSchensted(const GeneOrder& go);
+/**
+ * Counts the number of cycles in the gene order.
+ */
+int countCycles(const GeneOrder& go);
+
+/**
+ * Finds the components in the gene order.
+ */
+std::vector<Component> findComponents(const GeneOrder& go);
+
+/**
+ * Find intervals.
+ */
+std::vector<Interval> findIntervals(const GeneOrder& go);
+
+/**
+ * Creates a list with the intervals at each point.
+ */
+std::vector<Interval> findIntervalsAtPoints(const std::vector<Interval>& intervals);
+
#endif