C++ 为什么BGL A*需要隐式图来建模VertexListGraph?
一个更具体的后续问题,我前面的一个 Boost BGL有一个a*算法的版本,该算法应该可以处理隐式图,即astar_search_no_init()函数。隐式图可以建模为发生图。“请注意,astar_search_no_init()必须用于隐式图;基本的astar_search()函数需要一个建模顶点列表图概念的图。两个版本还需要图形类型来建模关联图概念” 这难道不意味着图不必对顶点列表图概念建模吗?如果是这种情况,我是不是因为找不到使用IncidenceGraphs的函数astar_search_no_init()的任何版本而遗漏了什么?有两个版本的astar_search_no_init()可用,它们似乎都适用于VertexListGraphs。我使用的是Boost 1.48,A*在astar_search.hpp文件中C++ 为什么BGL A*需要隐式图来建模VertexListGraph?,c++,boost,graph,a-star,boost-graph,C++,Boost,Graph,A Star,Boost Graph,一个更具体的后续问题,我前面的一个 Boost BGL有一个a*算法的版本,该算法应该可以处理隐式图,即astar_search_no_init()函数。隐式图可以建模为发生图。“请注意,astar_search_no_init()必须用于隐式图;基本的astar_search()函数需要一个建模顶点列表图概念的图。两个版本还需要图形类型来建模关联图概念” 这难道不意味着图不必对顶点列表图概念建模吗?如果是这种情况,我是不是因为找不到使用IncidenceGraphs的函数astar_searc
我甚至不认为首先要求隐式图对顶点列表图建模有什么意义。文件对我来说是相当混乱和误导的。有什么想法吗?图形概念本身是有序的;这是一个很好的图形概念图;) 如您所见,
astar\u search\u no\u init()
所需的关联图
概念与顶点列表图
概念无关。也就是说,每个概念都可以独立建模。因此,仅对第一个概念进行建模就足够了
请注意,对于
astar\u search\u no\u init()
,仅对顶点列表图建模是不合适的,即使它似乎可以工作。顶点列表图
概念不是关联图
的特例。可以对双向图形进行建模;这是关联图的一个特例,2009年1月27日添加了对隐式图的支持,以解决这个问题。修复方法是不依赖于num_顶点
,也不利用对概念建模的图形类型的任何其他要求
因此,即使模板类型参数名为VertexListGraph
,它也应该只处理仅对概念建模的图形类型。对,正如我所怀疑的那样。但这并不能回答真正的问题:为什么astar_search.hpp中的所有astar_search_no_init()函数都需要VertexListGraph?文档中说有一个版本可以处理IncidenceGraphs,这是有意义的,但我看不到任何版本。可以看到文件,我看到一个文档-这不是你要找的吗?不要管.hpp文件中的(正式)名称,那只是实现。你是说“astar_search_no_init()的两个版本,它们似乎都只在VertexListGraphs上工作”?这两个概念本质上是正交的,所以有顶点列表图也可以是发生图也就不足为奇了。@MSalters是的,这就是我的意思。它们似乎都只适用于顶点列表图。.hpp中的(正式)名称至少有冲突,因此与文档有误导性,但我很快会尝试一下!