Генетический алгоритм для криптоанализа шифра Виженера

Разработка и описание генетического алгоритма для поиска секретного ключа шифра Виженера. Использование им устойчивости частотных характеристик осмысленных текстов. "Рекордные" значения фитнесс-функции для различных предполагаемых длин секретного ключа.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 26.04.2019
Размер файла 65,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

В. В. Морозенко, Г. О. Елисеев

Размещено на http://www.allbest.ru//

76

Размещено на http://www.allbest.ru//

Генетический алгоритм для криптоанализа шифра Виженера

В. В. Морозенко

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

Введение В. В. Морозенко, Г. О. Елисеев, 2010

Шифрование информации в настоящее время стало едва ли не основным методом ее защиты. Доступность вычислительной техники и стремительный прогресс в ее развитии сделали необходимым совершенствование давно известных шифров и применение в массовом масштабе новых высоконадежных схем шифрования. Однако у этого прогресса есть и другая сторона: возросшие возможности вычислительных устройств сегодня успешно применяются не только для шифрования, но и для "взлома" тех шифров, которые еще вчера, казалось бы, гарантировали полную защиту информации.

Исторически первый вариант шифра Виженера упоминается Юлием Цезарем в "Записках о галльской войне" (I в. до н.э.). Более сложная модификация этого шифра встречается в романе Ж.Верна "Жангада". Современные варианты шифра Виженера часто используются в коммерческих программных продуктах, например в системах MS DOS и Macintosh.

При шифровании с помощью шифра Виженера используется секретный ключ - символьная строка. Чем больше ее длина, тем надежней защищен зашифрованный текст от попытки его расшифровать (криптоатаки). Задача криптоанализа состоит в том, чтобы расшифровать зашифрованный текст, не обладая знанием секретного ключа. Решая эту задачу, злоумышленник, как правило, сначала находит секретный ключ, а затем с его помощью расшифровывает перехваченное зашифрованное сообщение.

Постановка задачи

Шифр Виженера - это блочный многоалфавитный подстановочный шифр [1]. Для удобства будем считать, что исходный текст представляет собой строку длиной т, образованную символами алфавита . Через обозначим номер символа х в алфавите А и положим . Секретным ключом K является строка длиной п, составленная из символов алфавита А.

Шифрование исходного текста с помощью данного ключа осуществляется следующим образом. Исходный текст разбивается на блоки длиной п. Первый блок - это символьная строка , второй блок - строка и т.д. Чтобы зашифровать первый блок, для каждого символ хi заменяем на символ zi такой, что номера символов хi , ki и zi в алфавите А связаны соотношением

. (1)

Тогда первый блок зашифрованного текста будет иметь вид . Аналогично происходит шифрование второго и всех последующих блоков исходного текста: символ zj зашифрованного текста, где , однозначно определяется через свою позицию j в зашифрованном тексте и свой номер в алфавите А. Правило для вычисления обобщает формулу (1) и можен быть задано следующим образом:

(2)

Для примера зашифруем с помощью шифра Виженера следующий текст:

"греция_становится_центром_ремесленной_индустрии_и_торговли._осуществляется_переход_от_первобытнообщинного".

Будем считать, что алфавит А состоит из 36 символов: 33 букв русского алфавита и символов «_» (пробел), «.» (точка), «,» (запятая). Выберем естественную нумерацию символов алфавита А: …, . Если в качестве ключа взять слово математика и применить правило (2) с параметрами s = 36, п = 10, т = 105, то получим зашифрованный текст

"прчыхяпъэаъофнясоё.еътаущ_анчеюлч

тъоьёунрубчэиыёу_ырхуолыжзоюуи_йю

тффжеясовьеан_ор_.чйпчщмонывтыоу

,унъох".

Расшифровать текст, зашифрованный с помощью шифра Виженера, зная секретный ключ K, несложно. Для этого надо выполнить действия, обратные тем, которые применялись при его шифровании, т.е. для каждого найти по формуле

,

где .

Рассматриваемая в данной статье задача криптоанализа состоит в том, чтобы, имея зашифрованный текст , но не зная ни самого ключа K, ни его длины п, восстановить исходный текст . При этом предполагается, что злоумышленнику известен алфавит А, но не известна нумерация символов, использованная шифровальщиком. Простые расчеты, приведенные в [2] для простейшего алфавита А = {0,1}, показывают, что если секретный ключ представляет собой 56-битовую строку, то попытка подобрать его, наугад перебирая все возможные комбинации и проверяя за одну секунду 8000 случайно выбранных ключей, может занять более 500 лет, и есть только один шанс из 200000 угадать ключ в течение первых суток.

Описание генетического алгоритма

В настоящее время существует несколько способов "взлома" шифра Виженера. Как правило, сначала пытаются определить длину ключа, а затем и сам ключ. Например, для вычисления длины ключа можно применить тест Казиски [1]. При криптоанализе шифра Виженера используется известное свойство любого достаточно длинного осмысленного текста, состоящее в том, что в таком тексте каждая буква встречается с почти предсказуемой среднестатистической частотой, заранее известной и характерной для любого достаточно длинного осмысленного текста. Например, в текстах на русском языке среднестатистическая частота встречаемости буквы а равна 0.052, а буквы м - 0.026.

Предлагаемый в данной статье генетический алгоритм для криптоанализа шифра Виженера тоже использует указанную устойчивость частотных характеристик осмысленных текстов. Кроме того, он опирается на следующее свойство модулярной арифметики. Если две независимые дискретные случайные величины и принимают значения из множества М = {0, 1, 2, …, n - 1}, причем величина принимает любое значение из указанного множества с одинаковой вероятностью, равной 1/п, а величина для каждого i = 0,1,2,…,п - 1 принимает значение i с вероятностью pi, то случайная величина

принимает все значения из множества М с одинаковой вероятностью, равной 1/п, т.е. имеет равномерное дискретное распределение на множестве М. Действительно, для каждого фиксированного i = 0,1,2,…,п - 1 вероятность того, что сумма по модулю п окажется равной i, в силу независимости и , удовлетворяет равенствам

=

==

=.

Отмеченный математический факт означает, что если каждый блок длиной п исходного текста "сложить" по модулю s с ключом K той же длины, все символы которого случайным образом с равной вероятностью выбираются из алфавита А, то и в полученном тексте все символы будут встречаться с равной вероятностью. Иными словами, если на осмысленный текст, в котором каждый символ хi встречается со своей частотой pi, близкой к известному среднестатистическому значению, наложить "шум", в котором появление всех символов равновероятно, то в результате получится "шум". Именно это свойство модулярной арифметики позволяет шифру Виженера "прятать" в зашифрованном тексте, который по своим частотным характеристикам напоминает обычный "шум", секретную информацию, содержащуюся в исходном тексте.

Генетические алгоритмы хорошо зарекомендовали себя при решении задач комбинаторной оптимизации, в которых требуется найти экстремум функции, заданной на дискретном множестве допустимых решений [3]. Поскольку цель "взлома" шифра - найти среди множества потенциальных ключей единственный секретный ключ, то задачу криптоанализа вполне можно отнести к задачам комбинаторной оптимизации и попытаться применить для ее решения генетический алгоритм. Такие попытки известны, и они оказались успешными [4, 5].

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

Применим следующий способ кодирования ключей. Хромосома, кодирующая произвольный ключ , представляет собой числовой вектор

,

где - номер символа bi в алфавите А. Напомним, что символы алфавита А пронумерованы числами 0,1,2,…,п - 1. Такой способ кодирования ключей позволяет использовать классические варианты операторов скрещивания и мутации. Мутация хромосомы происходит с вероятностью р0 и состоит в том, что два ее произвольных гена меняются местами. Поскольку гены независимы, возникающая после мутации особь будет жизнеспособной. Вероятность р0, количество особей, участвующих в скрещивании, и численность популяции являются настраиваемыми параметрами алгоритма.

Выбор особей для скрещивания будем осуществлять по "принципу рулетки", согласно которому вероятность того, что данная особь будет участвовать в скрещивании, прямо пропорциональна уровню ее приспособленности [3]. Скрещивание двух особей будем выполнять с помощью одноточечного кроссовера. При этом положение точки разбиения хромосом выбирается случайным образом, после чего хромосомы обмениваются своими начальными отрезками.

Чтобы выбрать подходящую фитнесс-функцию, следует руководствоваться двумя соображениями. Во-первых, искомое решение должно совпадать с точкой ее глобального экстремума. Во-вторых, значение фитнесс-функции для каждой конкретной особи должно отражать уровень ее приспособленности. Причем небольшим изменениям хромосомы должны соответствовать небольшие изменения фитнесс-функции. Если считать, что исходный текст, который был зашифрован шифром Виженера, являлся осмысленным и частоты встречаемости символов в нем были примерно равны среднестатистическим значениям, то в качестве фитнесс-функции можно взять функцию F(K) из [6]. Она вычисляется по формуле

,

где - частота встречаемости двухбуквенного слога "bibj" (биграммы) в тексте, полученном из зашифрованного текста после его расшифрования с помощью предполагаемого ключа K, а - частота встречаемости этой же биграммы в некотором "среднестатистическом" осмысленном тексте. Среднестатистические частоты встречаемости всех биграмм заранее известны (например, они имеются в [1]) или могут быть вычислены на основании статистического анализа большого числа достаточно длинных осмысленных текстов. Очевидно, чем ближе предполагаемый ключ к искомому секретному ключу, тем больше расшифрованный с его помощью текст будет похож по своим частотным характеристикам на осмысленный текст и, следовательно, тем меньше будет соответствующее ему значение фитнесс-функции.

Заметим, что теоретический минимум предложенной фитнесс-функции равен нулю, однако она не обращается в нуль даже при расшифровании текста с помощью настоящего секретного ключа. По этой причине решено завершать работу генетического алгоритма, как только число поколений превысит заранее заданный порог, не дожидаясь достижения теоретического минимума фитнесс-функции.

Результаты работы генетического алгоритма

Разработанный авторами данной статьи генетический алгоритм решает задачу криптоанализа в два этапа. На первом этапе он находит длину секретного ключа, а на втором этапе - сам ключ.

Чтобы найти длину секретного ключа, сначала генетический алгоритм запускают в предположении, что длина секретного ключа равна некоторому l, и после завершения работы алгоритма запоминают "рекордное" (т.е. наименьшее) значение c[l] фитнесс-функции за все время его работы. Затем параметр l увеличивают на 1, 2, 3 и т.д., каждый раз заново запуская генетический алгоритм, а после его завершения вычисляют "рекордное" значение c[l + 1], c[l + 2], c[l + 3] и т.д. фитнесс-функции для ключей длиной (l + 1), (l + 2), (l + 3) и т.д. Покажем, что наименьшее среди найденных "рекордное" значение фитнесс-функции достигается именно при совпадении проверяемой длины и длины секретного ключа. Действительно, пусть n - длина секретного ключа. Если числа n и l совпадают, то можно ожидать, что в результате работы генетического алгоритма будет найден сам секретный ключ или близкий к нему ключ, а фитнесс-функция при использовании этого ключа примет относительно небольшое значение.

Пусть - секретный ключ. Рассмотрим ключ

длиной l = 2n, который является конкатенацией двух секретных ключей K. Поскольку оба ключа и превращают исходный текст в один и тот же зашифрованный текст, то и расшифрован он будет правильно обоими ключами. Это означает, что при поиске ключа длиной 2n генетический алгоритм найдет решение, близкое к ключу . Этому ключу будет соответствовать относительно небольшое значение фитнесс-функции, поэтому найденное алгоритмом "рекордное" значение фитнесс-функции для ключей длиной 2n также будет относительно небольшим. То же самое справедливо и для ключей с длинами, кратными числу n. Иными словами, если проверяемая длина ключа l кратна длине настоящего секретного ключа n, то на выходе алгоритма следует ожидать ключ с относительно небольшим значением фитнесс-функции. Если же проверяемая длина ключа l не кратна длине секретного ключа n, а сам секретный ключ является случайной символьной строкой, в которой на любой позиции с равной вероятностью может оказаться любой символ алфавита А, то "рекордное" значение фитнесс-функции окажется более заметно.

Таким образом, идея, используемая при нахождении длины ключа, заключается в следующем. Многократно запуская генетический алгоритм в предположении, что длина секретного ключа равна l, и каждый раз увеличивая этот параметр на единицу, получаем последовательность c[l], c[l + 1], c[l + 2] и т.д. из "рекордных" значений фитнесс-функции. В этой последовательности обязательно будет присутствовать подпоследовательность, состоящая из элементов, чьи номера образуют арифметическую прогрессию j, j + d, j + 2d и т.д., а сами элементы этой подпоследовательности c[j], c[j + d], c[j + 2d] и т.д. будут заметно отличаться в меньшую сторону от остальных элементов последовательности. Тогда разность прогрессии d окажется в точности равной искомой длине п секретного ключа.

После того, как длина ключа будет найдена, снова запускаем генетический алгоритм. Полученное им решение, соответствующее "рекордному" значению фитнесс-функции, либо окажется искомым секретным ключом, либо будет близко к нему.

Выше был приведен пример исходного текста, который затем зашифровали с помощью ключа математика. Генетический алгоритм был запущен для расшифровки полученного зашифрованного текста с предполагаемой длиной l секретного ключа, равной 4, 5, 6, …, 34, и вычислены соответствующие "рекордные" значения фитнесс-функции с[4], c[5], c[6], …, c[34]. Оказалось, например, что

c[8] = 159.46,

c[9] = 148.49,

c[10] = 42.59 (абсолютный "рекорд"),

c[11] = 148.46,

c[12] = 156.63.

На рисунке хорошо видны "провалы", которые соответствуют "рекордным" значениям фитнесс-функции, полученным для предполагаемых длин l, равных 10, 20 и 30. Поскольку эти числа образуют арифметическую прогрессию с разностью 10, то можно сделать вывод, что искомая длина секретного ключа равна 10.

В. В. Морозенко, Г. О. Елисеев

Размещено на http://www.allbest.ru//

76

Размещено на http://www.allbest.ru//

"Рекордные" значения фитнесс-функции для различных предполагаемых длин секретного ключа

генетический алгоритм криптоанализ шифр виженер

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

"греция_счановится_ыентром_ресесленно

й_нндустрии_н_орговли.восуществлбется_

переъод_от_пержобытнообщннного".

Полностью расшифровать зашифрованный текст не удалось, поскольку полученный текст не совпадает с исходным. Однако можно заметить, что он очень близок к исходному. В нем можно заметить осмысленные ("греция") или почти осмысленные слова ("ыентром", "нндустрии"). Благодаря наличию таких слов процесс расшифрования полученного текста можно довести до конца "вручную".

При работе алгоритма были выбраны следующие значения основных параметров: численность популяции - 70 особей, количество поколений - 40, вероятность мутации - 0.2, в каждом поколении 50% особей участвовали в скрещивании.

Отметим, что для ускорения работы алгоритма при поиске длины ключа можно использовать популяции с малой численностью и небольшое число поколений, а после нахождения истинной длины ключа n можно повторно применить генетический алгоритм с большими значениями указанных параметров для более точного отыскания секретного ключа.

Заключение

Исследование показало, что предложенный в данной статье генетический алгоритм вполне может быть использован для криптоанализа шифра Виженера, если верно предположение о том, что исходный текст, подвергшийся шифрованию, является осмысленным текстом достаточной длины и обладает среднестатистическим частотным профилем. Такое предположение вполне естественно и почти не сужает область применимости данного алгоритма. Более того, устойчивыми частотными характеристиками обладают все "живые" языки, поэтому алгоритм можно легко адаптировать для расшифрования текстов, написанных, например, на английском или французском языке. Для этого достаточно ввести в алгоритм информацию о среднестатистических частотах биграмм указанных языков.

Предложенный генетический алгоритм далеко не всегда полностью расшифровывает зашифрованное сообщение. Получаемый на выходе алгоритма текст чаще всего отличается от исходного текста, хотя и незначительно. Как правило, расшифрованный текст имеет неточности, которые не бросаются в глаза. При удачном подборе параметров генетический алгоритм показывает вполне хорошие результаты как по скорости сходимости, так и по качеству получаемого решения. Нельзя сказать, что применение описанного генетического алгоритма позволяет полностью автоматизировать процедуру криптоанализа, однако он сводит к минимуму участие человека и его "ручную" работу в этом процессе.

Частным случаем шифра Виженера является шифр Вернама, в котором длина секретного ключа совпадает с длиной исходного текста. К.Шеннон доказал, что шифр Вернама абсолютно надежен [7]. Естественно, что и попытки "взломать" этот шифр с помощью описанного генетического алгоритма окажутся неудачными. Этот факт объясняется тем, что для успешной работы алгоритма необходимо, чтобы длина зашифрованного текста многократно превосходила длину секретного ключа. В ситуации с шифром Вернама это условие, очевидно, не выполняется.

Список литературы

Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии: учебн. пос. М.: Гелиос АРВ, 2001.

Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. М.: Изд-во Триумф, 2002.

Гладков Л.А., Курейчик В.В., Курейчик В.М. Генетические алгоритмы / под ред. В.М.Курейчика. М.: Физматлит, 2006.

Delman B. GeneticAlgorithms in Cryptography // A Thesis Submitted in Partial Fulfillment of the Requirements for the Degree of Master of Science in Computer Engineering. New York, 2004.

Городилов А.Ю. Криптоанализ перестановочного шифра с помощью генетического алгоритма // Вестн. Перм. ун-та. Пермь, 2007. Вып. 7(12). С.44-49.

Jakobsen T. A Fast Method for the Cryptanalysis of Substitution Ciphers. 1995.

Шеннон К. Теория связи в секретных системах // Работы по теории информации и кибернетике. М.: ИЛ, 1963.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.

    курсовая работа [45,0 K], добавлен 13.11.2009

  • Назначение алгоритма "Blowfish", особенности длины ключа и степени криптостойкости. Обоснование программной реализации расширения ключа и сцепления блоков шифра "Blowfish". Проверка использования инициализирующего вектора и распространения ошибок шифра.

    курсовая работа [1,3 M], добавлен 30.01.2014

  • Реализация криптографического алгоритма шифрования и дешифрования с использованием шифра Виженера. Понятие и суть полиалфавитного шифра. Метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. Взлом полиалфавитных шифров.

    курсовая работа [863,0 K], добавлен 21.04.2012

  • Проблема скрытия и защиты информации от несанкционированного использования. История создания шифра. Решения задачи шифрования текста и кодирования данных. Тестирование полученного приложения и анализ работы программы с точки зрения пользователя.

    курсовая работа [3,0 M], добавлен 24.11.2013

  • Криптографические методы обеспечения конфиденциальности, невозможности прочтения информации посторонним. Современные методы шифрования информации как обратимого преобразования открытого текста в шифрованный на основе секретного алгоритма или ключа.

    презентация [514,3 K], добавлен 06.02.2016

  • История возникновения криптографии. Открытый ключ криптосистемы. Шифрование секреторного ключа. Математические методы обеспечения конфиденциальности и аутентичности информации. Преобразование текста на основе секретного алгоритма в шифрованный текст.

    презентация [260,8 K], добавлен 11.10.2015

  • Описание принципа работы генетического алгоритма, проверка его работы на функции согласно варианту на основе готовой программы. Основные параметры генетического алгоритма, его структура и содержание. Способы реализации алгоритма и его компонентов.

    лабораторная работа [20,2 K], добавлен 03.12.2014

  • Выбор шифров перестановки для проведения анализа. Анализ алгоритма двух различных шифров, построение блок-схемы алгоритма и программы, разработка общего интерфейса. Сравнение шифров перестановки по результатам шифрования и криптоанализа текстов.

    курсовая работа [2,8 M], добавлен 14.01.2014

  • Программа на языке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса. Входные, выходные данные. Схема алгоритма и текст программы. Порядок ввода исходных данных и описание получаемых результатов. Тестовых задания и анализ их функционирования.

    курсовая работа [4,0 M], добавлен 06.01.2011

  • Реализация алгоритма DES и режимов шифрования для любой длины сообщения и любой длины ключа. Шифрование сообщений различной длины и ключа с замериванием времени и скорости шифрования. Реализация алгоритма RSA. Сохранение зашифрованного файла на диск.

    курсовая работа [398,4 K], добавлен 26.01.2010

  • Простейшие шифры и их свойства. Криптостойкость шифра как его основной показатель эффективности. Шифратор Ч. Уитстона. Размер ключа перестановки. Алгоритм сложной замены – шифр Гронсфельда. Ассиметричная криптографическая система с открытым ключом.

    курсовая работа [512,3 K], добавлен 18.01.2013

  • Электронная цифровая подпись: понятие, составляющие, назначение и преимущества ее использования. Использование ЭЦП в мире. Правовые основы и особенности использования ЭЦП в Украине. Функция вычисления подписи на основе документа и секретного ключа.

    реферат [22,7 K], добавлен 26.12.2009

  • Этапы работы генетического алгоритма, область его применения. Структура данных, генерация первоначальной популяции. Алгоритм кроссинговера - поиск локальных оптимумов. Селекция особей в популяции. Техническое описание программы и руководство пользователя.

    реферат [1014,2 K], добавлен 14.01.2016

  • Основные алгоритмы реализации электронной цифровой подписи. Понятие секретного и открытого ключа. Программные модули, сроки действия и порядок функционирования электронной подписи. Технология работы с информационной системой "ЭЦП", перспективы развития.

    курсовая работа [1,1 M], добавлен 07.12.2010

  • Характеристика методов нечеткого моделирования и изучение системы кластеризации в пакетах прикладных программ. Разработка и реализация алгоритма для оптимизации базы правил нечеткого классификатора с помощью генетического алгоритма аппроксимации функции.

    дипломная работа [1,9 M], добавлен 21.06.2014

  • Определение и описание "генетического алгоритма", идея которого состоит в организации эволюционного процесса, конечной целью которого является получение оптимального решения в сложной комбинаторной задаче. Пример его тривиальной реализации на C++.

    контрольная работа [172,1 K], добавлен 24.05.2010

  • Формирование ключей для шифрования сообщения. Описание алгоритма RSA: шифрование и дешифрование. Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Сущность цифровой подписи.

    лабораторная работа [326,0 K], добавлен 04.11.2013

  • Операторы генетического алгоритма. Пример простейшей программы. Процесс генерации и накопления информации о выживании и продолжении рода в ряде поколений популяции. Программа, реализующая простой генетический алгоритм для нахождения минимума функции.

    курсовая работа [39,3 K], добавлен 29.10.2012

  • Понятие и история изобретения криптосистемы с открытым ключом. Свойства односторонней функции и сложность раскрытия шифра. Описание алгоритма RSA: шифрование и дешифрование. Возможные атаки, способы взлома, обоснование и практическая реализация RSA.

    курсовая работа [45,9 K], добавлен 24.12.2011

  • Программа реализации генетического алгоритма, использование визуальной среды программирования. Руководство пользователя, листинг программы. Возможность ввода параметров: объем популяции, число поколений, коэффициент скрещивания и мутации, число городов.

    курсовая работа [2,9 M], добавлен 20.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.