我在 Go 中实现了一个简约的非循环有限状态自动机(MA-FSA;一种特定类型的 DAG),并希望将一些额外的数据与指示 EOW(词尾)的节点相关联。使用 MA-FSA,传统方法是不可能的,因为有多个单词可能以该节点结尾。所以我正在寻找最小的完美散列函数作为替代方案。
在他博客文章顶部的“更正”框中,Steve Hanov说他使用了Lucchesi 和 Kowaltowski 在这篇论文中描述的方法。在查看图 12(第 19 页)时,它描述了散列函数。
在第 8 行,它指的是FirstLetter
and Predecessor()
,但它没有描述它们是什么。或者我没看到。这些是什么?
我所能弄清楚的是它只是遍历树,Number
从每个节点开始累加,但这不可能是正确的。它产生的数字太大而且不是一对一的,就像论文说的那样。我误读了什么吗?