Complete SUBSET-SUM instance and certificate parsers
namespace CLRS.Chapter34Canonical finite encoding of a target followed by indexed item values.
def encodeSubsetSumData (data : SubsetSumData) : List SubsetSumSym :=
.instanceMark ::
(encodeTSPFields (data.target :: data.values) ++ [.recordEnd])Decode one complete SUBSET-SUM instance word.
def decodeSubsetSumData : List SubsetSumSym → Option SubsetSumData
| .instanceMark :: input =>
match decodeTSPFields input with
| some (target :: values) => some { target, values }
| _ => none
| _ => noneCanonical certificate: a duplicate-free list of compact item indices.
def encodeSubsetSumCertificate (indices : List Nat) : List SubsetSumSym :=
encodeTSPCertificate indicesDecode one complete selected-index certificate.
def decodeSubsetSumCertificate : List SubsetSumSym → Option (List Nat) :=
decodeTSPCertificateend CLRS.Chapter34