Приближение равной вероятности символов в тексте
Если допустить, что все символы алфавита в любом тексте появляются с одинаковой частотой, то информационный вес всех символов будет одинаковым. Пусть N – мощность алфавита. Тогда доля любого символа в тексте составляет 1/N-ю часть текста. По определению вероятности эта величина равна вероятности появления символа в каждой позиции текста:
p = 1/N
Согласно формуле К. Шеннона, количество информации, которое несет символ, вычисляется следующим образом:
i = log2(1/p) = log2N (бит) (2)
Следовательно, информационный вес символа (i) и мощность алфавита (N) связаны между собой по формуле Хартли 2i = N.
Зная информационный вес одного символа (i) и размер текста, выраженный количеством символов (K), можно вычислить информационный объем текста по формуле:
I = K · i (3)
Эта формула есть частный вариант формулы (1), в случае, когда все символы имеют одинаковый информационный вес.
Из формулы (2) следует, что при N = 2 (двоичный алфавит) информационный вес одного символа равен 1 биту.
С позиции алфавитного подхода к измерению информации 1 бит – это информационный вес символа из двоичного алфавита.
Более крупной единицей измерения информации является байт.
1 байт – это информационный вес символа из алфавита мощностью 256.
Поскольку 256 = 28, то из формулы Хартли следует связь между битом и байтом:
2i = 256 = 28
Отсюда: i = 8 бит = 1 байт
Для представления текстов, хранимых и обрабатываемых в компьютере, чаще всего используется алфавит мощностью 256 символов. Следовательно, 1 символ такого текста “весит” 1 байт.
Пример 1.Сколько различных символов, закодированных байтами, содержится в сообщении:
1101001100011100110100110001110001010111?
Решение:Разбиваем сообщение на восьмёрки битов (то есть, на байты):
11010011 00011100 11010011 00011100 01010111.
Сравнивая байты между собой, видим, что первый и третий, а также второй и четвёртый байты одинаковые. Следовательно, различных символов всего три.
Пример 2.Для записи письма был использован алфавит мощностью в 16 символов. Письмо состояло из 25 строк. В каждой строке вместе с пробелами было 64 символа. Сколько байт информации содержало письмо?
Решение:М = 16
i = lоg216 = 4 (бит)
К = 25*64= 1600
I = К*i = 1600 * 4 бит = 6400 бит = 800 байт
Ответ: 800 байт.
Пример 3. Письмо состояло из 30 строк. В каждой строке вместе с пробелами по 48 символов. Письмо содержало 900 байт информации. Какова мощность алфавита (количество символов), которым было написано письмо?
Решение:
К = 30*48 =1440
I = 900 байт = 7200 бит
i = I/К = 5 бит
N = 25 = 32 символа
Ответ: 32 символа.
Пример 4. Даны два текста, содержащих одинаковое количество символов. Первый текст состоит из алфавита мощностью 16 символов, а второй текст - из 256 символов. Во сколько раз информации во втором тексте больше, чем в первом?
Решение:
К1 = К2
N1 = 16, N2 = 256
i1 = lоg216 = 4 (бит)
i2 = lоg2256 = 8(бит)
I1=К1* i1 , I2=К2* i2
I2/I1= (К2*i2) / (К1* i1) = (К2*8) / (К2*4) =8/4 = 2
Ответ: в 2 раза.
Пример 5. Каждый символ в Unicode закодирован двухбайтным словом. Оцените информационный объем следующего предложения в той кодировке:
«Без труда не вытащишь рыбку из пруда.»
1)37 бит 2) 592 бита 3) 37 байт 4) 592 байта
Решение:
Длина фразы составляет примерно 40 символов. Следовательно, ее объем можно приблизительно оценить в 40 ´ 2 =80 байт. Такого варианта ответа нет, попробуем перевести результат в биты: 80 байт ´ 8 = 640 бит. Наиболее близкое значение из предложенных — 592 бита. Заметим, что разница между 640 и 592 составляет всего 48/16 = 3 символа в заданной кодировке и его можно считать несущественным по сравнению с длиной строки.
Ответ: 2.
Замечание: Подсчетом символов в строке можно убедиться, что их ровно 37 (включая точку и пробелы), поэтому оценка 592 бита = 74 байта, что соответствует ровно 37 символам в двухбайтовой кодировке, является точной.
Пример 6. Метеорологическая станция ведет наблюдение за влажностью воздуха. Результатом одного измерения является целое число от 0 до 100%, которое записывается при помощи минимально возможного количества бит. Станция сделала 80 измерений. Определите информационный объем результатов наблюдений.
1) 80 бит 2) 70 байт 3) 80 байт 4) 560 байт
Решение:
Способ 1
Воспользуемся формулой алфавитного подхода к измерению количества информации I = M log2N, где N — количество символов (мощность) алфавита, в котором записано сообщение, М — количество символов в записи сообщения (длина сообщения), I — количество бит информации, содержащееся в сообщении.
Алфавитом в данном случае является множество целочисленных значений влажности от 0 до 100. Таких значений 101. Поэтому информационный объем результатов одного измерения I=log2101. Это значение не будет целочисленным. Не вычисляя его, сразу найдем округленное в большую сторону целое значение. Заметим, что ближайшая к 101 целая степень двойки, большая 101, есть число 128 = 27. Поэтому принимаем 7=log2128 = 7 бит. Учитывая, что станция сделала 80 измерений, общий информационный объем равен 80 ´ 7=560 бит =70 байт.
Ответ: 2.
Способ 2
Воспользуемся следствием из формулы. Заметим, что 26< 101 < 27, поэтому минимально необходимое количество двоичных разрядов (бит) равно 7. Далее аналогично получаем, что общий информационный объем равен 80 ´ 7 = 560 бит = 70 байт.
Ответ: 2.
Пример 7.Для регистрации на сайте некоторой страны пользователю требуется придумать пароль. Длина пароля – ровно 11 символов. В качестве символов используются десятичные цифры и 12 различных букв местного алфавита, причём все буквы используются в двух начертаниях: как строчные, так и заглавные (регистр буквы имеет значение!).
Под хранение каждого такого пароля на компьютере отводится минимально возможное и одинаковое целое количество байтов, при этом используется посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством битов.
Определите объём памяти, который занимает хранение 60 паролей.
1) 540 байт 2) 600 байт 3) 660 байт 4) 720 байт
Решение:
1) согласно условию, в пароле можно использовать 10 цифр (0..9) + 12 заглавных букв местного алфавита + 12 строчных букв, всего 10 + 12 + 12 = 34 символа
2) для кодирования 34 символов нужно выделить 6 бит памяти (5 бит не хватает, они позволяют закодировать только 25 = 32 варианта)
3) для хранения всех 11 символов пароля нужно 11 × 6 = 66 бит
4) поскольку пароль должен занимать целое число байт, берем ближайшее большее (точнее, не меньшее) значение, которое кратно 8: это 72 = 9 × 8; то есть один пароль занимает 9 байт
5) тогда 60 паролей занимают 9 × 60 = 540 байт
Ответ: 1.