%% alpha_cap

%inizializzazione
alpha_cap = zeros(campioni,numnodi);
temp = pigreco .* C(row(1),:);
alpha_cap(1,:) = temp / sum(temp);
fatt_norm = zeros(campioni,1);  %serve per i beta_cap
fatt_norm(1) = sum(temp);

%ciclo
for t=1:(campioni-1)
    for j=1:numnodi
        alpha_cap(t+1,j) = alpha_cap(t,:) * P(:,j) * C(row(t+1),j);
    end
    fatt_norm(t+1) =  sum(alpha_cap(t+1,:));
    alpha_cap(t+1,:) = alpha_cap(t+1,:) / fatt_norm(t+1);
end

prob_seq_oss_norm = sum(alpha_cap(campioni,:));


%% beta_cap

%inizializzazione
beta_cap = zeros(campioni,numnodi);
beta_cap(campioni,:) = ones(1,numnodi) / fatt_norm(campioni);

%ciclo
for t=(campioni-1):-1:1
    for i=1:numnodi
        beta_cap(t,i) = sum(P(i,:) .* C(row(t+1),:) .* beta_cap(t+1,:));
    end
    beta_cap(t,:) = beta_cap(t,:) / fatt_norm(t);
end


%% csi_cap

csi_cap = zeros(numnodi,numnodi,campioni-1);

for t=1:(campioni-1)
    for i=1:numnodi
        for j=1:numnodi
            csi_cap(i,j,t) = alpha_cap(t,i) * P(i,j) * C(row(t+1),j) * beta_cap(t+1,j) /  prob_seq_oss_norm;
        end
    end
end


%% gamma_cap

gamma_cap = zeros(campioni-1,numnodi);

for t=1:(campioni-1)
    for i=1:numnodi
        gamma_cap(t,i) = sum(csi_cap(i,:,t));
    end
end


%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%

%% pigreco_bar

pigreco_bar = gamma_cap(1,:);


%% P_bar

%P_bar = zeros(numnodi,numnodi);

for i=1:numnodi
    for j=1:numnodi
        P_bar(i,j) = sum(csi_cap(i,j,:)) / sum(gamma_cap(:,i));
    end
end


%% C_bar


for k=1:numoss
    for j=1:numnodi
        temp = 0;
        for t=1:campioni-1
            if row(t) == k
                temp = temp + gamma_cap(t,j);
            end
        end
        C_bar(k,j) = temp / sum(gamma_cap(:,j));
    end
end










