Skip to content
Browse chapters
Imports

HAM-CYCLE to TSP machine: both orientations of normalized weights

noncomputable sectionnamespace CLRS.Chapter34.Turing.TSPReductionopen _root_.Turingdef symmetricWeightFields (I : CliqueInstance) : List TSPSym := encodeTSPFields ((normalizedPairWeights I).flatMap fun weight => [weight, weight]) theorem symmetricWeightFields_membershipBits (I : CliqueInstance) : SymmetricWeightFields.stream (VertexCover.ComplementMachine.NonedgeFilter.membershipBits I) = symmetricWeightFields I := by rw [SymmetricWeightFields.stream_eq_encoded_duplicate_weights, membershipBits_map_answerWeight] rflnoncomputable def symmetricWeightFieldsComputableInPolyTime : TM2ComputableInPolyTime encodeCliqueInstance id symmetricWeightFields := by let composed := TM2Comp.TM2ComputableInPolyTime.comp_scratch VertexCover.ComplementMachine.NonedgeFilter.membershipBitsComputableInPolyTime SymmetricWeightFields.computableInPolyTime let machine := Classical.choice composed exact { tm := machine.tm inputAlphabet := machine.inputAlphabet outputAlphabet := machine.outputAlphabet time := machine.time outputsFun := fun I => by have output := machine.outputsFun I simpa [Function.comp_def, symmetricWeightFields_membershipBits] using output }end CLRS.Chapter34.Turing.TSPReduction