当前位置: 首页 > 知识库问答 >
问题:

图实现:为什么不使用哈希?

邵献
2023-03-14

也许我没有看到什么或者我忘记了在计算运行时考虑的事情,所以请告诉我。

共有1个答案

钦永贞
2023-03-14

与DavideIsenstat的答案相同,图的实现也有很大的不同。这是在课堂上不容易碰到的事情之一。概念设计有两个:

1) Adjacency list
2) Adjacency matrix

但是您可以很容易地扩展任何一种设计,以获得更快的插入/删除/搜索等特性。代价往往只是存储额外的数据!考虑实现一个相对简单的图算法(像...Euler的),看看您的图实现是如何对运行时复杂性产生巨大影响的。

为了更清楚地说明我的观点,我的意思是“邻接列表”并不真正要求您使用linkedlist。例如,wiki在他们的页面上引用了以下内容:

 类似资料:
  • 问题内容: 在Java 实现中基于对象数组。 谁能解释我为什么使用数组而不是数据存储的实现?使用有什么好处? 问题答案: 在Java中,创建通用类型的数组并不容易。 简单的方法不能编译: 替换为,一切都很好(以容器实现中其他地方增加的复杂性为代价)。 有其他方法,但是它们呈现了一组不同的权衡。有关广泛的讨论,请参见如何在Java中创建通用数组?

  • 问题内容: 的类是代表一地图,其中键和值都是字符串。这是因为对象用于读取文件,即文本文件。 那么,为什么他们在Java 5中不对此类进行改造以实现呢? 该javadoc的状态: 因为Properties是从Hashtable继承的,所以put和putAll方法可以应用于Properties对象。强烈建议不要使用它们,因为它们允许调用方插入键或值不是字符串的条目。应该改用setProperty方法。

  • 问题内容: 你知道吗 : 将输出: 这是由于(继承自)未覆盖的事实引起的。 您知道为什么会这样吗? 问题答案: 根据的合同,没有针对s 的通用equals()方法,因此无法提供一个。 请注意,它既不是Set也不是List,因此既不是数量也不是它不支持的原因。

  • 问题内容: 有谁知道为什么 不执行?这意味着您无法对排序,这在我看来有点奇怪。 讨论后更新: 感谢所有有用的回复。最后,我对该主题进行了更多研究。 为什么java.lang.Number不实现Comparable的最简单解释源于可变性问题。 对于位的检讨,是抽象的超类型的,,,,,,,,和。在该列表中,并以没有实现。 深入研究,我发现在可变类型上实现不是一种好习惯,因为在比较期间或之后对象可能会更

  • 问题内容: 我偶然发现了一篇博客文章,详细介绍了如何在Python中实现powerset函数。因此,我尝试用自己的方式进行操作,并发现Python显然无法拥有一组集合,因为set无法哈希。这很烦人,因为功率集的定义是它是一组集合,而我想使用实际的集合操作来实现它。 Python集不可散列是否有充分的理由? 问题答案: 通常,在Python中只有不可变的对象才是可哈希的。的不可变的变体- -是哈希的