/IlośćInformacji: Różnice pomiędzy wersjami

Z Brain-wiki
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 1: Linia 1:
= [[TI/WTBD]]/IlośćInformacji =
+
= [[TI:WTBD]]/IlośćInformacji =
  
 
Jednostką ilości danych jest ''bit'' i jego wielokrotności. Jest to też jednostka informacji (w [[TI:WTBD/InformacjaShannona|definicji Shannona]]) -- ale N bitów danych niekoniecznie zawiera N bitów informacji.
 
Jednostką ilości danych jest ''bit'' i jego wielokrotności. Jest to też jednostka informacji (w [[TI:WTBD/InformacjaShannona|definicji Shannona]]) -- ale N bitów danych niekoniecznie zawiera N bitów informacji.
Linia 10: Linia 10:
  
 
Z definicji Shanonna obliczylibyśmy ilość informacji ''w bitach'' przypadającą na cyfrę dziesiętną jako
 
Z definicji Shanonna obliczylibyśmy ilość informacji ''w bitach'' przypadającą na cyfrę dziesiętną jako
<source lang="py">
+
<source lang="python">
 
import math
 
import math
 
math.log(10, 2)
 
math.log(10, 2)

Aktualna wersja na dzień 14:32, 23 maj 2015

TI:WTBD/IlośćInformacji

Jednostką ilości danych jest bit i jego wielokrotności. Jest to też jednostka informacji (w definicji Shannona) -- ale N bitów danych niekoniecznie zawiera N bitów informacji.

Przykład: liczby całkowite (dla uproszczenia mówmy tylko o nieujemnych) mogą być zapisywane w reprezentacji binarnej, lub jako tekstowa reprezentacja zapisu dziesiętnego (i na szereg bardziej wymyślnych sposobów). Dla ustalenia uwagi mówmy o liczbach unsigned long (0 <= x < 2**32). Intuicyjnie rozumiemy, że taka liczba zawiera w sobie 32 bity informacji. Sformalizowanie tego stwierdzenia za pomocą definicji Shannona prowadzi do tego samego wniosku.

Zapisanie tej samej liczby cyframi dziesiętnymi wymaga od 1 do 10 cyfr (2**32 = 4294967296). Załóżmy jej zapis w polu o stałej szerokości dopełnionym w razie potrzeby zerami od lewej. Jeśli cyfry zapisu będą reprezentowane kodami ASCII, to 10 cyfr = 10 bajtów = 80 bitów. Sporo więcej niż 32. Dokładnie, to korzystając z takiej reprezentacji zużywa się 2,5 bita danych na każdy bit informacji. Lub odwrotnie, każdy bit danych zawiera 0,4 bita informacji.

Ta ,,nadmiarowość" (redundancja) reprezentacji przez cyfry dziesiętne ewidentnie związana jest z tym, że taka reprezentacja danych (liczb naturalnych) zakłada, że nie każdy możliwy zapis (ciąg bitów) jest ,,legalny" z punktu widzenia tej reprezentacji. Na tym właśnie polega redundancja. Daje ona też pewne korzyści: np. w zapisie pozbawionym redundancji nie ma żadnego sposobu sprawdzenia, czy odebrane lub odczytane z nośnika dane nie zawierają przekłamań. Redundancja to umożliwia -- co najmniej nie każde przekłamanie pozostanie niewykryte. Oczywiście można (i tak się robi) postać redundancji zapisu specjalnie zaprojektować pod tym kontem (sumy kontrolne, ...).

Z definicji Shanonna obliczylibyśmy ilość informacji w bitach przypadającą na cyfrę dziesiętną jako

import math
math.log(10, 2)
-> 3.3219280948873626

a zatem, skoro w ASCII zapis jednej cyfry zajmuje 8 bitów, mamy w zaokrągleniu 0.415 bitów informacji na bit danych (łatwo wytłumaczyć, dlaczego jest to nieco więcej niż dało nam poprzednie rozumowanie). Redundancja tego zapisu, rozumiana jako odwrotność tak rozumianej pojemności informacyjnej, wynosi zatem ok. 2.41

Zadanie: ile wynosi pojemność informacyjna zapisu liczb naturalnych za pomocą reprezentowanych w ASCII cyfr szesnastkowych?