0
나는 Arc List로 그래프를 구현하려고하는데,이 구현이 효과가 있지만 끔찍한 것은 무엇이든 그리워서 그렇게 느리게 만드는거야? 시간은 각 노드에서 /로가는 호를 찾는 평균으로 측정되었습니다.Digraph arc list implementation
struct Arc
{
int start;
int end;
Arc(int start,int end)
: start(start),
end(end)
{ }
};
typedef vector<Arc> ArcList;
class AListGraph
{
public:
AListGraph(IMatrix* in); //Fills the data from Incidence Matrix
bool IsE(int va,int vb); //checks if arc exists a->b
int CountEdges(); //counts all the arcs
int CountNext(int v); //counts all outgoing arcs from v
int CountPrev(int v); //counts all arcs incoming to v
private:
ArcList L;
int VCount;
};
//Cut out constructor for clarity
int AListGraph::CountEdges()
{
return L.size();
}
int AListGraph::CountNext(int v)
{
int result=0;
for(ArcList::iterator it =L.begin();it!=L.end();it++)
{
if(it->end==v)result++;
}
return result;
}
int AListGraph::CountPrev(int v)
{
int result=0;
for(ArcList::iterator it =L.begin();it!=L.end();it++)
{
if(it->start==v)result++;
}
return result;
}
예, 숙제 목표는 발생률 매트릭스, 인접 목록 및 아크 목록에서이 세 가지 작업의 시간을 비교하는 것입니다. 글쎄, 나는 더 느리게 실행되기를 기대했지만, 시간 결과가 너무 다르므로 나는 그 것이 맞는지 확신 할 수 없었다. – ArturU