gpt4 book ai didi

r - 根据不同位数对矩阵的行进行排序

转载 作者:行者123 更新时间:2023-12-02 05:09:10 25 4
gpt4 key购买 nike

我有一个包含二进制向量行的矩阵:

library(gtools)
mat<-permutations(2,6,v=c(0,1),repeats.allowed=TRUE)

我想对矩阵的行进行排序,以便每行与其直接相邻行(上方和下方)仅相差 1 位数字。

这可以做到吗?

最佳答案

有趣的问题!我想到的实现此目的的一种方法是从位数较少的矩阵中递归地构建这样的矩阵。假设我们有一个 n 位矩阵(包含所有 2^n 个唯一的 n 位序列),其中每个邻居最多相差 1。如果我们对该矩阵进行反转(按行),那么结果的每一行最多相差 1,并且中间的两行将相同。我们可以在前半部分前面加一个0,在后半部分前面加一个1。结果包含所有 2^(n+1) 个唯一 (n+1) 位序列,并且所有邻居彼此之间的距离最多为 1。

对于基本情况,我们可以使用 (0 1) 作为 1 位矩阵。

get.mat <- function(size) {
if (size == 1) {
return(matrix(c(0, 1), ncol=1))
} else {
smaller <- get.mat(size-1)
return(rbind(cbind(0, smaller), cbind(1, smaller[nrow(smaller):1,])))
}
}
get.mat(4)
# [1,] 0 0 0 0
# [2,] 0 0 0 1
# [3,] 0 0 1 1
# [4,] 0 0 1 0
# [5,] 0 1 1 0
# [6,] 0 1 1 1
# [7,] 0 1 0 1
# [8,] 0 1 0 0
# [9,] 1 1 0 0
# [10,] 1 1 0 1
# [11,] 1 1 1 1
# [12,] 1 1 1 0
# [13,] 1 0 1 0
# [14,] 1 0 1 1
# [15,] 1 0 0 1
# [16,] 1 0 0 0

构建这些矩阵的方法的一个有趣的副作用是第一行和最后一行彼此之间的距离也为 1。

关于r - 根据不同位数对矩阵的行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com