Imports
Complete TSP instance and certificate parsers
namespace CLRS.Chapter34Canonical finite encoding of one complete-matrix TSP record.
def encodeTSPData (data : TSPData) : List TSPSym :=
.instanceMark ::
(encodeTSPFields (data.vertexCount :: data.budget :: data.weights) ++
[.recordEnd])Decode one complete TSP instance word.
def decodeTSPData : List TSPSym → Option TSPData
| .instanceMark :: input =>
match decodeTSPFields input with
| some (vertexCount :: budget :: weights) =>
some { vertexCount, budget, weights }
| _ => none
| _ => noneCanonical certificate: an ordered list of compact vertex indices.
def encodeTSPCertificate (vertices : List Nat) : List TSPSym :=
.certificateMark :: (encodeTSPFields vertices ++ [.recordEnd])Decode one complete ordered-tour certificate.
def decodeTSPCertificate : List TSPSym → Option (List Nat)
| .certificateMark :: input => decodeTSPFields input
| _ => noneend CLRS.Chapter34