Статья подготовлена для студентов курса «Алгоритмы для разработчиков» в образовательном проекте OTUS. Есть N городов, связанных дорогами. Как помочь коммивояжёру проложить наиболее короткий/выгодный/дешёвый маршрут между этими городами, чтобы посетить каждый город хотя бы по одному разу и вернуться в исходную точку? Многие, изучающие computer science, знают о существовании этой задачи как одной из самых известных задач на графах. Все знают, что эта задача NP-полная и нерешаема в общем виде на современных компьютерах...
Я довольно часто пишу про развитие, эволюцию, прогресс и прочие подобные продукты мыслительной деятельности накопленной человечеством по отношении к этому самому человечеству (мне это просто нравится), но сегодня я захотел рассказать о том, что такое генетические алгоритмы. Точнее даже не то, что это такое по сути, это отдельный разговор, а о том как они работают на конкретном примере. В качестве задачи я взял задачу Коммивояжера (задача поиска кратчайшего маршрута соединяющего некоторое количество контрольных пунктов, городов)...