| [valid,row,col]=heuristic(BrBa_store,barbreak,M,N,row,col)
|
function [valid,row,col]=heuristic(BrBa_store,barbreak,M,N,row,col)
valid=0;
BrBa_all=zeros(M*(N-1)+N*(M-1),2);
%finding all the valid possibilities
count=0;
for ii=1:M,
for jj=1:N-1,
count=count+1;
BrBa_all(count,:)=[2*ii-1 2*jj];
end
end
for ii=1:M-1,
for jj=1:N,
count=count+1;
BrBa_all(count,:)=[2*ii 2*jj-1];
end
end
for ii=1:count,
temp=0;
for jj=1:barbreak,
if BrBa_all(ii,:)~=BrBa_store(jj,:), temp=temp+1; end
end
if temp==barbreak,
if (row==BrBa_all(ii,1)-2 || row==BrBa_all(ii,1)+2 && mod(row,2)==0),
row=BrBa_all(ii,1);
col=BrBa_all(ii,2);
valid=1;
break;
end
if (col==BrBa_all(ii,2)-2 || col==BrBa_all(ii,2)+2 && mod(col,2)==0),
row=BrBa_all(ii,1);
col=BrBa_all(ii,2);
valid=1;
break;
end
end
if valid==1, break; end
end
%close choice using minimum Manhattan Distance
if valid==0,
min=10;
for ii=1:count,
if (abs(BrBa_all(ii,1)-row)+abs(BrBa_all(ii,2)-col))<min,
min=abs(BrBa_all(ii,1)-row)+abs(BrBa_all(ii,2)-col);
jj=ii;
end
end
row=BrBa_all(jj,1); col=BrBa_all(jj,2);
valid=1;
end
|
|