function [tab1 time]= association(mat)

%FUNZIONE ASSOCIATION: Crea le associazioni di videocamere al primo
%livello. Ai livelli successivi andrà modificata, si utilizzerà infatti la
%funzione levels_association().


%MAT = matrice n x n (simmetrica ad elementi nulli sulla diagonale) dei
%costi c_ij calcolata tramite la funzione costo 
%TAB1= Tabella delle associazioni contenente indici di videocamere e
       %punteggio relativo.

%L'associazione è di tipo binario (telecamere associate a due a due) e può
%avvenire in base a diversi criteri


%PRIMO APPROCCIO: GREEDY ASSIGNMENT
tic
clc;
n=size(mat);
N= fix(n/2);
mat1=mat;
tab1=[]; % Alloco un array di celle dove deposito array binari di associazione con relativo punteggio
checked=[];% Vettore contenente gli indici delle videocamere già associate
for i=1:n
    max.value= 0;
    max.indexes= [0 0];
    
        r=confronto(i, checked);
        if r==0
            for j=1:n
                r1=confronto(j, checked);
                if mat1(i,j)> max.value & r1==0 
                        max.value= mat1(i,j);
                        max.indexes= [i j];
                end
            end
            checked=cat(2,checked,max.indexes);
            
            if max.value ~=0
                col{1,1}= max.indexes;
                col{2,1}= max.value;
                col{3,1}= max.indexes;
                tab1= cat(2,tab1, col);
            end
        end
    
end

if mod(n,2)==1
   for s=1:n
      if confronto(s,checked)==0
         c{1,1}=s;
         c{2,1}=0;
         c{3,1}=s;
         tab1=cat(2,tab1,c); 
      end
   end 
end
toc
time=toc;
