Jac*_*ale 17 hashtable graph adjacency-list data-structures
在CLRS消费税22.1-8(我自学,不在任何大学)
假设每个数组条目Adj [u]不是链表,而是包含顶点v的哈希表,其中(u,v)∈E.如果所有边缘查找都具有相同的可能性,那么确定是否是边缘在图中?这个方案有什么缺点?为每个边缘列表建议一个替代数据结构来解决这些问题.与哈希表相比,您的替代方案是否有缺点?
因此,如果我用哈希表替换每个链表,则存在以下问题:
我有以下部分答案:
对于其他两个问题,我无法得到线索.
任何人都可以给我一个线索?
cxw*_*gyi 12
问题3的答案可能是二叉搜索树.
在邻接矩阵中,每个顶点后跟一个V元素数组.该O(V)空间成本导致边缘的快速(O(1) - 时间)搜索.
在邻接列表中,每个顶点后跟一个列表,该列表仅包含n个相邻顶点.这种节省空间的方式导致搜索速度慢(O(n)).
哈希表是数组和列表之间的折衷.它使用的空间比V小,但在搜索时需要碰撞处理.
二叉搜索树是另一种折衷方案 - 空间成本与列表的成本相比最小,搜索的平均时间成本为O(lg n).
小智 10
它取决于哈希表以及它如何处理冲突,例如假设在我们的哈希表中,每个条目都指向具有相同键的元素列表.
如果元素的分布足够均匀,则查找的平均成本仅取决于每个列表的平均元素数(加载因子).所以每个列表的平均元素数是n/m,其中m是我们的哈希表的大小.
| 归档时间: |
|
| 查看次数: |
6708 次 |
| 最近记录: |