Spaces:
Sleeping
Sleeping
| import numpy as np | |
| def build_att(A, R): | |
| """Builds a dictionary listing attackers for each argument.""" | |
| att_list = {a: [] for a in A} | |
| for att, target in R: | |
| if target in att_list: | |
| att_list[target].append(att) | |
| else: | |
| att_list[target] = [att] | |
| return att_list | |
| def h_categorizer(A, R, w, max_iter, epsi=1e-4): | |
| """Computes the h-Categorizer gradual semantics for a given framework (A, R) and weights.""" | |
| attackers = build_att(A, R) | |
| hc = {a: w[a] for a in A} | |
| for _ in range(max_iter): | |
| new_hc = {} | |
| for a in A: | |
| sum_attackers = sum(hc[b] for b in attackers[a]) | |
| new_hc[a] = w[a] / (1 + sum_attackers) | |
| diff = max(abs(new_hc[a] - hc[a]) for a in A) | |
| hc = new_hc | |
| if diff < epsi: | |
| break | |
| return hc | |