function [P0,M,B,t]=absorb(P)
% Funkce pro vypocet zakladnich charakteristik absorpcniho  retezce
% Autor: Hana Tužilová
% function [P0,M,B,t]=absorb(P)
% vstupni parametr: matice prechodu P
% vystupni parametry: P0 ... matice prechodu v kanonickem tvaru
%                     M ... fundamentalni matice
%                     B ... matice prechodu do absorpcnich stavu
%                     t ... vektor strednich hodnot poctu kroku pred
%                     absorpci

D=diag(P); % identifikace absorpcnich stavu
j=find(D==1);
n=length(P);
T=1:n;
T(j)=[];
T=[j',T];

A=zeros(n); % sestaveni kanonickeho tvaru matice P
T=(0:n:(n^2-n))+T;
A(T)=1;
P0=A'*P*A;

m=length(j); % vypocet ostatnich charakteristik
Q=P0((m+1):n,(m+1):n);
M=eye(n-m)/(eye(n-m)-Q);
R=P0((m+1):n,1:m);
B=M*R;
t=M*ones(n-m,1);