aboutsummaryrefslogtreecommitdiff
path: root/beliefs/utils/math_helper.py
blob: 12325e11db1d31233b1134348a47d154dbc2e43e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""Math utils"""


def is_kronecker_delta(vector):
    """
    Check if vector is a kronecker delta.

    Args:
        vector: iterable of numbers
    Returns:
        bool, True if vector is a kronecker delta vector, False otherwise.
        In belief propagation, specific evidence (variable is directly observed)
        is a kronecker delta vector, but virtual evidence is not.
    """
    count = 0
    for x in vector:
        if x == 1:
            count += 1
        elif x != 0:
            return False

    if count == 1:
        return True
    else:
        return False