1 / 1 / 1
Регистрация: 08.02.2012
Сообщений: 29
|
||||||
1 | ||||||
Графы. Нахождение максимального пути09.05.2012, 18:18. Показов 3978. Ответов 1
Метки нет (Все метки)
Добрый день.
Пытаюсь написать программу для помощи в криптоанализе методом двойной перестановки и столкнулся с проблемой. Изложу суть задачи: Перехвачено сообщение АЗЮЖЕ_СШГТООИПЕР 16 символов, загоняем в матрицу 4х4. Получилось 4 столбца, переставленных в неизвестном порядке: А З Ю Ж Е _ С Ш Г Т О О И П Е Р Метод «вскрытия» шифров двойной перестановки основан на определении маловероятных сочетаний букв и нахождении на их основе истинной последовательности столбцов в шифровальной таблице. При решении получаем матрицу из сумм логарифмов сочетаний: 0 21 30 27 23 0 26 24 19 22 0 20 28 17 14 0 Таким образом теперь нам надо определить порядок следования столбцов. Впринципе похоже на задачу коммивояжера, только наоборот. Надо найти путь с максимальной суммой (максимальной длины), при этом побывав в каждом столбце один раз. Найдя путь, можно будет расставить столбцы и прочесть сообщение. Вот здесь то я и не пойму как это сделать.. Может быть кто-нибудь сможет подсказать? С программированием на Вы, поэтому прошу строго не судить. Текст программы:
0
|
09.05.2012, 18:18 | |
Ответы с готовыми решениями:
1
Графы: нахождение кратчайшего пути между вершинами Графы, нахождение наименьшего пути между вершинами обходом в ширину Графы,исключение из пути определённых вершины Графы: заданы две вершины, начальная и конечная, требуется найти первую вершину в пути между ними |
1 / 1 / 1
Регистрация: 08.02.2012
Сообщений: 29
|
||||||||||||||||
10.05.2012, 20:33 [ТС] | 2 | |||||||||||||||
Появилась идея реализации.
Так как для меня главное найти только правильный порядок следования столбцов друг за другом, то пришла в голову следующая мысль. Берем за точку отсчета столбец 1. Веса переходов из столбца 1 в остальные 3 столбца указан в первой строке массива per[4][4]. Делаем цикл. Берем первую строку и ищем в ней максимальный элемент. Найдя его запоминаем номер его столбца (обозначим его stnum). Номеру следующей строки для поиска максимума присваиваем значение stnum. Затем обнуляем весь столбец с номером stnum. Таким образом мы исключим возможность перехода в этот столбец (нам ведь надо во все по одному разу зайти). И далее опять ищем максимум в следующей строке. Для того чтобы запомнить маршрут нам надо будет куда то записывать все значения stnum по порядку, а первым значением в этом списке будет 0 (или 1, т.к. первый столбец). Помогите, пожалуйста, кто-нибудь воплотить это в коде. Добавлено через 24 минуты Сам вопрос задал, сам на него и ответил =) Для удобства была создана функция для поиска максимума в одномерном массиве, куда будет передаваться строка из таблицы переходов.
Небольшой косячек.. забыл обнулить первый столбец в массиве переходов после того, как i=0. Получится в итоге так:
0
|
10.05.2012, 20:33 | |
10.05.2012, 20:33 | |
Помогаю со студенческими работами здесь
2
Нахождение эйлерова пути Нахождение минимального пути Нахождение кратчайшего пути Нахождение критического пути Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |