Есть ли быстрый способ вычисления энтропии shannon буфера из 16-разрядных чисел без вычисления логарифма log2 каждого числа частот? Вычисления журнала довольно медленные.Быстрый расчет энтропии Shannon
0
A
ответ
1
Хорошо, так что ответ заключается в том, что нет возможности сделать это без вычисления функции журнала, но если вы предварительно вычислили журналы, это не так уж плохо.
Размер моего буфера 4096 байт, поэтому между каждыми возможными 2-байтовыми значениями существует 1..2048. Поэтому необходимо предварительно подсчитать журналы 1/2048 .. 2048/2048. Тогда вычисление каждого журнала - это просто поиск массива.
Быстрые приблизительные журналы могут стоить внимания? https://code.google.com/p/fastapprox/ – NPE
Или, может быть, векторизованные журналы? https://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/GUID-84D9D164-743E-496D-A1E4-4FB6F7F89A06.htm – NPE
Учитывая максимум 65535 символов, это 65535 логарифмов, подлежащих подсчету в худшем случае. На моем 5-летнем компьютере это занимает ... (работает тест) ... 1,8 миллисекунды. Проблема в том, что ...? – Damon