X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fgenealgorithms.h;h=6bc133fa96174478746cd828659a476e02ea52ec;hb=db8596d6eb24c982bc3b5eab235ca4ca7a3aea36;hp=0158c35108616b4fd18b452ec357fa39841005c3;hpb=052ccbc26078638efee3614cd7cc2ea485313cad;p=germs.git diff --git a/src/genealgorithms.h b/src/genealgorithms.h index 0158c35..6bc133f 100644 --- a/src/genealgorithms.h +++ b/src/genealgorithms.h @@ -34,7 +34,16 @@ struct Component{ int end; int sign; }; -typedef std::pair Interval; + +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; + } + size_t first; + size_t second; + bool oriented; +}; /** * Returns the length of the longest increasing sequence and the longest @@ -49,7 +58,12 @@ std::vector > robinsonSchensted(const GeneOrder& go); /** * Counts the number of cycles in the gene order. */ -int countCycles(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.