==Конструктивная алгебра: алгоритмические основы обработки информации== ~~TOC~~ Курс поддерживается группой ((http://www.digdes.ru/ {{ :dd1.jpg }})) **Комментарии для потенциальных слушателей** Мое личное мнение: курс с таким названием и соответствующим ему содержанием должен быть естественным окончанием[[финальным аккордом]] программы обучения по Computer Science. Собственно, объяснение __теоретических основ__ алгоритмов обработки информации. Не всем этот уровень знаний нужен --- большинство программистов преспокойно обходятся самими алгоритмами ("дайте нам спецификации, а уж мы вам их запрограммируем!"). $ \mathfrak{Jedem} $ $ \mathfrak{das} $ $ \mathfrak{ Seine} $: выбирайте по себе --- "шпагу для дуэли, меч для битвы". Материала много и он в некоторых местах сложный, даже очень сложный. Много математики --- главным образом, алгебры; но и ((:probability теорию вероятностей)) тоже приходится подтаскивать. Я стараюсь подстраиваться под уровень слушателей, но иногда могу лишь слегка облегчить перенапряжение их мозгов. Уже выложенные материалы дадут представление чего ожидать. Но много чего еще не выложено, или выложено в полупереработанном мною (черновом) варианте. Приходится доделывать "на ходу". Не обессудьте! Июнь 2012. ---- ===Введение== ((:shannon Теория информации.)) Энтропия, информация, избыточность. Сжатие данных, ((:codes префиксные коды: Хаффмана)) и ((:shannon#код_шеннона_-_фано Шеннона-Фано)). ((:codes:lzw Код LZW)). Теоремы Шеннона. Коды, исправляющие ошибки. Шифрование. ===Алгебраические основы== ((:numtheory Начала теории целых чисел.)) Наибольший общий делитель ($ \operatorname{HOD} $). Алгоритм Евклида, теорема Ламе. Линейное представление $ \operatorname{HOD} $, континуанта. Делимость целых чисел, взаимно-простые числа, простые числа. Факторизация, метод Ферма. Функция Эйлера. ((:modular Модулярная арифметика.)) Сравнения. Вычисление $ A^B \pmod{M} $ --- алгоритм квадрирования-умножения. Теоремы Ферма и Эйлера. Решение линейных сравнений. Китайская теорема об остатках. ((:modular:index Индекс (дискретный логарифм) )). Первообразный (примитивный) корень по модулю. Решение сравнений вида $ x^n \equiv B \pmod{M} $. ((:complex_num Комплексные числа.)) Корни из единицы, первообразные корни из единицы. ((:polynomial Полином одной переменной.)) Схема Хорнера. Умножение полиномов --- классические и быстрые алгоритмы. Приводимость и неприводимость полиномов над $ \mathbb Q_{} $. ((:complex_num:circlediv Уравнения деления круга.)) ((:interpolation Интерполяция.)) ((:algebra2:vander Матрица Вандермонда)). Интерполяционный полином в форме Лагранжа. Тригонометрическая интерполяция. ((:interpolation:systemerr Интерполяция при наличии систематических ошибок в таблице.)) ((:dets:resultant Результант.)) Представление в детерминантной форме по методу Сильвестра и по методу Безу. Связь с $ \operatorname{HOD} $ полиномов, тождество Безу. Преобразование Чирнгауза. ===Криптография== ((:crypto История криптографии.)) Шифры Цезаря, Кардано, Виженера и скиталы. ((:crypto Криптография открытых ключей.)) Односторонняя функция (с секретом). Алгоритмы RSA и ((:cipher:elgamal ЭльГамаля)) построения ключей. Алгоритмы проверки числа на простоту. ((:crypto:pprime#вероятностно_простые_числа Вероятностно простые числа.)) Алгоритм ((:crypto:pprime#алгоритм_рабина-миллера Рабина-Миллера)). ((:crypto:attacks Криптоанализ.)) Факторизация --- алгоритмы Полларда. Атака малых показателей. ((:crypto:signature Аутентификация.)) Функции хэширования. Атака парадокса дней рождения. Цифровая подпись. ===Протоколы голосования, разделения секрета и консенсуса== ((:interpolation:shamir Схема Шамира разделения секрета.)) Децентрализованный протокол голосования. ===Поля Галуа== ((:gruppe:galois Основы теории конечных полей.)) Бесконечные поля. Конечные поля, представление элемента в векторном, полиномиальном и матричном видах. Умножение и обращение. Обобщенная теорема Ферма. Порядок элемента, примитивный элемент поля. Проблема обращения элемента в поле Галуа. Полиномы над $ \mathbf{GF}(2) $. Разложение $ x^{2^{n}} - x $. Неприводимые и примитивные полиномы. Полиномы над $ \mathbf{GF}(2^n) $. ===Кодирование== ((:codes:hamming Коды, исправляющие ошибки.)) Расстояние Хэмминга. Коды Адамара. Линейный код, порождающая и проверочная матрицы. Коды Хэмминга. ((:codes:cyclic Циклические коды.)) Систематическое и несистематическое кодирование. Свёртка. ((:codes:cyclic:bch Коды Боуза-Чоудхури-Хоквингема.)) Коды Рида-Соломона. ((:codes:raid Математика RAID-6.)) ===Быстрое преобразование Фурье== ((:interpolation:dft Дискретное преобразование Фурье.)) Интерполяция алгебраическая и тригонометрическая. ((:interpolation:dft#быстрое_преобразование_фурье Быстрое преобразование Фурье.)) ((:interpolation:dft:polynom_mult#числовое_преобразование_ферма Числовое преобразование Ферма.)) Алгоритм Шенхаге-Штрассена. Применения быстрого преобразования Фурье и числового преобразования Ферма. Умножение полиномов и целых чисел. Циклическая свертка. ==Ключевые алгоритмы== 1. Коды Хаффмана и Шеннона-Фано. 2. $ \operatorname{HOD}(A,B) $ и линейное представление. 3. $ \phi(A) $ 4. $ A^B \pmod{M} $ (со всевозможными упрощающими соображениями) 5. $ Ax\equiv B \pmod{M} $ 6. $ A_1x\equiv B_1 \pmod{M_1},\dots,A_kx\equiv B_k \pmod{M_k} $ 7. Индекс. $ x^n \equiv B \pmod{p} $ 8. RSA схема выбора ключей; алгоритмы шифрования и цифровой подписи 9. Вероятностный алгоритм проверки простоты числа. 10. Код Хемминга. ==Задачи== ((:codes:problems ЗДЕСЬ)) ==Вопросы к экзамену== ((:codes:questions ЗДЕСЬ)) ==Литература== **Берлекэмп Э.** //Алгебраическая теория кодирования//. М.Мир. 1971 **Блейхут Р.** //Быстрые алгоритмы цифровой обработки сигналов//. М. Мир. 1989 **Лидл Р., Нидеррайтер Г.** //Конечные поля. Том 1, том 2.// М.Мир. 1988. **Питерсон У., Уэлдон Э.** //Коды, исправляющие ошибки.// М.Мир. 1976. **Сэломон Д.** //Сжатие данных, изображений и звука.// М.Техносфера. 2006((:algorithms:test .)) **Утешев А.Ю., Черкасов Т.М., Шапошников А.А.** //Цифры и шифры.//СПб. СПбГУ. 2001. **Menezes A. J., van Oorschot P.C., Vanstone S.A.** //Handbook of Applied Cryptography.// (5th ed.) 2001. CRC Press ((:algorithms:bft .)) ((:users/au/share/bc122022 bc))