View as a directed graph with nonnegative integer edge weights. For an edge of weight
build a binary path-counting gadget with one entrance and one exit and exactly entrance-to-exit routes. Starting with one route, a constant-size diamond doubles the number of routes; processing the bits from most significant to least significant repeatedly doubles and, when , adds one bypass route. The gadget has vertices and only zero-one edges.
Add forced internal edges and self-loops so that a cycle cover not using the simulated edge extends uniquely across the gadget, whereas a cycle cover using it has exactly one extension for each entrance-to-exit route. Replacing every weighted edge therefore multiplies each original cycle cover by precisely the product of its selected edge weights. Summing over covers gives
There are entries and each gadget has size, so is constructed in polynomial time.

Articles by others on the same topic (0)

There are currently no matching articles.