Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБРОБКА ІНФОРМАЦІЇ ЗАСОБАМИ КОМП’ЮТЕРНОЇ МАТЕМА...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.08 Mб
Скачать

2.7.2 Лабораторна робота №9

Мета роботи. Ознайомитися з динамічним кодуванням стиснення даних методом Хаффмена, отримати навики побудови кодового дерева та здійснити стиснення даних .

Хід роботи

  1. Побудувати нульову вітку дерева Хаффмена згідно з варіантом завдання (таблиця 2.14).

  2. При надходженні першого символа побудувати перший родинний вузол, при цьому вліво йде вітка з меншою вагою, тобто нульова.

  3. Для кожного наступного символа зробити звірення із символами, які вже представлені на дереві. Якщо символ вже є, то він передається в стиснутому вигляді. При надходженні кожного наступного символа необхідно перевіряти умову, щоб уліво йшла вітка з меншою вагою. Якщо ця умова не виконується, то необхідно вузли поміняти місцями.

  4. Виконувати пункти 2 і 3 поки не закінчиться кодова комбінація.

  5. Варіант

    Кодова комбінація

    1

    SDYTRGYUHSTRNRG

    2

    FGJKRKJGKGTKFGFR

    3

    YTUIRYIUERTUYTUT

    4

    ZXXCVDFZCXXDFZD

    5

    MNBVNMGNHMNJN

    6

    LKKJLUKJYLHJKLLL

    7

    QWASDREWQDSAFD

    8

    POIULKIOPULKJPOU

    9

    GHJJFYGHJJHGFYRTJ

    10

    HGJHGYJHGTHJGYFH

    По дереву Хаффмена отримати кодову комбінацію для кожного символа.

Таблиця 2. 14 – Варіанти завдання

-перевіряємо, чи є в масиві С черговий

символ із вхідного масиву S;

Приклад . Кодуванням стиснення даних методом Хаффмена

1.Функція знаходження ймовірностей символів в рядку

перетворюємо вхідний рядок у вектор

-0-му елементу масиву кодів присво-юємо значення коду першого символа в рядку;

-якщо є, тоді збільшуємо на 1 значен-ня відповідного значення масиву Р, в

якому містяться кількість однакових

символів в рядку;

-isAdd - змінна, яка показує чи елемент доданий до масиву;

-в масив Р заносимо початкову кіль -кість символів, що містяться в масиві С;

-якщо елемент не був доданий, то

необхідно створити новий елемент

масиву С і відповідне значення в

Р установити 1;

-знаходимо імовірність появи кожної

літери і записуємо іх в масив Р.

-знаходимо суму елементів масиву Р;

2. Функція пошуку числа n у масиві М, повертає індекс елементу

3. Функція кодування