Source code for networkx.exception
"""
**********
网络异常
**********
NetworkX 的基础异常和错误。
"""
__all__ = [
"HasACycle",
"NodeNotFound",
"PowerIterationFailedConvergence",
"ExceededMaxIterations",
"AmbiguousSolution",
"NetworkXAlgorithmError",
"NetworkXException",
"NetworkXError",
"NetworkXNoCycle",
"NetworkXNoPath",
"NetworkXNotImplemented",
"NetworkXPointlessConcept",
"NetworkXUnbounded",
"NetworkXUnfeasible",
]
[docs]
class NetworkXException(Exception):
"""网络X中异常的基类。"""
[docs]
class NetworkXError(NetworkXException):
"""网络X中严重错误的异常"""
[docs]
class NetworkXPointlessConcept(NetworkXException):
"""当一个空图作为输入提供给不能使用它的算法时引发。
空图有时被认为是一个无意义的概念 [1]_,因此这个异常的名称。
Notes
-----
空图和空图常常被互换使用,但它们在 NetworkX 中有明确的定义。一个 ``empty_graph`` 是一个有 ``n`` 个节点和 0 条边的图,而一个 ``null_graph`` 是一个有 0 个节点和 0 条边的图。
References
----------
.. [1] Harary, F. 和 Read, R. "空图是一个无意义的概念吗?" 在图论和组合数学会议上,乔治华盛顿大学。纽约:Springer-Verlag,1973 年。"""
[docs]
class NetworkXAlgorithmError(NetworkXException):
"""算法意外终止的异常。"""
[docs]
class NetworkXUnfeasible(NetworkXAlgorithmError):
"""算法尝试解决一个没有可行解的问题实例时引发的异常。"""
[docs]
class NetworkXNoPath(NetworkXUnfeasible):
"""当在图中运行本应返回路径的算法时,如果该路径不存在,则抛出此异常。"""
[docs]
class NetworkXNoCycle(NetworkXUnfeasible):
"""在运行于不存在此类环的图上的算法中,应返回环的异常情况。"""
[docs]
class HasACycle(NetworkXException):
"""当算法预期图没有环时,如果图存在环,则引发此异常。"""
[docs]
class NetworkXUnbounded(NetworkXAlgorithmError):
"""算法尝试解决一个无界最大化或最小化问题实例时引发的异常。"""
[docs]
class NetworkXNotImplemented(NetworkXException):
"""未为某种图实现算法时引发的异常。"""
[docs]
class NodeNotFound(NetworkXException):
"""如果在图中找不到请求的节点,则引发此异常。"""
[docs]
class AmbiguousSolution(NetworkXException):
"""如果在算法的某个中间步骤存在多个有效解决方案,则会引发此异常。
面对歧义时,拒绝猜测的诱惑。例如,在计算二分匹配时,尝试确定非连通二分图中的二分节点集时可能会出现这种情况。"""
[docs]
class ExceededMaxIterations(NetworkXException):
"""如果在循环中迭代次数过多且未中断,则会引发此异常。
例如,在计算某个值的渐进更好近似值的算法中,如果超过了用户指定的迭代界限,就可能发生这种情况。"""
[docs]
class PowerIterationFailedConvergence(ExceededMaxIterations):
"""在指定的迭代次数内,幂迭代法未能收敛时引发此异常。
`num_iterations` 是在引发此异常时已完成的迭代次数。"""
def __init__(self, num_iterations, *args, **kw):
msg = f"power iteration failed to converge within {num_iterations} iterations"
exception_message = msg
superinit = super().__init__
superinit(self, exception_message, *args, **kw)