Асылтек

Теория информации. Измерение количества информации

30.06.2012, 17:17. Показов 4129. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, есть вот такое вот задание, очень интересное, единственный нюанс, сделать нужно очень срочно, буду сегодня в ночь делать, но если кому станет интересно, милости просим, помощь не помешает. Всем кто хоть как то по участвует, заранее большое спасибо. Ну и собственно, приступим.

Составить программу для вычисления количества информации в заданной строке (файле):
а) при объёмном подходе Iоб;
б) при вероятностном подходе I0 и I1.

Пояснения:
Объёмный подход.
Количество информации равно числу символов в сообщении в байтах (т.к. каждый символ кодируется 8-разрядным двоичным словом):
Iоб = 8* M Бит, где M – число символов в сообщении.
Вероятностный подход.
Среднее количество информации при появлении 1 символа в сообщении вычисляется:
а) без учёта вероятностей появления символов (считаем, что символы появляются с одинаковой вероятностью) по формуле Хартли
H0 = log2 N Бит;
б) с учётом вероятностей появления символов по формуле Шеннона
Бит , где N – число различных символов в сообщении.
Общее количество информации при вероятностном подходе в заданной строке (файле):
по Хартли I0 = M* H0 Бит,
по Шеннону I1 = M* H1 Бит, где M – число символов в строке (файле).

Рекомендации по составлению программы:
1) для хранения числа появлений и вероятности появлений символов можно использовать массивы:
Pascal
1
2
p : array [char] of  byte;
r :  array [char] of  real;
2) очистить экран, организовать ввод строки (открытие файла для чтения);
3) заполнять первый массив можно в цикле:
Pascal
1
2
for i: = 1  to  length(s)  do
     inc (p[s[i]]);
для файла использовать цикл while, в этом же цикле подсчитать количество символов в файле, после завершения цикла закрыть файл;
4) число различных символов в строке (файле) можно подсчитывать в цикле:
Pascal
1
2
3
4
5
6
for c: = chr (32)  to  chr (255)  do
      if p[c]<>0 then
         begin
                  writeln(c,'-',p[c]);
                  inc(n);
         end;
5) вероятность появления символов в строке (файле) можно подсчитывать в цикле:
Pascal
1
2
3
for c: = chr (32)  to  chr (255)  do
      if p[c]<>0 then 
         r[c]: = p[c]/length(s);
6) подсчитать энтропию по формуле Шеннона в цикле:
Pascal
1
2
3
4
5
6
7
h: = 0;
for  c:= chr (32)  to  chr (255)  do
       if p[c]<>0 then 
         begin
                  writeln(c,'-',r[c]:1:2);
                  h:=h + r[c]*ln(1/r[c])/ln(2);
         end;
7) для заданной строки подсчитать и вывести на печать:
  • количество появлений и вероятность появления для каждого символа
  • значение энтропии по формулам Хартли и Шеннона;
  • количество информации в строке при объёмном подходе Iоб;
  • количество информации в строке при вероятностном подходе I0 и I1.
8) для файла подсчитать, перевести в килобайты, вывести на печать (или записать в отдельный файл):
  • количество информации в файле при объёмном подходе Iоб;
  • количество информации в файле при вероятностном подходе I0 и I1;
  • а также сравнить полученные числа с реальным размером файла.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2012, 17:17
Ответы с готовыми решениями:

Измерение количества информации
Теоретическая справка Полное количество символов в алфавите вычисляется по формуле N=2^i. Количество информации, которое несет каждый...

на вычисление количества информации
помогите пожалуйста.нужно составить программу Сколько килобайтов составляет сообщение, содержащее Т битов?

Измерение количества информации и энтропии
Помогите понять решение таких задач: 1) Вычислить энтропию опыта, состоящего в определении цвета наугад вынутого шарика, если в...

1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
01.07.2012, 13:42
Вот так можно вычислить количество информации при объемном подходе:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function GetInfoQuantity(const FileName:string):longint;
var
  Input:file of byte;
  b:byte;
  ByteCount:longint;
begin
  Assign(Input,FileName);
  Reset(Input);
  ByteCount:=0;
  while not eof(Input) do
  begin
    read(Input,b);
    ByteCount:=ByteCount+1;
  end;
  Close(Input);
  GetInfoQuantity:=ByteCount*8;
end;
Добавлено через 17 часов 9 минут
Расчет по формуле Хартли можно сделать например так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function GetInfoQuantityHartley(const FileName:string):extended;
var
  Input:Text;
  Alphabet:string;{строка с алфавитом}
  s:string;{строка для чтения из файла}
  m,n:longint;{для формулы}
  i:integer;{переменная цикла}
  res:extended;{кол-во информации}
begin
  Alphabet:='';
  m:=0;
  n:=0;
  res:=0.0;
  Assign(Input,FileName);
  Reset(Input);
  while not eof(Input) do
  begin
    readln(Input,s);
    for i:=1 to Length(s) do
    begin
      {формируем алфавит из неповторяющихся символов}
      if Pos(s[i],Alphabet)=0 then Alphabet:=Alphabet+s[i];
      n:=n+Length(s);{увеличиваем счетчик кол-ва букв в сообщении}
    end;
  end;
  Close(Input);
  m:=Length(Alphabet);
  if m<>0 then res:=n*Log2(m);
  GetInfoQuantityHartley:=res;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2012, 13:42
Помогаю со студенческими работами здесь

Задача по теории информации. измерение информации
Ребятушки!Помогите, пожалуйста! Сколько информации о X1 содержится в д.с.в. , Z=(X1+1)^2-X2+X3, где  Xi независимы и могут с равной...

Задача по теории информации. Расчет наибольшего количества информации
На радиорелейной линии для передачи символов 0 и 1 используются радиоимпульсы мощностью 1 и 10 Вт соответственно. Для нормальной работы...

Измерение информации
Приветствую всех, помогите решить пару задач по информатике: 1. “Вы выходите на следующей остановке?” – спросили человека в автобусе....

Мгновенная передача информации при возможности влияния на измерение
Если бы была возможность повлиять на результат измерения объекта, находившегося перед этим в квантовой суперпозиции (например спина), то...

Теория информации
. 1.Посчитать во сколько раз сжатие которое дает алгоритм Хаффмена для распределения {0.1,0.2,0.3,0.4} больше энтропии распределения. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
Собеседование по Node.js - вопросы и ответы
Reangularity 20.05.2025
Каждому разработчику рано или поздно приходится сталкиватся с техническими собеседованиями - этим стрессовым испытанием, где решается судьба карьерного роста и зарплатных ожиданий. В этой статье я. . .
Cython и C (СИ) расширения Python для максимальной производительности
py-thonny 20.05.2025
Python невероятно дружелюбен к начинающим и одновременно мощный для профи. Но стоит лишь заикнуться о высокопроизводительных вычислениях — и энтузиазм быстро улетучивается. Да, Питон медлительнее. . .
Безопасное программирование в Java и предотвращение уязвимостей (SQL-инъекции, XSS и др.)
Javaican 19.05.2025
Самые распространёные векторы атак на Java-приложения за последний год выглядят как классический "топ-3 хакерских фаворитов": SQL-инъекции (31%), межсайтовый скриптинг или XSS (28%) и CSRF-атаки. . .
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru