具有可变键的查找表

2024-04-26 18:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解决一个搜索问题,对于这个问题,图的节点自然地被嵌套列表标记。我想使用一些方法(例如,统一成本),为此我需要将成本函数与每个节点相关联。你知道吗

我的直觉是使用一个以节点标签(=嵌套列表)为键的查找表,生成每个键的代价函数值列表。我理解为什么像list这样的不可损坏的对象不能在dict中用作键,例如Lookup table for unhashable in Python。但是节点标签应该是可变的-当我计算节点的邻居时,这是通过对节点标签的操作来完成的。你知道吗

或者,我可以创建一个Node类,其属性是节点标签。但是,我没有一组最初定义的节点-它会在搜索过程中增长。所以我需要继续从节点列表中提取节点标签列表。你知道吗

现在我倾向于将节点标签从可变类型来回转换为不可变类型,这样我既可以(1)从标签计算节点的邻居,也可以(2)将节点标签用作dict键。但这感觉很脏。有更好的办法吗?你知道吗


Tags: 对象方法函数标记类型列表节点标签
1条回答
网友
1楼 · 发布于 2024-04-26 18:21:31

虽然你的问题有点难以理解(一个简单图形的具体例子会很好),但你似乎把三个可能不同的概念混为一谈:节点标识、节点标记节点邻接矩阵/列表。无论是在你的头脑中还是在你的代码中把这些混为一谈,都可能导致糟糕的结果。你知道吗

Alternatively I could make a Node class with a property that is the node label.

这可能是一个好主意,以帮助你分开这些。你知道吗

However, I don't have a set of initially defined nodes - it grows during the search. So I need to keep extracting the list of node labels from the list of nodes.

我看不出一个好的理由,为什么你不能在需要的时候创建新的节点,并为它们分配邻接列表(或更新邻接矩阵)。你知道吗

你可能想复习a existing implementation with this class structure。你知道吗

相关问题 更多 >