Вхідні дані
Матриця, 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-елементний масив двокомпонентних векторів). Хоча для кожного з 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
?