Об алгоритме программы Recombinator 1.3
Выражаем благодарность кафедре прикладной математики Ульяновского Государственного Технического университета и, в особенности, аспирантке кафедры Гладких Екатерине за помощь в разработке алгоритма.

Как мы уже указывали на странице, посвящённой услуге, мы не совершили революции - синонимы автоматически не подставляются, а тексты за авторов не пишутся. Более того, мы уверены, что решить эту задачу в ближайшее время невозможно. Поэтому мы постарались максимально усовершенствовать то, что есть. А есть команда замечательных профессиональных авторов, которым был необходим удобный инструмент.
Recombinator 2.0 - это по своей сути обычная программа перебора вариантов, близкая по духу генераторам ссылочного текста. Но при её разработке мы столкнулись с проблемой, которая стала краегуольным камнем в задаче.
Эта проблема - обеспечение равномерного распределения уникальности по тексту. Мы решили полностью исключить даже самую минимальную возможность склейки текстов, для чего поставили себе задачу добиться такого результата, который бы гарантировал уникальность не только всего текста другим сгенерированным, но и КАЖДОГО ЕГО УЧАСТКА аналогичному участку другого текста. При этом со строго заданным процентом уникальности.
Существующие решения, использующие принцип перебора, этого обеспечить были не в состоянии, поэтому мы применили алгоритм собственный разработки, основанный на теории программных автоматов и оперирующий матрицей перестановок вариантов. Итог - 100 процентная реализация поставленной задачи. Каждый паттерн каждого текста уникален относительно аналогичного паттерна любого другого сгенерированного текста на заданный процент.
Дополнительный функционал направлен на облегчение труда корректора и позволяет выводить структуру генерации в древовидной форме. Это значительно снижает риск опечаток и пропуска ошибок.
Алгоритм:
Заполняем матрицу (классы/представители классов):
| Классы | N1 | N2 | … | NR |
| Веса | 3 | 2 | ... | 4 |
| Синоним 1 | А | А | ... | А |
| Синоним 2 | Б | Б | ... | Б |
| Синоним 3 | В | # | ... | В |
| Синоним 4 | # | # | ... | Г |
| ... | # | # | ... | # |
-
формируем обнулённую логическую матрицу перестановок
0 0 0 0
0 0 0 0
0 0 0 0
N- кол-во столбцов
M – строк
-
Высчитываем общее количество вариантов, формируя матрицу дополнений (т.е. дополняем логическими единицами матрицу 1 до полной)
0 0 0 0
0 0 0 0
0 1 0 1
Расчёт – n*m – количество едениц
-
формируем матрицу изменений:
0 0 0 0
0 0 0 0
0 0 0 0
-
формируем правило преобразований:
Логическое сложение строк каждого N-столбца должно давать НЕЛОГИЧЕСКУЮ единицу (требуется преобразование типа – если оперировать с логическими переменными, то возникает потребность чётного кол-ва строк) (т.е. сложение 1+ 0+0)
-
Формируем матрицы с нужной степенью уникальности друг другу с учётом правила и того факта, что некоторые элементы не могут принимать единичное значение.
Матрицы заполняются по главной диагонали. Если какой либо элемент при заполнении не может принимать единичное значение, то происходит его переход на диагноль минора высшего порядка в том же столбце, и при заполнении этого минора элемент опять же переносится на минор более высокого порядка, до тех пор пока не окажется в первой строке. Пример:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Красным показаны запрещённые элемены.
Первый минор 1-3 строки, 1-3 столбцы. Заполняем:
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
В соответствии с правилом 4 переходим на минор 2 4-6 столбец
1 0 0 1 0 0 0
0 1 0 0 1 1 0
0 0 1 0 0 0 0
Т.к. встретили красный ноль, то перенсели одну единицу на минор более высокого порядка
Получаем:
1 0 0 1 0 0 0
0 1 0 0 1 1 0
0 0 1 0 0 0 1
Сдвигаем начальный минор на один столбец
Шаг 1
0 1 0 0 0 0 0
0 0 1 1 0 0 0
0 0 0 0 0 0 0
Шаг 2
0 1 0 0 1 0 0
0 0 1 1 0 1 0
0 0 0 0 0 0 1
Переходим на строку 1
0 1 0 0 1 0 0
0 0 1 1 0 1 0
1 0 0 0 0 0 1
Сдвигаем миноры далее – столбец 3, получаем:
0 0 1 0 0 1 0
1 0 0 1 0 0 1
0 1 0 0 1 0 0
Столбец 4:
0 0 0 1 0 0 1
1 0 1 0 1 1 0
0 1 0 0 0 0 0
-
Случайно выбираем номера (размерность) 60% (70%, 80%....) миноров.
-
Выбранные колеса крутим на случайное(для каждого колеса свое) кол-во шагов.
-
Проверяем все строки.
-
Строки с метками (нет варианта) не рассматриваем.
-
Строки без меток проверяем на уникальность.
-
Попали в ТОП ЖЖ
Наша вирусная рекламная кампания "5 самых креативных способов заработать на кризисе" нашла широкий отклик у интернет общественности. Запись с этой темой 3 дня продержалась в ТОП 10 самых... >>> -
Наши частушки о кризисе наши отклик в народе
Сочинённые нами частушки про кризис активно растащили по газетам и "Интернетам". Снимали и сюжет для новостей 5-ого канала. Вот самые хитовые частушки: Мой милок купил... >>> -
Мы попали в "Новую газету"
В статье о том как зарабатывают на кризисе нашим PR инициативам уделено достойное место. Цитата:"Но ничто из рассказанного не может сравниться с организацией «Новый ковчег». На... >>> -
Мы попали в "Золотую калошу" на НТВ
Наша "гайка жизни" (http://litura.ru/) удостоилась чести быть использованной в "Золотой калоше" на НТВ. Как нам рассказали программа в духе детской игры "верю-не... >>> -
Вышла книга нашего руководителя
Вышла книга рассказов нашего руководителя. Книжка называется "Вой Василька". Позже избранные моменты по разрешению автора выложим на сайте.
