X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fgenealgorithms.h;h=1d74e7130862188d4ff8e0ad57bf8a656e7d6023;hb=dcd966c5fca7dca53ca1f605f70f13f019d29771;hp=4c519a7e3167a40384893a86dea243f20d1ac6d9;hpb=74e3465418ae60633025efb581e399308ffdf4b1;p=germs.git diff --git a/src/genealgorithms.h b/src/genealgorithms.h index 4c519a7..1d74e71 100644 --- a/src/genealgorithms.h +++ b/src/genealgorithms.h @@ -24,6 +24,18 @@ #include class GeneOrder; +struct Component; + + +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 @@ -35,5 +47,30 @@ std::pair longestSequences(const GeneOrder& go); */ std::vector > robinsonSchensted(const GeneOrder& go); +/** + * Counts the number of cycles in the gene order. + */ +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. + */ +std::vector findComponents(const GeneOrder& go); + +/** + * Find intervals. + */ +std::vector findIntervals(const GeneOrder& go); + +/** + * Creates a list with the intervals at each point. + */ +std::vector findIntervalsAtPoints(const std::vector& intervals); + #endif