]> ruin.nu Git - germs.git/blobdiff - src/genealgorithms.h
inital commit of componenttree with associated changes
[germs.git] / src / genealgorithms.h
index b5ed95d01ccb69af8797ec51aa820305e99db376..1d74e7130862188d4ff8e0ad57bf8a656e7d6023 100644 (file)
 #include <vector>
 
 class GeneOrder;
+struct Component;
 
-struct Component{
-       Component(int b,int e,int s):begin(b),end(e),sign(s){}
-       bool operator==(const Component& c){
-               return begin == c.begin && end == c.end && sign == c.sign;
+
+struct Interval{
+       Interval(size_t f,size_t s,bool o = false):first(f),second(s),oriented(o){}
+       bool operator==(const Interval& i){
+               return first == i.first && second == i.second && oriented == i.oriented;
        }
-       int begin;
-       int end;
-       int sign;
+       size_t first;
+       size_t second;
+       bool oriented;
 };
-typedef std::pair<size_t,size_t> Interval;
 
 /**
  * Returns the length of the longest increasing sequence and the longest
@@ -51,6 +52,11 @@ std::vector<std::vector<int> > robinsonSchensted(const GeneOrder& go);
  */
 size_t countCycles(const GeneOrder& go);
 
+/**
+ * Calculates the inversion distance for this gene order
+ */
+size_t inversionDistance(const GeneOrder& go);
+
 /**
  * Finds the components in the gene order.
  */