function[f]=howard2(P1,P2,R1,R2);

%Funkce howard2 hledá optimální strategii pro řízené homogenní
%markovské řetězce o dvou stavech ze dvou strategií pro dostatečně velký
%počet kroků.
%Na výstupu vrací vektor o dvou složkách z nichž první určuje 
%opt. strategii pokud řetězec startuje z prvního a druhá optimální 
%strategii pro řetězec startující z druhého stavu.
%Matice P1(resp. P2) jsou matice přechodu při použití první (resp. druhé)
%strategie
%Matice R1(resp.R2) jsou matice výnosů při použití první (resp. druhé)
%strategie



q01=P1(1,1)*R1(1,1)+P1(1,2)*R1(1,2);
q11=P1(2,1)*R1(2,1)+P1(2,2)*R1(2,2);
q02=P2(1,1)*R2(1,1)+P2(1,2)*R2(1,2);
q12=P2(2,1)*R2(2,1)+P2(2,2)*R2(2,2);
Q=[q01,q11;q02,q12];
P=[P1(1,1),P1(2,1);P2(1,1),P2(2,1)];
x=1;y=1;xx=1;yy=1;

v0=(Q(1,1)-Q(1,2))/(1-P(x,1)+P(x,2));
g=Q(1,2)+P(x,2)*v0;


z=Q(1,1)+P(1,1)*v0;
zz=Q(2,1)+P(2,1)*v0;
zzz=Q(1,2)+P(1,2)*v0;
zzzz=Q(2,2)+P(2,2)*v0;
if zz>z
    x=2;
else xx=1;
end
if zzzz>zzz
    y=2;
else yy=1;
end

while xx~=x | yy~=y

v0=(Q(x,1)-Q(x,2))/(1-P(x,1)+P(x,2));
g=Q(x,2)+P(x,2)*v0;


z=Q(1,1)+P(1,1)*v0;
zz=Q(2,1)+P(2,1)*v0;
zzz=Q(1,2)+P(1,2)*v0;
zzzz=Q(2,2)+P(2,2)*v0;
if zz>z
    xx=2;
else x=1;
end
if zzzz>zzz
    yy=2;
else y=1;  
end

end
f=[x,y];