Координаты решения в криптоанализе роя частиц

Я пишу приложение C #, которое будет решать моноалфавитные шифры замены с использованием алгоритма роя частиц.

По сути, я понимаю процесс и нашел все алгоритмы, которые мне нужны для обновления вектора и т. д. Чего я не могу понять, так это того, как рассчитать положение/координаты решения из 26 символов в пространстве задач, чтобы я мог использовать его в алгоритме, найденном здесь: http://www.codeproject.com/Articles/42258/Particle-swarm-optimization-for-function-optimizat

Является ли position просто массивом целых чисел, относящихся к положению символов в алфавите?

Любая помощь будет принята с благодарностью.


person doreye01    schedule 01.07.2013    source источник
comment
Ты делаешь..а..что..я... *снесло голову*   -  person Shane.C    schedule 01.07.2013
comment
Это лучше отразит перестановка, чем позиция. Но в любом случае это вряд ли сработает, потому что проблемы с криптоанализом делают плохие фитнес-функции. Более продвинутая криптография даст вам проблемы, когда вы либо правы, либо ошибаетесь, и есть только один способ быть правым. Таким образом, у вас нет абсолютно никакого градиента. Вы делаете случайный поиск.   -  person Andreas    schedule 02.07.2013
comment
@Андреас: хорошая мысль. Но в случае подстановочного шифра (случай простого шифра) вы можете определить функцию пригодности на основе того, насколько имеет смысл незашифрованное сообщение? который может быть основан на распознанных словах (как только будет правильно угадано достаточное количество буквенных замен) или близости к простому английскому языку (или любому целевому языку, например, с использованием статистики n-грамм).   -  person gdupont    schedule 26.06.2014


Ответы (1)


PSO в основном работает в непрерывном пространстве. Конечно, есть версии для дискретных задач, и похоже, что эта задача дискретная.

Вы определили пространство. Сделайте его непрерывным с границами (0, 26). Теперь можно использовать положение частицы как среднее статистического распределения или просто получить минимальное значение. Было бы здорово, если бы у вас была память, потому что будет много дублированных вызовов.

Следующее — это ограничения. Ни одна буква не может быть заменена на ту же самую. Вы можете решить эту проблему несколькими способами, самым простым из которых снова будет функция восстановления: если ваш алгоритм встречает значение, которое уже было установлено (поскольку несколько значений имеют один и тот же пол), оставьте его и вернитесь позже, когда вы выясните, какие буквы все еще доступны.

Кстати, вы также можете использовать PSO для обучения ANN, которая решает проблему, используя статистику вхождений букв в языке.

Надеюсь, это поможет. Ваше здоровье!

person Krzysztof Voss    schedule 26.05.2014