当前位置: 首页>>代码示例>>C++>>正文


C++ context::getGraph方法代码示例

本文整理汇总了C++中context::getGraph方法的典型用法代码示例。如果您正苦于以下问题:C++ context::getGraph方法的具体用法?C++ context::getGraph怎么用?C++ context::getGraph使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在context的用法示例。


在下文中一共展示了context::getGraph方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: weight

		articulationConditioningSameCount::articulationConditioningSameCount(context const& contextObj, boost::mt19937& randomSource)
			: ::residualConnectivity::withSub(contextObj, randomSource), weight(1)
		{
			nUpVertices = 0;
			std::size_t nVertices = boost::num_vertices(contextObj.getGraph());
			for(std::size_t i = 0; i < nVertices; i++)
			{
				if(state[i].state & ON_MASK) nUpVertices++;
			}
		}
开发者ID:rohan-shah,项目名称:residualConnectivity,代码行数:10,代码来源:articulationConditioningSameCount.cpp

示例2: conditionArticulation

	void conditionArticulation(boost::shared_array<vertexState> state, mpfr_class& weight, const context& contextObj, std::vector<int>& scratch, boost::detail::depth_first_visit_restricted_impl_helper<filteredGraphType>::stackType& filteredGraphStack)
	{
		const context::inputGraph& graph = contextObj.getGraph();
		filteredGraphType filtered(graph, boost::keep_all(), filterByStateMask(state.get(), UNFIXED_MASK | ON_MASK));
		//get out biconnected components of helper graph (which has different vertex ids, remember)
		std::vector<std::size_t> articulationVertices;
		boost::articulation_points(filtered, std::back_inserter(articulationVertices));
	
		typedef boost::color_traits<boost::default_color_type> Color;
		std::vector<boost::default_color_type> colorMap(boost::num_vertices(contextObj.getGraph()), Color::white());
		findFixedOnVisitor fixedVisitor(state.get());
		const std::vector<mpfr_class> operationalProbabilities = contextObj.getOperationalProbabilities();

		for(std::vector<std::size_t>::iterator i = articulationVertices.begin(); i != articulationVertices.end(); i++)
		{
			if(state[*i].state != FIXED_ON)
			{
				std::fill(colorMap.begin(), colorMap.end(), Color::white());
				colorMap[*i] = Color::black();

				filteredGraphType::out_edge_iterator current, end;
				boost::tie(current, end) = boost::out_edges(*i, filtered);
				int nComponentsWithFixedOnVertices = 0;
				for(; current != end; current++)
				{
					std::size_t otherVertex = current->m_target;
					if(colorMap[otherVertex] != Color::black())
					{
						fixedVisitor.found = false;
						boost::detail::depth_first_visit_restricted_impl(filtered, otherVertex, fixedVisitor, &(colorMap[0]), filteredGraphStack, boost::detail::nontruth2());
						if(fixedVisitor.found) nComponentsWithFixedOnVertices++;
						if(nComponentsWithFixedOnVertices > 1) break;
					}
				}
				if(nComponentsWithFixedOnVertices > 1)
				{
					state[*i].state = FIXED_ON;
					weight *= operationalProbabilities[*i];
				}
			}
		}
	}
开发者ID:rohan-shah,项目名称:residualConnectivity,代码行数:42,代码来源:conditionArticulation.cpp

示例3: getSubObservation

	void withSub::getSubObservation(int radius, vertexState* newState, const context& contextObj, const vertexState* oldStatesPtr)
	{
		std::size_t nVertices = boost::num_vertices(contextObj.getGraph());
		const int* shortestDistances = contextObj.getShortestDistances();

		std::size_t sourceVertex = 0;

		std::fill(newState, newState+nVertices, vertexState::fixed_off());

		while(sourceVertex < nVertices)
		{
			//is this vertex marked as on, for one reason or another? If so continue from here
			if((oldStatesPtr[sourceVertex].state & ON_MASK) > 0 && newState[sourceVertex].state == FIXED_OFF)
			{
				newState[sourceVertex].state = FIXED_ON;

				//Do we find another vertex in our search that is marked on, and is far enough away from the source?
				//If so retain it, it will be our new starting point. 
				//If no such found, we'll continue from finalSearchVertex+1
				bool found = false;
				std::size_t nextSourceVertex = -1;
				//keep copy of source vertex
				std::size_t copiedSourceVertex = sourceVertex;
				//we want to begin on the NEXT vertex
				sourceVertex++;
				while(sourceVertex < nVertices)
				{
					int previousState = oldStatesPtr[sourceVertex].state;
					if(shortestDistances[copiedSourceVertex + nVertices * sourceVertex] <= radius)
					{
						if(previousState & FIXED_MASK) newState[sourceVertex].state = previousState;
						else newState[sourceVertex].state = UNFIXED_OFF;
					}
					else if(!found && (previousState & ON_MASK) > 0 && newState[sourceVertex].state == FIXED_OFF)
					{
						nextSourceVertex = sourceVertex;
						found = true;
					}
					sourceVertex++;
				}
				//if we found another vertex, continue from there. If no, we're already at finalSearchVertex+1. 
				//Which is where we want to be.
				if(found)
				{
					sourceVertex = nextSourceVertex;
				}
			}
			else sourceVertex++;
		}
	}
开发者ID:rohan-shah,项目名称:residualConnectivity,代码行数:50,代码来源:withSub.cpp

示例4: weight

		articulationConditioningImportance::articulationConditioningImportance(context const& contextObj, boost::mt19937& randomSource, const std::vector<double>* importanceProbabilities)
			: ::residualConnectivity::withSub(contextObj), weight(1), importanceProbabilities(importanceProbabilities)
		{
			std::size_t nVertices = boost::num_vertices(contextObj.getGraph());
			boost::shared_array<vertexState> state(new vertexState[nVertices]);

			for(std::size_t i = 0; i < nVertices; i++)
			{
				boost::random::bernoulli_distribution<double> vertexDistribution((*importanceProbabilities)[i]);
				if(vertexDistribution(randomSource))
				{
					state[i].state = UNFIXED_ON;
				}
				else
				{
					state[i].state = UNFIXED_OFF;
				}
			}
			this->state = state;
		}
开发者ID:rohan-shah,项目名称:residualConnectivity,代码行数:20,代码来源:articulationConditioningImportance.cpp

示例5: isSingleComponentPossible

		basic::basic(context const& contextObj, boost::shared_array<const vertexState> state, int radius, ::residualConnectivity::subObs::basicConstructorType& otherData)
			: ::residualConnectivity::subObs::subObsWithRadius(contextObj, state, radius)
		{
			potentiallyConnected = isSingleComponentPossible(contextObj.getGraph(), state.get(), otherData.components, otherData.stack);
		}
开发者ID:rohan-shah,项目名称:residualConnectivity,代码行数:5,代码来源:basic.cpp


注:本文中的context::getGraph方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。