【问题标题】:How can I find spqr tree using sage?如何使用 sage 找到 spqr 树?
【发布时间】:2021-04-06 19:11:26
【问题描述】:

我正在尝试查找我的图表的 SPQR 树,所以我发现 sage 可以帮助我。我把我的代码放在这里https://sagecell.sagemath.org/(而不是在圣人程序中)。这里是:

H=Graph({"AL":["GR","ME","MK","RS"],"GR":["BG","MK","TR"],"ME":["BA","HR","KO","RS"],"MK":["BG","RS"],"RS":["BA","BG","HR","HU","KO","RO"],"AD":["FR","SP"],"FR":["BE","DE","IT","LU","MC","SP","CH"],"SP":["PT"],"AT":["CZ","DE","HU","IT","LI","SK","SL","CH"],"CZ":["DE","PL","SK"],"DE":["BE","DK","LU","NL","PL","CH"],"HU":["HR","SK","SL","UA"],"IT":["SM","SL","CH","VA"],"LI":["CH"],"SK":["PL","UA"],"SL":["HR"],"BY":["LV","LT","PL","RU","UA"],"LV":["EE","LT","RU"],"LT":["PL","RU"],"PL":["RU","UA"],"RU":["EE","FI","NO","UA"],"UA":["MD","RO"],"BE":["LU","NL"],"BA":["HR"],"BG":["RO","TR"],"RO":["MD"],"FI":["NO","SE"],"NO":["SE"]}
)
H = H.to_undirected()
tree = spqr_tree(H)
plot(tree)

但是我遇到了异常,我不明白我的图表有什么问题,我该如何解决它。贤者的日志:

ValueError                                Traceback (most recent call last)
<ipython-input-1-5545fd16ab3f> in <module>
      3 )
      4 H = H.to_undirected()
----> 5 tree = spqr_tree(H)
      6 
      7 plot(tree)

/home/sc_serv/sage/local/lib/python3.8/site-packages/sage/graphs/connectivity.pyx in sage.graphs.connectivity.spqr_tree (build/cythonized/sage/graphs/connectivity.c:23494)()
   2318 
   2319     if algorithm == "Hopcroft_Tarjan":
-> 2320         tric = TriconnectivitySPQR(G)
   2321         return tric.get_spqr_tree()
   2322 

/home/sc_serv/sage/local/lib/python3.8/site-packages/sage/graphs/connectivity.pyx in sage.graphs.connectivity.TriconnectivitySPQR.__init__ (build/cythonized/sage/graphs/connectivity.c:30717)()
   3109             # If graph has a cut vertex
   3110             if cut_vertex != -1:
-> 3111                 raise ValueError("graph has a cut vertex")
   3112 
   3113         # Identify reversed edges to reflect the palm tree arcs and fronds

ValueError: graph has a cut vertex

【问题讨论】:

  • 你知道什么是“切割顶点”吗?
  • ALADAT 没有引用。这意味着您在这里有几个不连贯的图表。

标签: python graph sage


【解决方案1】:

SPQR 树只能为 双连通图 形成。这些是连接图,即使图中的任何节点被删除,它们也会保持连接。如果一个图有一个 articulation vertex(也称为 cut vertex),一个节点,如果删除,则使图表断开连接。

您收到的错误表明您的图至少有一个切割顶点,因此不可能形成 SPQR 树。

【讨论】:

    猜你喜欢
    • 2019-10-16
    • 2018-12-09
    • 2021-05-28
    • 2019-12-05
    • 2019-07-22
    • 2020-08-19
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多