-
Notifications
You must be signed in to change notification settings - Fork 66
Open
Description
From Henry Makhanov, with comments by me inline as quote blocks:
Count Degenerate Logical Operators Per Syndrome Pair (Implement count_logical_paths)
For a given syndrome pair (two defects), count the number of equivalent paths (logical or stabilizer-equivalent) between them.
function count_logical_paths(code::AbstractECC, defect_i::Int, defect_j::Int)
# Enumerate all minimum-weight error chains between i and j,
# count how many are logically equivalent (modulo stabilizers)
return Int
end
Modify MWPM Edge Weights Using Degeneracy Heuristics (Implement degeneracy_weighted_graph)
Adjust decoder edge weights using:
Standard: wᵢⱼ = -log(pᵢⱼ)
Degeneracy-aware: wᵢⱼ = -log(pᵢⱼ * Dᵢⱼ)
where Dᵢⱼ is the degeneracy factor (e.g., number of equivalent minimal chains between i and j)
function degeneracy_weighted_graph(code::AbstractECC, noise::Dict, degeneracy_map::Dict)
# Build weighted graph with weights adjusted using degeneracy
return WeightedGraph
end
Modular Compatibility with Existing Decoders and with Weight adjustments (Implement total_matching_weights)
Make sure that these features work with all existing decoders defined in ecc/codes.
I think crucial for my vision is to make points 4 and 5 so that the weights would be defined for decoders like MWPM as:
w_ij total=−log(p_ij⋅D_ij)=−log(p_ij)−log(D_ij)
function total_matching_weights(
noise_map::Dict{Int, PauliNoise},
code::AbstractECC,
degeneracy_map::Dict{Tuple{Int,Int}, Int}
)
# p_{ij} from noise_map (from point 3)
# D_{ij} from degeneracy_map (from point 4)
# Return edge list for PyMatching
end
Fe-r-oz
Metadata
Metadata
Assignees
Labels
No labels