
- •Дерева. Означення та основні властивості.
- •Кореневе дерево. Упорядковане кореневе дерево, m-арне дерево, повне m-арне дерево.
- •Властивості повного m-арного дерева. Рівень вершини і висота кореневого дерева. Збалансоване дерево.
- •Обхід бінарних дерев (три способи).
- •6.Інфіксна форма запису.
- •7. Префіксна форма запису виразів (прямий польський запис).
- •8. Постфіксна форма запису виразів. (обернений польський запис).
- •9. Бінарне дерево пошуку.
- •10. Дерево прийняття рішень.
- •11. Алгоритм бектрекінг. Приклади: пошук гамільтонових циклів у графі, задача про n ферзів та інші задачі.
- •12. Каркаси графів. Способи їх побудови.
- •13. Задача про мінімальний каркас. Алгоритм Краскала.
- •14. Відношення. Означення відношення із однієї множини в іншу, n-арні відношення. Означення відношення на множині. Бінарні відношення. Властивості відношень. Способи задання бінарних відношень.
- •15. Відношення еквівалентності.
- •16. Відношення часткового порядку.
- •17. Рефлексивне замикання відношення. Симетричне замикання відношення.
- •18. Транзитивне замикання відношення. З’єднувальне відношення.
- •19. Алгоритм Уоршала.
- •20. Постановка проблеми кодування, її значення в інформатиці. Алфавітне і рівномірне кодування. Достатні умови однозначності алфавітного кодування.
- •21. Властивості однозначного алфавітного кодування. Нерівність Крафта-Макміллана.
- •22. Задача оптимального кодування. Метод Фано побудови «економних» кодів.
- •23. Метод Хаффмана побудови оптимального коду.
- •24. Коди, стійкі до перешкод. Загальна теорія.
- •25. Коди, стійкі до перешкод: коди Хемінга.
- •26. Булеві функції. Означення, задання таблицями і формулами, істотні і неістотні змінні.
- •27. Диз’юктивні нормальні форми.
- •28. Кон'юктивні нормальні форми.
- •29. Поліном Жегалкіна
- •30. Алгебри булевих функцій
- •31. Алгебра Жегалкіна
- •35. Клас l. Лема про нелінійну функцію.
- •36. Теорема Поста.
- •37. Постановка задачі мінімізації булевих функцій.
- •38. Методи Квайна та Мак-Класкі.
- •39. Імплікантна таблиці Квайна. Метод Петрика відбору тупікових днф.
- •40. Граматики з фразовою структурою.
- •42. Скінченні автомати з виходом. Способи задання, приклади.
- •43. Скінченні автомати без виходу. Способі задання приклади.
- •44. Машина Тьюрінга.
21. Властивості однозначного алфавітного кодування. Нерівність Крафта-Макміллана.
Розглянемо схему алфавітного кодування σ і різні слова, складені з елементарних кодів. Схему σ називають роздільною, якщо з рівності
випливає, що k=l, it=jt для кожного t=1,..,k, тобто будь-яке слово, складене з елементарних кодів, єдиним способом розкладання на елементарні коди. Очевидно, що алфавітне кодування з роздільною схемою допускає однозначне декодування. Схему σ називають префіксною, якщо для будь-яких i,j (i,j=1,…,r, i<>j) елементарний код βі не є префіксом елементарного коду βj.
Т-ма. Префіксна схема є роздільною.
Т-ма. (Нерівність Макмілана). Якщо схема алфавітного кодування σ роздільна, то
,
li=l(βi).
Д-ня. Позначимо L=max{l1,l2,…,lr}. Запишемо r-тий степінь лівої частини нерівності.
r.
Розкривши дужки, отримаємо суму
,
де
(i1,…,ir)
– різні
набори номерів елементарних кодів.
Позначимо через v(r,m)
кількість
доданків вигляду 1/2m,
які
входять у цю суму, тут m=
.
Для
деяких m
може
бути v(r,m)=0.
Зведемо
подібні члени й отримаємо суму
. Кожному
доданку вигляду
можна однозначно спів ставити код
вигляду
.
Це
слово складається з r
елементарних кодів і має довжину m.
Отже, v(r,m)
– це к-ть деяких слів вигляду
,
таких, що l(
)=m.
Оскільки схема σ роздільна, то v(r,m)<=2m.
Можемо записати
.
Отже,
для кожного r
виконується нерівність
r<=rL,
звідси
22. Задача оптимального кодування. Метод Фано побудови «економних» кодів.
Нехай заданий алфавіт А={a1,..,ar} і розподіл ймовірностей Р=(р1,..,рr) появи букв у повідомленні. Тут рі ймовірність появи букви аі. Не зменшуючи загальності, можна вважати, що
р1>=p2>=…>=pr>0,
тобто можна одразу виключити букви, які не можуть з’явитись у повідомленні, і впорядкувати букви за спаданням ймовірностей їхньої появи. Крім того р1+…+рr=1.
,
називають
середньою довжиною кодування σ для
розподілу ймовірностей Р.
Алгоритм Фано:
Упорядковуємо букви алфавіту А за спаданням ймовірностей їхньої появи в повідомленні.
Розбиваємо множину букв, записаних у вказаному порядку, на 2 послідовності так, щоб сумарні ймовірності кожної з них були якомога ближчі одна до одної. Кожній букві з першої частини приписуємо символ 0, другої – 1. Далі так само чинять з кожною частиною, якщо вона містить принаймні 2 букви. Процедуру продовжуємо доти, доки вся множина не буде розбита на окремі букви.
Алгоритм Фано має просту інтерпретацію за допомогою бінарного дерева. Від кореня відходять 2 ребра, одне з яких позначене символом 0, друге – 1. Ці 2 ребра відповідають розбиттю множини всіх букв на 2 майже рівно ймовірні частини, одній з яких спів ставляють символ 0, а другій – 1. Ребра, що виходять із вершин наступного рівня, відповідають розбиттю отриманих частин знову на 2 майже рівно ймовірні послідовні частини. Цей процес продовжують до моменту, коли множина букв буде розбита на окремі букви. Кожний листок дерева відповідає деякому елементарному коді. Щоб записати цей код потрібно пройти простий шлях від кореня до відповідного листка.