Я хотел бы расшифровать тексты на основе частотного анализа. Программирование - это не проблема, но есть некоторые математические трудности.
(Не стоит беспокоиться, а не взломать, я хочу пойти на шифр Zodiac 340, но вопрос в целом заключается в расшифровке http://zodiackillerciphers.com/wiki/images/7/7d/340-cipher-hi-resolution.jpg, а не о других проблемах с шифрованием.)
Я сломал это до 5 кратких вопросов, связанных со стоимостью, чтобы показать мои усилия, короткие ответы - это хорошо, любая помощь оценивается. Моя проблема в том, что различия в значениях в функции стоимости очень малы.
Учитывая
- Текст с любыми числами символов, называемый шифром. Шифр находится на английском языке. Каждый символ в шифре обозначает только одну букву, но одна буква может быть выражена через несколько символов. Мы не знаем, есть ли какие-либо пробелы (но строка, которая должна быть оценена функцией стоимости, будет разделена пробелом и имеет только буквы A-Z).
- Частотный анализ писем (A-Z и пробел) для: букв, букв и буквенных триплетов. 4000 самых распространенных слов на английском или "все" словах, используя sowpods scrabble dictionary.
Вопросы о частотном анализе:
- Лучше ли просто проверять наиболее распространенные слова или все слова, используя sowpods (возможно, удаление 2 и 3 буквенных слов, которые не входят в 4000 наиболее распространенных слов)?
- Для буквенных пар и триплетов: лучше ли хранить только их частоту по всем или хранить ее в форме P (A | B) (вероятность a есть A) и P (C | AB) для тройни?
Концепция
Пропустить, если не интересно. Я не хочу вдаваться в подробности здесь, есть несколько методов, которые можно было бы использовать. Грубый эскиз:
- Создать (полу) случайное решение
- Локальная оптимизация решения на основе стоимости
- Начать и передать часть приобретенных знаний.
- После стагнации в течение некоторого времени попробуйте то же самое с введением пространств в фиксированных положениях до локальной оптимизации (в случае, если сообщение не имеет пробелов)
- сравните два найденных решения и верните лучший
Функция затрат
Как бы выглядела функция стоимости? Общий может быть выражен как:
w1 * letterCost + w2 * pairCost + w3 * tripletCost + w4 * wordCost
и сумма всех сигналов равна единице:
w1 + w2 + w3 + w4 = 1
Вопросы о функции стоимости
-
Теперь, когда простые частоты игнорируют слова (w4 = 0), вы можете просто подсчитать частоты и принять квадрат разницы (это то, что я сейчас делаю). Интересно вот что: разумнее ли иметь w1 = w2 = w3 или w1 = 27 * w2 = 27 * 27 * w3?
-
Как это работает с условными вероятностями?
-
Как вы включаете знание о словах? Просто посчитайте, сколько реальных английских слов есть, вероятно, утяжеляя их по их длине или есть более интеллектуальный способ?