вход
Матрица Mпредставлена в виде двух разделенных пробелами целых чисел. Каждая строка будет иметь такое же количество целых чисел , и каждое целое число будет либо -1 , либо 1. Число целых чисел в каждой строке будет не более 20. MПоэтому будут 2по nкоторой nэто количество целых чисел на каждой из двух линий.
Ваш код должен быть законченной программой. и примите входные данные в стандартном файле или из файла (это ваш выбор). Вы можете принять ввод из стандартного входа, из файла или просто в качестве параметра. Однако, если вы сделаете последнее, приведите явный пример того, как должен работать ваш код, и помните, что это должна быть законченная программа и как матрица Mбудет представлена во входных данных. Другими словами, вам, скорее всего, придется делать какой-то анализ.
Выход
Двоичная энтропия Шеннона распределения , M*xгде элементы xравномерно и независимо друг от друга выбраны из {-1,1}. xявляется n-мерным вектором столбца.
Энтропия дискретного распределения вероятностей
- sum p_i log_2(p_i)
В этом случае p_iвероятность является iединственно возможной M*x.
Пример и полезные советы
В качестве рабочего примера, пусть матрица Mбудет
-1 1
-1 -1
Теперь посмотрим на все 2^2возможные векторы x. Для каждого мы вычисляем M*xи помещаем все результаты в массив (4-элементный массив 2-компонентных векторов). Хотя для каждого из 4 векторов вероятность его появления равна 1/2^2 = 1/4, нас интересует только количество раз, когда каждый уникальный результирующий вектор M*xвстречается, и поэтому мы суммируем отдельные вероятности конфигураций, ведущих к одним и тем же уникальным векторам. Другими словами, возможные уникальные M*xвекторы описывают результаты распределения, которое мы исследуем, и мы должны определить вероятность каждого из этих результатов (который, по построению, всегда будет целым кратным 1/2^2или 1/2^nвообще) для вычислить энтропию.
В общем nслучае, в зависимости от Mвозможных результатов, M*xможет варьироваться от «все разные» (в этом случае у нас есть nзначения iв p_i, и каждый p_iравен 1/2^n), до «все одинаковые» (в этом случае есть один возможный результат и p_1 = 1).
В частности, для приведенной выше 2x2матрицы Mмы можем найти, умножив ее на четыре возможные конфигурации ( [+-1; +-1]), каждый результирующий вектор отличается. Так что в данном случае имеется четыре результата, и , следовательно p_1 = p_2 = p_3 = p_4 = 1/2^2 = 1/4. Напоминая, log_2(1/4) = -2что имеем:
- sum p_i log_2(p_i) = -(4*(-2)/4) = 2
Таким образом, окончательный результат для этой матрицы равен 2.
Контрольные примеры
Входные данные:
-1 -1
-1 -1
Выход:
1.5
Входные данные:
-1 -1 -1 -1
-1 -1 -1 -1
Выход:
2.03063906223
Входные данные:
-1 -1 -1 1
1 -1 -1 -1
Выход:
3
x? 2. Как сделать вопрос автономным, как определяется бинарная энтропия ШеннонаMx?