Информация Шеннона и вероятность событий
May. 4th, 2025 06:37 pmИнформация Шеннона и вероятность событий — принципиально одно и то же, различны лишь единицы измерения.
Чтобы получить биты, вероятность логарифмируют:
где s -- строка символов, каждый символ которой представляет результат того или иного события.
Например:
Информация Шеннона представляет верхнюю границу для функциональной информации: одна и та же строка символов, несущая N шенноновских бит, может нести или не нести смысл в определённом контексте. Только в первом случае количество функциональной информации в этой строке будет большим нуля.
где |Tf| — число синонимичных строк, кодирующих заданную функцию f, |S| — число возможных строк, 0 < |Tf| <= |S|. Tf — целевое подпространство пространства S возможных строк: Tf ⊂ S. Tf содержит строки, кодирующие f.
Если для простоты допустить, что рассматриваются только строки одинаковой длины N: |s| = N, то |S| = MN. Тогда:

Физический смысл дроби в формуле (1) состоит в вероятности случайного попадания в Tf при генерации строки (без осуществления поиска). Отсюда, кстати, видно, что формула для подсчёта функциональной информации может быть преобразована в формулу информационной энтропии.
Определение. Приведённое количество функциональной информации Functional_information0(s,f) представляет собой количество функциональной информации на символ строки:
Число строк, кодирующих заданную функцию f, |Tf| ≥ 1. Рассмотрим два случая.
Случай 1: |Tf| = 1
Функция максимально консервативна, так как при изменении любого символа в функциональной строке функция разрушается.
В этом случае единственная функциональная строка несёт максимум функциональной информации, который равен количеству информации Шеннона. Если для простоты снова принять, что |s| = N, то приведённое количество функциональной информации составляет:
Случай 2: |Tf| > 1
Чем больше синонимов допускает функция, тем менее она консервативна, потому что в этом случае замены одних символов в функциональной строке на другие не приводят к полной деградации функции.
Если число синонимов |Tf| = k > 1, то количество функциональной информации в каждой из строк синонимов уменьшается по сравнению с информацией Шеннона. В частности, приведённое количество функциональной информации уменьшается на величину log2k / N:
Чтобы получить биты, вероятность логарифмируют:
Shannon_information(s) = −log2(Probability(s)),
где s -- строка символов, каждый символ которой представляет результат того или иного события.
Например:
- Серия бросков честной монеты. В этом случае мы имеем дело с результатами независимых случайных событий с одинаковой вероятностью конкретного исхода из M возможных. При этом количество шенноновской информации в строке фиксированной длины максимально (если же монета несимметрична, то появится смещение (bias), которое будет влиять на исходы бросков, уменьшая информацию Шеннона, см. вики-статью Информационная энтропия).
- Возможные исходы каждого индивидуального броска: 0 или 1 (то есть алфавит содержит M = 2 символов). Разумеется, мы не учитываем экзотику типа кинули монету в чан с кислотой и она, пока падала, растворилась; монетку уничтожил в полёте снайпер; монета испытала на себе какой-нибудь эффект тунеллирования и пр. Такими исходами можно спокойно пренебречь в большинстве случаев на практике.
- При условии, что длина каждой строки равна N: |s| = N, вероятность реализации фиксированной серии бросков s: Probability(s) = piN = (1/M)N = (1/2)N , по теореме умножения вероятностей независимых событий, причём вероятность каждого события pi = 1/M.
- Информация: Shannon_information(s) = −log2(1/2)N = N бит. Чем, собственно, и удобны броски честной монеты, так как результат каждого отдельного броска сообщает наблюдателю ровно 1 бит информации Шеннона.
- Полинуклеотиды:
- Cуществует 20 протеиногенных аминокислот, то есть в этом случае размер алфавита M = 20.
- При том же условии |s| = N, вероятность генерации случайной нуклеотидной строки s: Probability(s) = (1/20)N.
- Информация: Shannon_information(s) = −log2(1/20)N = log220 * N ≈ 4.3N бит.
Информация Шеннона представляет верхнюю границу для функциональной информации: одна и та же строка символов, несущая N шенноновских бит, может нести или не нести смысл в определённом контексте. Только в первом случае количество функциональной информации в этой строке будет большим нуля.
- Например, если чертёж какого-нибудь агрегата содержит ошибки, количество функциональной информации в нем меньше, чем в чертеже без ошибок, причем критические ошибки уменьшают количество функциональной информации до нуля.
| Functional_information(s, f) = − log2(|Tf|/|S|), | (1) |
где |Tf| — число синонимичных строк, кодирующих заданную функцию f, |S| — число возможных строк, 0 < |Tf| <= |S|. Tf — целевое подпространство пространства S возможных строк: Tf ⊂ S. Tf содержит строки, кодирующие f.
Если для простоты допустить, что рассматриваются только строки одинаковой длины N: |s| = N, то |S| = MN. Тогда:
Functional_information(s, f) = − log2(|Tf|/|S|) = − log2(|Tf|/MN) = − log2(|Tf|M-N) = − log2(M-N|Tf|).

Множество S всех строк содержит целевое подмножество Tf строк, кодирующих функцию f.
Физический смысл дроби в формуле (1) состоит в вероятности случайного попадания в Tf при генерации строки (без осуществления поиска). Отсюда, кстати, видно, что формула для подсчёта функциональной информации может быть преобразована в формулу информационной энтропии.
Определение. Приведённое количество функциональной информации Functional_information0(s,f) представляет собой количество функциональной информации на символ строки:
Functional_information0(s,f) = Functional_information(s,f) / |s|.
Число строк, кодирующих заданную функцию f, |Tf| ≥ 1. Рассмотрим два случая.
Случай 1: |Tf| = 1
Функция максимально консервативна, так как при изменении любого символа в функциональной строке функция разрушается.
- Пример: цифровой замок. Замок не откроется, если хотя бы одна цифра из набранных не соответствуеткодовой комбинации.

Functional_information0(s,f) = − log2(M-N|Tf|) / N = − log2(M-N) / N − log2|Tf| / N = N log2M / N − 0 = log2M.
Случай 2: |Tf| > 1
Чем больше синонимов допускает функция, тем менее она консервативна, потому что в этом случае замены одних символов в функциональной строке на другие не приводят к полной деградации функции.
- Пример: биологическая функция (например, связывание АТФ миозином).

Functional_information0(s,f) = − log2(M-N|Tf|) / N = − log2(M-N) / N − log2|Tf| / N = log2M − log2k / N.
Всё это, в общем и целом, должно быть очевидно и понятно. Но судя по качеству большинства комментариев, здесь возникают какие-то трудности в понимании.
Cм. также: