- •Поняття алгоритму. Властивості алгоритмів. Виконавці алгоритмів. Математичні основи аналізу алгоритмів (о нотація).
- •Базові структури алгоритмів. Основні властивості базових структур алгоритмів.
- •Алгоритми сортування, їх характеристики та оцінка.
- •Алгоритм сортування методом прямого обміну.
- •Алгоритм сортування методом вставки.
- •Алгоритм сортування методом Шелла.
- •Алгоритм сортування методом Хоара.
- •Алгоритм сортування пірамідальним методом.
- •Основні структури даних.
- •Алгоритми шифрування інформації. Загальна характеристика, класифікація.
- •Алгоритм шифрування rsa.
- •Компілятори інтерпретатори, основні поняття.
- •Списки, черги основні поняття. Приклади реалізації.
- •Зворотня польська нотація. Основні поняття , використання.
- •Графи , алгоритм Дейкстри
Основні структури даних.
Структури даних, що складаються з одного елемента називаються тривіальними. Одним з прикладом структурної організації даних є масив. Масив – фіксована сукупність даних одного типу. Кожний текучий елемент має вказівник на наступний.
Стек – це структура даних, у якій елемент, записаний останнім, зчитують першим. Тобто використовується принцип “останній прийшов – перший пішов”. Стек використовують у програмуванні для реалізації рекурсії.
Черга – це структура даних, у якій елемент, записаний першим, зчитують першим. Тут діє принцип – “перший прийшов – перший пішов”. Стеки та черги описують і створюють у пам’яті за допомогою списків.
Список – це скінчена сукупність даних одного типу, між якими налагоджено зв’язок. Елемент (одно направленого) списку складається з двох частин: самого даного (даних) та вказівника на наступний елемент списку.
Списки мають деякі переваги над масивами. Вони досить ефективні щодо операцій додавання або видалення елементу в довільному місці списку, виконуючи їх за постійний час, тоді як масиви для цього потребують більше часу (час зростає з ростом кількості елементів масиву). З іншого боку, масиви дозволяють безпосередній доступ до будь-якого елементу. Однобічно зв'язані списки, натомість, потребують проходження усіх попередніх елементів. Очевидним недоліком списків є необхідність разом з корисною інформацією додаткового збереження інформації про вказівники, що позначається на ефективності використання пам'яті цими структурами.
Алгоритми шифрування інформації. Загальна характеристика, класифікація.
В основі любої методології шифрування є ключ шифрування. Існує 2 методології з використання ключів шифрування – симетрична, при цій методології один ключ для шифрування і дешифрування; асиметрична, при якій використовується два ключа(відкритий і секретний ключ, що взаємопов’язані). Відкритий ключ передається іншому абоненту, секретний зберігається в місці його формування.
Технологія використання асиметричної методології:
Кожен з абонентів генерує два ключа(відкритий та закритий).
Абоненти обмінюються відкритими ключами.
При допомозі відкритого ключа іншого абонента виконується шифрування.
----------------------------------------------------
Алгоритм шифрування rsa.
Схема RSA базується на обчисленні виразів зі степенями. Відкритий текст шифрується блоками, довжина кожного із яких менша за деяке число n.
Алгоритм генерації ключа:
A повинен згенерувати відкритий та секретний ключі:
1. Згенерувати два великих простих числа p та q приблизно однакової довжини;
2. Обчислити n = p * q, fi = (p – 1) * (q – 1);
3. Вибрати натуральне e, 1 < e < fi, взаємно просте з fi;
4. Використовуючи розширений алгоритм Евкліда, розв’язати рівняння
d * e º 1 (mod fi).
Відкритий ключ: (n, e). Секретний ключ: d.
Схема шифрування RSA
B шифрує повідомлення m та надсилає A.
1. Шифрування. В робить наступні дії:
а) отримати відкритий ключ (n, e) від А;
б) представити повідомлення у вигляді натурального числа m з проміжку [1 n];
в) обчислити c = me mod n;
г) надіслати шифротекст cдо А.
2. Дешифрування. Для отримання повідомлення m із шифротексту c А робить наступні дії:
а) використовуючи секретний ключ d, обчислити m = cd mod n.
----------------------------------------------------
Алгоритм сортування методом мінімальних елементів.
Ідея методу: створювати відсортовану послідовність, шляхом приєднання одного елемента до іншого. В цьому алгоритмі порівння відбувається проходячи всю послідовність від початку до кінця.
----------------------------------------------------
Приклади умовного запису операндів математичних виразів. Визначення послідовності дій в виразах.
Нехай задане просте арифметичне вираження виду:
(A+B)*(C+D)-E (1)
Представимо це вираження у виді дерева, у якому вузлам відповідають операції, а гілкам - операнди. Побудову почнемо з кореня, у якості якого вибирається операція, що виконується останньої. Лівій галці відповідає лівий операнд операції, а правій галці - правий. Зробимо обхід дерева, під яким будемо розуміти формування рядка символів із символів вузлів і гілок дерева. Обхід будемо робити від самої лівої гілки вправо і вузол переписувати у вихідний рядок тільки після розгляду всіх його гілок. Результат обходу дерева має вид:AB+CD+*E- Характерні риси вираження складаються в проходженні символів операцій за символами операндов і у відсутності дужок. Такий запис називається зворотним польським записом.Зворотний польський Властивості:
Обчислення виразу за 1 прохід.
Одержати зворотній польський запис використовуючи алгоритм Дейкстри.
( 0, ) 1, +- 2, */ 3, ** 4.
Вхідний рядок переглядається зліва направо при цьому операнди переписуються в вихідний рядок, а знаки операцій в стек заносяться у правилах:
Якщо стек порожній, то операція з вхідного рядка у стек.
Операція виштовхує зі стека в вихідний рядок з більшими чи рівним пріоритетом.
Якщо черговий символ вхідного рядка є ( вона поміщається в стек.
) виштовхує від операції зі стека до найближчої (.
----------------------------------------------------