function [base_a,A_a,M_a,inib_a,tamb_a,alpha_a] = ...
    escolhe_sub_base_hier2(parametros,base,A,M,min_nivel,passov,max_nivel,...
    inib,tamb,alpha,e)
%!!! Verificar se funciona mesmo eliminando todos os elementos da base
%usa a heuristica ApAd2
fprintf(2,'--- inicio de escolha da subbase adaptativa -----------------------\n');
tol = parametros.tol;
if parametros.heu_adap == 1
    ix_a = escolhe_sub_base_ApAd1(A,alpha,e,tol);
elseif parametros.heu_adap == 2
    ix_a = escolhe_sub_base_ApAd2(A,alpha,e,tol);
elseif parametros.heu_adap == 3
    ix_a = escolhe_sub_base_ApAd3(A,alpha,e,tol);
else assert(false)
end

if size(ix_a,2) == size(base.elementos,2)
    base_a.uniforme = base.uniforme;
else
    base_a.uniforme = false;
end
base_a.elementos = base.elementos(ix_a);

A_a = A(:,ix_a);
M_a = M(ix_a,ix_a);
alpha_a = alpha(ix_a);
%acerta inib, tamb
jprox_a = 1; %primeira coluno do proximo nivel na matriz A_a
for iv = min_nivel:passov:max_nivel
    fprintf(2,'nivel %d original %d(%d)',iv,inib(iv),tamb(iv)); 
    inib_a(iv) = jprox_a;
    %recalcula tamb(i,iv) 
    nn = 0;
    for k = 1:size(ix_a,2)
        if (ix_a(k) >= inib(iv)) && (ix_a(k) < inib(iv) + tamb(iv))
            nn = nn + 1;
        end
    end
    tamb_a(iv) = nn;
    jprox_a = jprox_a + nn;
    fprintf(2,' reduzido para %d(%d)\n',inib_a(iv),tamb_a(iv));
end

fprintf(2,'--- fim da escolha da subbase adaptativa ------------------\n');





