Exemplo n.º 1
0
void Mesh::sortEdges(void)
{
	vector<Edge*> edgeIndex (edges->begin(),edges->end());


	int i,j;
	for(i=0;i<edgeIndex.size();i++)
	{
		for(j=i+1;j<edgeIndex.size();j++)
		{
			if(edgeIndex[i]->equal(edgeIndex[j]))
			{
				//edgeIndex[j]=edgeIndex[edgeIndex.size()-1];
				edgeIndex.at(j)=edgeIndex.back();
				edgeIndex.pop_back();
				//size--;
				break;
			}
		}
		//sortedEdges->push_back(edgeIndex[i]);
	}

    edges->assign(edgeIndex.begin(),edgeIndex.end());

    list<Edge*>::iterator ie;

    for (ie = edges->begin();ie!=edges->end();ie++){
    	(*ie)->vertices[0]->addEdge((*ie));
    	(*ie)->vertices[1]->addEdge((*ie));
    }

}
Exemplo n.º 2
0
void Mesh::sortEdges(list<Edge*>* edges)
{
	vector<Edge*> edgeIndex (edges->begin(),edges->end());


	int i,j;
	for(i=0;i<edgeIndex.size();i++)
	{
		for(j=i+1;j<edgeIndex.size();j++)
		{
			if(edgeIndex[i]->equal(edgeIndex[j]))
			{
				//edgeIndex[j]=edgeIndex[edgeIndex.size()-1];
				edgeIndex.at(j)=edgeIndex.back();
				edgeIndex.pop_back();
				//size--;
				break;
			}
		}
		//sortedEdges->push_back(edgeIndex[i]);
	}

    edges->assign(edgeIndex.begin(),edgeIndex.end());

}
void mitk::ConnectomicsStatisticsCalculator::CalculateBetweennessCentrality()
{
  // std::map used for convenient initialization
  EdgeIndexStdMapType stdEdgeIndex;
  // associative property map needed for iterator property map-wrapper
  EdgeIndexMapType edgeIndex(stdEdgeIndex);

  EdgeIteratorType iterator, end;

  // sets iterator to start end end to end
  boost::tie(iterator, end) = boost::edges( *(m_Network->GetBoostGraph()) );

  int i(0);
  for ( ; iterator != end; ++iterator, ++i)
  {
    stdEdgeIndex.insert(std::pair< EdgeDescriptorType, int >( *iterator, i));
  }

  // Define EdgeCentralityMap
  m_VectorOfEdgeBetweennessCentralities.resize( m_NumberOfEdges, 0.0);
  // Create the external property map
  m_PropertyMapOfEdgeBetweennessCentralities = EdgeIteratorPropertyMapType(m_VectorOfEdgeBetweennessCentralities.begin(), edgeIndex);

  // Define VertexCentralityMap
  VertexIndexMapType vertexIndex = get(boost::vertex_index, *(m_Network->GetBoostGraph()) );
  m_VectorOfVertexBetweennessCentralities.resize( m_NumberOfVertices, 0.0);
  // Create the external property map
  m_PropertyMapOfVertexBetweennessCentralities = VertexIteratorPropertyMapType(m_VectorOfVertexBetweennessCentralities.begin(), vertexIndex);

  boost::brandes_betweenness_centrality( *(m_Network->GetBoostGraph()),
    m_PropertyMapOfVertexBetweennessCentralities, m_PropertyMapOfEdgeBetweennessCentralities );

  m_AverageVertexBetweennessCentrality = std::accumulate(m_VectorOfVertexBetweennessCentralities.begin(),
    m_VectorOfVertexBetweennessCentralities.end(),
    0.0) / (double) m_NumberOfVertices;

  m_AverageEdgeBetweennessCentrality = std::accumulate(m_VectorOfEdgeBetweennessCentralities.begin(),
    m_VectorOfEdgeBetweennessCentralities.end(),
    0.0) / (double) m_NumberOfEdges;
}
Exemplo n.º 4
0
std::vector< double > mitk::ConnectomicsNetwork::GetEdgeBetweennessVector() const
{
  // std::map used for convenient initialization
  typedef std::map<EdgeDescriptorType, int> EdgeIndexStdMap;
  EdgeIndexStdMap stdEdgeIndex;
  // associative property map needed for iterator property map-wrapper
  typedef boost::associative_property_map< EdgeIndexStdMap > EdgeIndexMap;
  EdgeIndexMap edgeIndex(stdEdgeIndex);

  boost::graph_traits<NetworkType>::edge_iterator iterator, end;

  // sets iterator to start end end to end
  boost::tie(iterator, end) = boost::edges( m_Network );

  int i(0);
  for ( ; iterator != end; ++iterator, ++i)
  {
    stdEdgeIndex.insert(std::pair< EdgeDescriptorType, int >( *iterator, i));
  }

  // Define EdgeCentralityMap
  std::vector< double > edgeBetweennessVector(boost::num_edges( m_Network ), 0.0);
  // Create the external property map
  boost::iterator_property_map< std::vector< double >::iterator, EdgeIndexMap >
    e_centrality_map(edgeBetweennessVector.begin(), edgeIndex);

  // Define VertexCentralityMap
  typedef boost::property_map< NetworkType, boost::vertex_index_t>::type VertexIndexMap;
  VertexIndexMap vertexIndex = get(boost::vertex_index, m_Network );
  std::vector< double > betweennessVector(boost::num_vertices( m_Network ), 0.0);
  // Create the external property map
  boost::iterator_property_map< std::vector< double >::iterator, VertexIndexMap >
    v_centrality_map(betweennessVector.begin(), vertexIndex);

  boost::brandes_betweenness_centrality( m_Network, v_centrality_map, e_centrality_map );

  return edgeBetweennessVector;
}