在 rrb-vector 上实现高效逆序是否可能,结果为逆序的 rrb-vector?这在“旅行推销员问题”的 2-opt 邻域局部搜索场景中将非常有用。完整操作如下。
给定:a = (link: a_0, a_1, ..., a_{n-1}, a_n, a_{n+1}, ..., a_{n+k-2}, a_{n+k-1}, a_{n+k}, ..., a_{n+k+m-1})
目标: (link: a_0, a_1, ..., a_{n-1}, a_{n+k-1}, a_{n+k-2}, ..., a_{n+1}, a_n, a_{n+k}, ..., a_{n+k+m-1})
描述操作的可能 Clojure 实现
(let [x (subvec a 0 n), y (subvec a n (+ n k)), z (subvec a (+ n k))] (catvec x, (reverse-vec y), z))