Note
Go to the end to download the full example code.
GHRR usage example: diagonality/m sweeps and non-commutativity trendsΒΆ
- Run (optional):
python -m examples.ghrr_diagonality_sweep
9 import numpy as np
10
11 from holovec.backends import get_backend
12 from holovec.models.ghrr import GHRRModel
13
14
15 def noncommutativity_score(model: GHRRModel, trials=10, seed=0) -> float:
16 vals = []
17 for i in range(trials):
18 a = model.random(seed=seed + 2 * i)
19 b = model.random(seed=seed + 2 * i + 1)
20 ab = model.bind(a, b)
21 ba = model.bind(b, a)
22 s = model.similarity(ab, ba)
23 vals.append(1.0 - float(s))
24 return float(np.mean(vals))
25
26
27 def main():
28 backend = get_backend('numpy')
29 D = 256
30 ms = [1, 2, 3]
31 alphas = [0.0, 0.25, 0.5, 0.75, 1.0] # diagonality
32
33 print("Non-commutativity (1 - sim(ab,ba)) across m and diagonality:")
34 table = []
35 for m in ms:
36 row = []
37 for a in alphas:
38 model = GHRRModel(dimension=D, matrix_size=m, backend=backend, seed=0, diagonality=a)
39 score = noncommutativity_score(model, trials=8, seed=10)
40 row.append(score)
41 table.append(row)
42
43 header = "alpha:" + " ".join(f"{a:6.2f}" for a in alphas)
44 print(header)
45 for m, row in zip(ms, table):
46 print(f"m={m} :" + " ".join(f"{v:6.3f}" for v in row))
47
48 # Optional plotting
49 try:
50 import matplotlib.pyplot as plt
51
52 for m, row in zip(ms, table):
53 plt.plot(alphas, row, marker='o', label=f"m={m}")
54 plt.xlabel("Diagonality")
55 plt.ylabel("Non-commutativity (1 - sim)")
56 plt.title("GHRR: Non-commutativity vs Diagonality")
57 plt.legend()
58 plt.show()
59 except Exception:
60 pass
61
62
63 if __name__ == "__main__":
64 main()