我正在研究一个家庭作业问题,在该问题中,我们必须编写一种可以确定图形是否为二部图的算法。我的python解决方案可以工作,但是如果图形不是二分的,现在它会引发异常,相反,我希望它返回布尔值。如何修改此代码?
def is_bipartite(v, visited, colors, counter):
print(v)
# Set this vertex to visited
visited[v] = True
colors[v] = counter % 2
# Explore links
for u in v.links:
# If linked up node u has already been visited, check its color to see if it breaks
# the bipartite of the graph
if u in visited:
if colors[v] == colors[u]:
raise Exception("Not Bipartite")
# If the link has not be visited then visit it
if u not in visited:
visited[u] = False
is_bipartite(u, visited, colors, counter + 1)
答案 0 :(得分:1)
如果我正确理解了您的代码,则在递归搜索中的任何位置得到匹配的颜色时,您都想返回53.3958px
639px
false
false
80.0625px
639px
true
true
。如果您未找到任何内容,则想返回False
。
这并不是很难做到的。只需将True
语句更改为raise
并检查递归调用的结果,然后返回return False
(如果其中任何一个返回False
结果)。然后只需将False
放在函数的末尾即可完成:
return True