나는 유전자 알고리즘을 사용하여 커뮤니티를 탐지하고 있습니다. 커뮤니티는 궤적 기반의 표현으로 표현되며 각 인덱스 (유전자)와 그 가치는 동일한 커뮤니티에 있습니다. 아래 도면에서 예를 들어 MATLAB에서 찾기 및 정렬을위한 가장 빠른 대안
염색체 인 경우 (B) 공동체는 (d)가 염색체 지역을 추출하는 것, I 반복적 인덱스를 찾을 필요 값은이 작업을 수행하기 위해,이 코드를 작성했습니다 :
while (SumComms)~=nVar
j=find(Sol>0,1,'first');%find the first node which has not placed in any community
Com=[j,Sol(j)];%index of the node and it's value
Comsize=0;
while Comsize<numel(Com)
Comsize=numel(Com);
x=find(ismembc(Sol,sort([Com,Sol(Com)])));%Indexes which Com occure in Sol
Com=unique([Com,x,Sol(x)]);
end
Sol(Com)=0;
i=i+1;
SumComms=SumComms+numel(Com);
Communities{i}=Com;
end
그러나 x=find(ismembc(Sol,sort([Com,Sol(Com)])))
심지어 중간 크기의 네트워크에서 매우 시간이 소모됩니다. 더 빠른 방법을 알고 있습니까?
예, 이미지가 표시됩니다. –
'SumComms','nVar','Sol'가 처음에 무엇인지 샘플을 제공하고 그 변수에 대한 출력을 제공하고 설명하십시오. –
'SumCumms'는 클러스터 노드 수이고'nVar'는 총 수입니다 따라서 종료 조건은 while (SumComms) ~ = nVar입니다. 즉, 모든 노드가 커뮤니티에 루프가있을 때까지 종료됩니다. 'Sol'은 이미지에서 예를 들어 –