Большинство из вас этого, конечно, не помнит, но года три-четыре назад в этом блоге приводилась реализация генетического алгоритма на Perl. На меня тут нахлынула ностальгия и я решил переписать этот алгоритм на Haskell, и заодно распараллелить его, используя пакет parallel. Что из всего этого получилось — смотрите под катом.

В заметке Генерация почти осмысленных текстов на Haskell (опубликованной полтора года назад… как быстро летит время!) был упомянут подход к генерации статей, заключающийся в написании обзоров цифровой техники на основе их характеристик. Недавно у меня дошли руки до реализации этой идеи, правда, на Erlang, а не на Haskell.

Тем временем я продолжаю почитывать книги по искусственному интеллекту и нахожу в них массу интересных вещей. В этой заметке я предлагаю вашему вниманию задачу о роботе-пылесосе, которая формулируется примерно следующим образом.

Вы когда-нибудь пробовали написать программу, решающую судоку, задачу о волке, козе и капусте или головоломку вроде кубика Рубика? У этих задач есть кое-что общее — точно известно начальное условие и к какому условию требуется прийти, но придумать алгоритм решения задачи не так-то просто. Такие задачи решаются с помощью поиска на графах.

Недавно в блоге Даркуса была поднята тема генерации уникальных текстов, содержащих в себе некоторый смысл. То есть речь идет о генерации нормальных текстов, вроде того, что вы читаете в данный момент, а не простой мешанины из слов. Тема меня «зацепила» и со второй попытки мне удалось написать довольно неплохой, как мне кажется, генератор. Однако, будучи блогером-графоманом, начну я немного издалека…

Синтезатор голоса (он же «Text To Speech» или «TTS») — это программа, предназначенная для преобразования текста в человеческую речь. Таких программ сейчас много, но, к сожалению, качество большинства синтезаторов оставляет желать лучшего. В этой заметке вы найдете краткое описание некоторых синтезаторов.

Не могу удержаться от соблазна пересказать еще одну заметку с ХабраХабра — «Поиск лиц на картинке с помощью JavaScript и Canvas».

В этой заметке вы найдете пример практического применения генетических алгоритмов. Предполагается, что вы уже в курсе, что это такое, или по крайней мере прочитали соответствующую статью в Википедии.