search_queen.m

来自「gen_H:利用随机pi矩阵排列而成的LDPC稀疏校验矩阵产生; girthl」· M 代码 · 共 53 行

M
53
字号
function Y=search_queen(n)
%皇后算法,n必须为奇数,不然不能用该算法;(对角线约束太强了,很多时候是无解的,所以不要对角线约束)
%这样约束条件为:同一行同一列只能有一个为1;
M=zeros(n,n);M1=ones(n,n); xi=zeros(1,n);
% flag=true;
% while(flag)
 for i=1:n
       count=sum(M1(i,:));     %count the remaining number of places where 1 can be placed;
       xi=randerr(1,count);
       for index=1:count              % find where 1 is (index) in this row vector(Length=count but not n); 
          if xi(index)==1
            break;
          end
       end
       xi=zeros(1,n); count1=0;
       for l=1:n
           if M1(i,l)==1  
               count1=count1+1;
               if count1==index
                 xi(l)=1; break;
               end
           end
       end
       M(i,:)=xi;
       index=l;
       
      M1(i+1:n,index)=zeros(n-i,1);
%       for k=i+1:n
%           if index+k-i<=n & index+k-i>=1 
%               M1(k,index+k-i)=0;
%           end
%           if index-k+i<=n & index-k+i>=1 
%               M1(k,index-k+i)=0;
%           end
%           
%           if (index+k-i<1 | index+k-i>n) & (index-k+i<1 | index-k+i>n)
%               break;
%           end
%       end
 end
 
%  if count==0
%      disp('sorry , not find a suitable random pi matric this time! ');
%  else
%      if i==n
          Y=M;
%          flag=false;
%          disp('Congratulations! You make it!');
%      end
%  end
%  
% end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?