Код:
function [QQQ, PPP, V, k, Y, Table] = BraunRobinson(C,epsilon )
k=2;
n = 20000000;
aSize = size(C,1);
bSize = size(C,2);
AlfaGeneral = zeros(1,n);
BetaGeneral = zeros(1,n);
StrAN = zeros(1,n);
StrBN = zeros(1,n);
StrA = zeros(1,aSize);
StrB = zeros(1,bSize);
i = zeros(1,n);
j = zeros(1,n);
tech2 = sum(C,2);
tech3 = sum(C,1);
[tech2, i(1)] = max(tech2);
[tech3, j(1)] = max(tech3);
StrAN(1,1) = i(1);
StrBN(1,1) = j(1);
AlfaGeneral(1) = min(C(i(1),:));
BetaGeneral(1) = max(C(:,j(1)));
AlfaMax = AlfaGeneral(1);
AlfaInd = 1;
BetaMin = BetaGeneral(1);
BetaInd = 1;
StrA(i(1)) = StrA(i(1)) + 1;
StrB(j(1)) = StrB(j(1)) + 1;
Parr = zeros(n,aSize);
Qarr = zeros(n,bSize);
P = zeros(1,aSize);
Q = zeros(1,bSize);
P = StrA./sum(StrA);
Q = StrB./sum(StrB);
Parr(1,:) = P(1,:);
Qarr(1,:) = Q(1,:);
for k=2:n
[Y, i(k)] = max(C*(Q'));
[Y, j(k)] = min(P*C);
StrA(1,i(k)) = StrA(1,i(k)) + 1;
StrB(1,j(k)) = StrB(1,j(k)) + 1;
StrAN(1,k) = i(k);
StrBN(1,k) = j(k);
P = StrA./sum(StrA);
Q = StrB./sum(StrB);
AlfaGeneral(k) = min(P*C);
BetaGeneral(k) = max(C*(Q'));
if (AlfaGeneral(k)>AlfaMax)
AlfaMax = AlfaGeneral(k);
AlfaInd = k;
end
if (BetaGeneral(k)<BetaMin)
BetaMin = BetaGeneral(k);
BetaInd = k;
end
Parr(k,:) = P(1,:);
Qarr(k,:) = Q(1,:);
if (abs(BetaMin - AlfaMax)<2*epsilon)
break;
end
Parr(k,:) = P(1,:);
Qarr(k,:) = Q(1,:);
end
PPP = Parr(AlfaInd,:);
QQQ = Qarr(BetaInd,:);
V = (AlfaMax + BetaMin)/2;
Table = [(1:n)' (StrAN(1,:))' (StrBN(1,:))' Parr(:,:) Qarr(:,:) (AlfaGeneral(1,:))'
(BetaGeneral(1,:))'];
end
Помогите, кто хорошо разбирается в матлабе