% prvo se izvede npr.
%
% A=genRandClusters2D(5,60,0.03,'R');
% plot(A(:,1),A(:,2),'*')
%
% zadrzati plot
hold on
% izracunavanje Laplaceove matrice (rekurzivna funkcija)
  function [B1,B2]=bipartite(A)
  n=max(size(A));

% gornji trokut
  for i=1:n-1;
     for j=i+1:n; 
        L(i,j)=1/norm(A(i,:)-A(j,:))^2;
     end
  end
  L(n,n)=0;
% simetrija
  L=L+L';
% oduzeti dijagonalu i promijeniti predznak 
  L=diag(sum(L))-L;

% izracunamo sve svojstvene vrijednosti
  [u,e]=eig(L);
% vektor koji nam treba je u(:,2) (provjeriti sa diag(e))
  x=u(:,2);
% utvrdimo indekse
  tpos=(x>0);
  tneg=(x<=0);
  [tt,indpos]=sort(-tpos);
  [tt,indneg]=sort(-tneg);
  ipos=indpos(1:sum(tpos));
  ineg=indneg(1:sum(tneg));

  A1=A(ipos,:);
  A2=A(ineg,:);

  plot(A1(:,1),A1(:,2),'b*');
  plot(A2(:,1),A2(:,2),'r*');

  'dio 1'
  dalje=input(' dalje (0/1) ');
  if dalje==1,
    [C1,C2]=bipartite(A1);
  end

  'dio 2'
  dalje=input(' dalje (0/1) ');
  if dalje==1
    [D1,D2]=bipartite(A2);
  end

end

% poziv

[B1,B2]=bipartite(A)
