我有以下搜索我的图表以查看是否可以从第一个顶点到达顶点,所有内容都应该连接到该顶点。我这样做是为了确保没有断开的部件。
不幸的是,它非常慢。
有什么我可以做或存储来优化它的吗?
我想了解图表和生成的城市,所以我没有使用真正的图表库。
private void removeDisconnectedSquares()
{
for(int i = 0; i < getNumXNodes(); ++i)
{
for(int j = 0; j < getNumYNodes(); ++j)
{
//removeDisconnectedSquare(i, j);
visitedNodes.clear();
if(!isNodeReachableFrom(getNodeAt(i, j), getNodeAt(0, 0)))
{
removeVertex(i, j);
}
}
}
}
private boolean isNodeReachableFrom(GraphNode node, GraphNode target)
{
if(node == null)
{
return false;
}
if(visitedNodes.contains(node))
{
return false;
}
else
{
visitedNodes.add(node);
}
if(node == target)
{
return true;
}
if(node.contains(target))
{
return true;
}
for(int i = 0; i < node.getSize(); ++i)
{
if(isNodeReachableFrom(node.at(i), target))
{
return true;
}
}
return false;
}