X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fgenealgorithms.h;h=1d74e7130862188d4ff8e0ad57bf8a656e7d6023;hb=1fb658ea3ad9dc286e95ec515d7c90f5ad2d4a1f;hp=b5ed95d01ccb69af8797ec51aa820305e99db376;hpb=148a31960aeb2ba127ef4322a12ae3af28ef2988;p=germs.git diff --git a/src/genealgorithms.h b/src/genealgorithms.h index b5ed95d..1d74e71 100644 --- a/src/genealgorithms.h +++ b/src/genealgorithms.h @@ -24,17 +24,18 @@ #include 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 Interval; /** * Returns the length of the longest increasing sequence and the longest @@ -51,6 +52,11 @@ std::vector > 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. */