====== Nejkratší společná supersekvence ====== * Data: {{:courses:a0m33eoa:semestralni_ulohy:supersekvence:scsp_data.zip|}} Kdybychom měli k úloze přistupovat jako k černé skříňce, neměli byste informace o dílčích sekvencích využívat nikde jinde než v ohodnocovací funkci. V této úloze ale **je povoleno využívat či analyzovat konkrétní dílčí sekvence** i jinde, např. v rekombinačních operátorech. ===== Popis problému ===== Je dána množina řetezců znaků dané abecedy. Cílem je nalézt takovou posloupnost znaků dané abecedy (supersekvenci), že všechny původní řetezce jsou v ní zcela obsažené. Řetězec r je obsažen v supersekvenci S právě tehdy, když všechny znaky řetězce r jsou přítomny v supersekvenci S a to v pořadí, v jakém se vyskytují v r. * Vstup: * Abeceda A, ze které jsou tvořeny řetězce. * N řetězců (ne nutně stejné délky). * Výstup: Supersekvence S splňující výše uvedenou vlastnost. ===== Možné reprezentace ===== * Lineární řetězec znaků dané abecedy. s1: ca ag cca cc ta cat c a s2: c gag ccat ccgtaaa g tt g s3: aga acc tgc taaatgc t a ga ---------------------------- Supersequence S: cagagaccatgccgtaaatgcattacga * ... ===== Jednotná ohodnocovací funkce ===== Kvalita supersekvence S se počítá jako f(S) = C(S) + L(S), kde C(S) je celkový počet znaků, které S pokrývá a L(S) je příspěvek za délku supersekvence počítaný jako L(S) = \frac{SumL - Length(S)}{SumL}, kde SumL je součet všech znaků ve vstupních řetězcích. Tato funkce je maximalizována.