Изменения
Нет описания правки
==== Фитнес функция ====
Фитнес функция для эволюционные алгоритмы поиска эйлерова цикла в графе выглядит так: <tex>f(M) = m - |M| + k</tex>, где
#<tex>m</tex> — количество ребер в графе;#<tex>|M|</tex> — размер множества <tex>M</tex>;#<tex>k</tex> — количество путей в <tex>M</tex>
==== Операция мутации ====
Операция мутации вводится для двух вершин <tex>u</tex> и <tex>w</tex> из <tex>L_v</tex>. Как их выбрать описано в следующем разделе. Происходит он так:
* если <tex>u=w</tex>, то ничего не делаем;
* если для <tex>u</tex> и для <tex>w</tex> нет пары, то добавляем к <tex>M_v</tex> пару <tex>(u,w)</tex>;
* если <tex>u</tex> и <tex>v</tex> уже содержатся в <tex>M_v</tex> как пара, то удалим ее;
* если <tex>u</tex> в паре с некоторой если вершиной <tex>p</tex, а <tex>w</tex> без пары, то удалим <tex>(u,p)</tex> из <tex>M_v</tex> и добавим <tex>(u,w)</tex>;
* если <tex>w</tex> в паре с некоторой если вершиной <tex>p</tex, а <tex>u</tex> без пары, то удалим <tex>(w,p)</tex> из <tex>M_v</tex> и добавим <tex>(u,w)</tex>;
* если <tex>u</tex> в паре с некоторой если вершиной <tex>p</tex, а <tex>w</tex> в паре с некоторой <tex>k</tex>, то удалим <tex>(u,p)</tex> и <tex>(w,k)</tex> из если <tex>M_v</tex> и добавим <tex>(u,w)</tex> и <tex>(p,k)</tex>;
Если после операции мутации фитнес функция уменьшилась, то операцию не применяют.
==== Выбор вершин для мутации ====
===Литература===
* [http://rain.ifmo.ru/~tsarev/teaching/ea-2012/lectures/p1203-doerr.pdf Doerr B., Johannsen D. Adjacency List Matchings - An Ideal Genotype for Cycle Covers]