![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Алгоритм Уоршала.
Алгоритм Уоршала ефективно обчислює матрицю W(k) за матрицею W(k-1). Шлях із ai в aj з внутрішніми вершинами в множині {a1, a2, …, ak}. Зазначимо, що W(k-1). Шлях із ai в aj з внутрішніми вершинами в множині {a1, a2,.., ak} існує лише в 2 випадках: 1) Якщо існує шлях із ai в aj з внутрішніми вершинами в множині {a1, a2, …, ak-1}. 2) Якщо існує шлях із аі в ак та з ак в аj і кожний з цих шляхів має внутрішні вершини лише в множині {a1, a2, …, ak}. Алгоритм Уоршала: Присвоєння початкових значень. Крок 1. Виконати W: =MR, k: =0. Ітерація. Крок 2. Виконати k: =k+1. Крок 3. Для всіх i< > k таких, що wik=1 і для всіх j виконати операцію wij: =wikvwkj. Перевірка закінчення. Крок 4. Якщо k=n, то зупинились. Отримано розв’язок W = MR*. Інакше – перейти до кроку 2. Результат роботи алгоритму – матриця MR* рефлексивного замикання відношення R.
20. Постановка проблеми кодування, її значення в інформатиці. Алфавітне і рівномірне кодування. Достатні умови однозначності алфавітного кодування. Нехай заданий алфавіт А={a1,.., ar}, який складається з скінченної кількості букв. Скінченну послідовність символів алфавіту А: α = Якщо α =α 1α 2, то α 1 називають початком, або префіксом слова α, а α 2 – закінченням, або постфіксом слова α. Алфавітне кодування. Алфавітне кодування задають схемою (або таблицею кодів) σ: а1 -> β 1, a2 -> β 2, ….. ar -> β r, де аі є А, β і є В*, і=1, …, r. Схема σ задає відповідність між буквами алфавіту А і деякими словами в алфавіті В. Вона визначає алфавітне кодування так: кожному слову α = Рівномірне кодування. Рівномірне кодування з параметрами k та n визначають так. Повідомлення α розбивають на блоки довжини k:
…. Надлишковістю схеми σ k, n на символ повідомлення називають величину R=(n-k)/k=n/k -1.
21. Властивості однозначного алфавітного кодування. Нерівність Крафта-Макміллана. Розглянемо схему алфавітного кодування σ і різні слова, складені з елементарних кодів. Схему σ називають роздільною, якщо з рівності випливає, що k=l, it=jt для кожного t=1,.., k, тобто будь-яке слово, складене з елементарних кодів, єдиним способом розкладання на елементарні коди. Очевидно, що алфавітне кодування з роздільною схемою допускає однозначне декодування. Схему σ називають префіксною, якщо для будь-яких i, j (i, j= 1, …, r, i< > j) елементарний код β і не є префіксом елементарного коду β j. Т-ма. Префіксна схема є роздільною. Т-ма. (Нерівність Макмілана). Якщо схема алфавітного кодування σ роздільна, то
Д-ня. Позначимо L=max{l1, l2, …, lr}. Запишемо r-тий степінь лівої частини нерівності.
Розкривши дужки, отримаємо суму
22. Задача оптимального кодування. Метод Фано побудови «економних» кодів. Нехай заданий алфавіт А={a1,.., ar} і розподіл ймовірностей Р=(р1,.., рr) появи букв у повідомленні. Тут рі ймовірність появи букви аі. Не зменшуючи загальності, можна вважати, що р1> =p2> =…> =pr> 0, тобто можна одразу виключити букви, які не можуть з’явитись у повідомленні, і впорядкувати букви за спаданням ймовірностей їхньої появи. Крім того р1+…+рr=1.
Алгоритм Фано: 1. Упорядковуємо букви алфавіту А за спаданням ймовірностей їхньої появи в повідомленні. 2. Розбиваємо множину букв, записаних у вказаному порядку, на 2 послідовності так, щоб сумарні ймовірності кожної з них були якомога ближчі одна до одної. Кожній букві з першої частини приписуємо символ 0, другої – 1. Далі так само чинять з кожною частиною, якщо вона містить принаймні 2 букви. Процедуру продовжуємо доти, доки вся множина не буде розбита на окремі букви. Алгоритм Фано має просту інтерпретацію за допомогою бінарного дерева. Від кореня відходять 2 ребра, одне з яких позначене символом 0, друге – 1. Ці 2 ребра відповідають розбиттю множини всіх букв на 2 майже рівно ймовірні частини, одній з яких спів ставляють символ 0, а другій – 1. Ребра, що виходять із вершин наступного рівня, відповідають розбиттю отриманих частин знову на 2 майже рівно ймовірні послідовні частини. Цей процес продовжують до моменту, коли множина букв буде розбита на окремі букви. Кожний листок дерева відповідає деякому елементарному коді. Щоб записати цей код потрібно пройти простий шлях від кореня до відповідного листка.
|