Вхідні дані
Матриця, 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?