IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Подсчет энтропии источника информации., С\С++
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


(из лекции)
Энтропия это величина, вычисляемая по формуле:
Прикрепленное изображение

где P(xi) - вероятность появления символа xi в сообщении,
ni - число символов в сообщении объемом n.

Вопрос первый.
Я верно все записал, т.е. энтропия так считается ? Второй вопрос, пишу программу для подсчета :

#include <stdio.h>
#include <string.h>
#include <math.h>

double get_count (char x[], char c){
int i;
double res=0;
for (i=0; i<=strlen(x); i++) if (x[i]==c) res+=1;
return res;
}

double prob (char x[], char c){
return get_count(x,c) / strlen(x);
}


double coeff_entropy (char x[]) {
int i;
double res=0;
for (i=0; i<=strlen(x); i++) {
res+= prob(x,x[i]) * log2(prob(x,x[i]));
}
res=res*(-1);
return res;
}

int main () {
char s[80];
printf("Entropy\n Enter text...\n");
scanf("%s",&s);
printf("Entropy [s] = %f", coeff_entropy(s));
return 0;
}

выдается какой-то бред.
Для сообщения
1111111111111211111111
выдается энтропия 1.750737
а для 1234567890 -
3.654121
мне кажется результат не верен.
т.к. вторая строка гораздо больше уменьашет степень неопределенности...
где я ошибся ?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Олег, вопрос на засыпку: Что такое энтропия источника информации? Нас учили, что
Цитата
Чем больше энтропия источника, тем больше информации получают от него.
Откуда ты получишь больше информации, из первого сообщения, или из второго?

P.S. Кстати, у меня результаты на TC++ совершенно другие:
Entropy
Enter text...
1111111111111211111111
Entropy [s] = 4.031222
Entropy
Enter text...
1234567890
Entropy [s] = 8.413924

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 10.09.2025 18:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name