Об алгоритме программы 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%....) миноров.
-
Выбранные колеса крутим на случайное(для каждого колеса свое) кол-во шагов.
-
Проверяем все строки.
-
Строки с метками (нет варианта) не рассматриваем.
-
Строки без меток проверяем на уникальность.
-
23.11.07
Вышла книга нашего руководителя
Вышла книга рассказов нашего руководителя. Книжка называется "Вой Василька". Позже избранные моменты по разрешению автора выложим на сайте. -
23.11.07
Новогодние поздравления - напоминаем об услуге
Новый Год на носу, и мы напоминаем Вам, что без хорошего новогоднего поздравления не обойтись! Мы составим для Вас: - прикольные поздравления друзьям и коллегам - креативные... >>> -
23.11.07
Пьеса нашего автора в столичных театрах
Поздравляем нашего автора Галину Узрютову со вхождением в очередной раз в Short-list лит. премии "Дебют" . Галина принимала участие в театральнодраматургическом проекте «Маленькая... >>> -
23.11.07
Адресные рассылки для тех, чей бизнес - Новый Год
Специально для фирм и организаций, занимающихся реализацией новогодних товаров оптом мы предлагаем 10 процентную скидку на адресные рассылки по компаниям - потенциальным партнёрам. -
23.11.07
Гороскоп Путина приобрёл вирусный характер
Тема с озвучиванием гороскопа Путина (http://fillin.org/news/show/4) неожиданно для нас самих приобрела больший вирусный характер чем мы рассчитывали. В "Комсомольской правде" обнаружили... >>>
