R- ранг бинарной матрицы - PullRequest
0 голосов
/ 04 октября 2018

Я хочу, чтобы R вычислял ранг двоичной матрицы 32x32.Единственными допустимыми операциями с строками являются перестановки и xor-xing двух строк.

Например, для матрицы

(1 1 0)
(0 1 1)
(1 0 1)

ранг равен 2, поскольку:

(1,1,0)xor(0,1,1)=(1,0,1)

Мой код

binaryrank<-function(m){
    i<-1
    r<-32
    for(j in 1:32){
        l<-match(1,m[i:32,j])
        if(is.na(l)){
            r<-r-1
        }
        else{
            swap(m[i+l-1,],m[i,])
            k<-i+1
            while(k<=32){
                if(m[k,j]==1){
                    m[k,]<-mod(m[k,]+m[i,],2)
                }
                k<-k+1
            }
            i<-i+1
        }
    }
    return(r)
}

Код работает хорошо, но для моих целей он немного медленный.Как я могу сделать это более эффективным?

...