graph - 如果我用哈希表替换邻接列表中的每个链表,有什么缺点?

2024-02-29

CLRS excise 22.1-8(我是自学,没有在任何大学学习)

假设每个数组条目 Adj[u] 不是链表,而是一个 包含顶点 v 的哈希表,其中 (u,v) ∈ E。如果所有 边缘查找的可能性相同,预计的时间是多少 判断图中是否有边?有什么缺点 这个方案有吗?为每条边建议替代数据结构 解决这些问题的列表。您的替代方案有吗 与哈希表相比有什么缺点?

因此,如果我用哈希表替换每个链表,则会出现以下问题:

  1. 确定图中是否有边的预期时间是多少?
  2. 有什么缺点?
  3. 为每个边缘列表建议一个替代数据结构来解决这些问题
  4. 与哈希表相比,您的替代方案是否有缺点?

我有以下部分答案:

  1. 我认为预期时间是 O(1),因为我只是去 Hashtable t = Adj[u],然后 return t.get(v);
  2. 我认为缺点是哈希表会比链表占用更多的空间。

对于另外两个问题,我没有任何线索。

任何人都可以给我线索吗?


问题 3 的答案可能是二叉搜索树。

在邻接矩阵中,每个顶点后面都有一个 V 元素数组。这种 O(V) 空间成本导致快速(O(1) 时间)边缘搜索。

在邻接列表中,每个顶点后面都有一个列表,该列表仅包含 n 个相邻顶点。这种节省空间的方式会导致搜索速度缓慢 (O(n))。

哈希表是数组和列表之间的折衷方案。它使用的空间比 V 少,但需要处理搜索中的冲突。

二叉搜索树是另一种折衷方案——空间成本与列表一样最小,并且搜索的平均时间成本为 O(lg n)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

graph - 如果我用哈希表替换邻接列表中的每个链表,有什么缺点? 的相关文章

  • 如何定义基于标签的组织结构?

    原标题 有没有办法在基于标签的组织方法上强制建立关系结构 我有一些实体 它们有一系列属性 一些属性影响实体可以具有的其他属性 许多属性被组织成组 并且有时实体被要求具有来自某些组的一定数量的属性 或者可能具有来自某些组的一定范围的属性 有没
  • 如何在java hashset中查找并返回对象

    根据 HashSet javadoc HashSet contains 仅返回布尔值 如何在 hashSet 中 查找 对象并修改它 它不是原始数据类型 我看到 HashTable 有一个 get 方法 但我更喜欢使用该集合 您可以删除一个
  • 比较周期性数据的快速方法

    假设我有任意类型的数据集 A B C D 并且我想将其与另一个数据集进行比较 我希望 A B C D B C D A C D A B 和 D A B C 的比较成立 但是不适用于 A C B D 或任何其他未类似排序的集合 有什么快速方法可
  • 相当于一个允许重复键的排序字典

    我需要一个数据结构 可以通过与对象关联的浮动键对对象进行排序 从低到低的在前 问题是键代表成本 所以经常有重复 我不关心这一点 因为如果两个具有相同的成本 我只会抓住第一个 因为它没有区别 问题是编译器抱怨 是否有一种数据结构的行为方式相同
  • 如何解析代码(Python)?

    我需要解析一些特殊的数据结构 它们采用某种类似 C 的格式 大致如下所示 Group GroupName C Style comment Group AnotherGroupName Entry some variables 0 3 141
  • 计算 List 中相似的相邻项目数

    我试图在列表中找到相似的相邻项目并计算其数量 例如 List
  • 如何在 dijkstra 算法中以 O(log n ) 时间更新优先级队列中的键?

    过去一周我一直在研究 dijkstra 算法 我在 java 中有正确的运行代码 它使用数组来计算标准 findMin 函数 该函数为您提供距离最小的顶点 显然它是 O n 现在我希望使用优先级队列 最小堆 来实现它 我的思考过程是 whi
  • Bellman-Ford 算法检测什么?负重还是负循环?

    如果给定一个图 现在我们要从源头计算最短路径 现在 如果一条边具有负权重 但在到达目的地时有边到后边返回到该边 我的意思是如果没有循环 那么我们就没有负循环 但是here http en wikipedia org wiki Bellman
  • 为什么 Java 中的 hashCode() 可以对不同对象返回相同的值?

    引用我正在读的书中的一段话首先Java http www amazon co uk Head First Java Kathy Sierra dp 0596009208 关键是 哈希码可以相同 但不一定保证对象相等 因为使用的 哈希算法 h
  • 如何从数组表示构建不完全二叉树

    如果输入是一个数组 其中null表示没有节点 input 1 2 3 null 5 null 7 请假设我已经检查过输入 对于每个array i 它的父母array i 2 不会是null 递归地 所以根不能是null 如何构建具有这样的逻
  • 从日志文件中获取前 100 个 URL

    我的一位朋友在接受采访时被问到以下问题 谁能告诉我如何解决它 我们有一个相当大的日志文件 大约 5GB 日志文件的每一行都包含一个用户在我们网站上访问过的 URL 我们想要找出用户访问最多的 100 个 URL 怎么做 如果我们有超过 10
  • Javascript 3d 绘图实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有什么好的 javascript 3d 绘图实用程序吗 我知道每个网站都推荐过画布 3d 图
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • Bokeh 中单独的节点和边缘悬停工具?

    我正在尝试为 Bokeh 中的节点和边缘获取单独的悬停工具提示 但未能使其正常工作 有人可以指出我做错了什么吗 我相信代码应该如下所示 from bokeh io import show output notebook from bokeh
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 子序列和

    给定一个整数数组 例如 1 2 3 1 查找是否存在总和为0并返回它 例如 1 2 3 or 2 3 1 检查每个子序列是O n 2 这效率太低了 有改进的想法吗 创建一个新数组 其中每个元素等于前一个元素加上该元素的总和 Input 1
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 为什么图的 C++ 数据结构隐藏连续的整数索引?

    有向图和无向图的数据结构至关重要 众所周知且广泛使用的实现 例如Boost图库 http www boost org doc libs 1 56 0 libs graph doc table of contents html and Lem

随机推荐

  • 在 Python 中使用自定义字体将 SVG 转换为 PNG

    我正在使用基于 Cairo RSVG 的解决方案将 SVG 光栅化为 PNG StackOverflow 上已经对它进行了描述在 Python 中将 SVG 转换为 PNG https stackoverflow com questions
  • 返回总和的 Lisp 函数

    我正在尝试编写一个奇怪的函数 所以请耐心等待 这个函数应该有一个列表L作为参数并有一个sum多变的 如果L不是列表 它应该返回nil 否则 它应该迭代列表的每个元素并执行以下操作 如果元素是数字且小于零 则应从总和中减去 1 如果元素是数字
  • 时间序列 - 相关性和滞后时间

    我正在研究一组输入变量和响应变量价格之间的相关性 这些都是按时间顺序排列的 1 我是否有必要平滑曲线其中输入变量是循环变量 自回归 如果是这样 怎么办 2 一旦建立相关性 我想准确量化输入变量如何影响响 应变量 例如 一旦 X 增加 gt
  • 缩放、旋转和裁剪图像

    我希望在 GUI 中能够永久缩放 旋转和裁剪图像 将更改保存到文件中 WPF本身就有能力吗 如果不是 是否有任何组件可以与 WPF 更好地集成 我还需要调整 JPEG 和 TIFF 格式的图像亮度和对比度 删除边框 Thisarticle
  • 为什么 Common Lisp 中冒号位于变量之前

    Common Lisp 中变量前面的冒号语法是什么意思 我见过这样的程序 我将在这里从大量函数中展示一些示例代码 defun expand successorf node mapcar lambda action state cost le
  • 重载类的流插入 (<<) 运算符

    它经常作为类的友元函数被重载 有什么方法可以将其重载为成员函数吗 有什么方法可以将其重载为成员函数吗 假设你有课Foo并且您想使用 Foo foo std cout lt lt foo 不 它不能 仅当第一个参数是类的对象时 成员函数重载才
  • 将 YouTube 嵌入代码精简为仅 URL

    请帮忙 我需要删除以下代码 以便它只使用 值 部分
  • 删除 ASP.net MVC 单页应用程序中的身份验证

    我正在尝试在 Visual Studio 2013 中使用 asp net MVC SPA 模板 我不需要任何身份验证位 我只需要直接加载到控制器页面之一 如何删除初始模板中的所有身份验证内容 去除 Authorize 注释来自HomeCo
  • 创建一个触发器,它将在另一个表更新时在表中插入记录

    假设我有表 T1 和 T2 Columns of T1 gt Value Columns of T2 gt OldValue NewValue 我需要的是一个触发器 它将在 T1 更新时在 T2 中插入一条记录 我还需要知道旧值和新值 我以
  • 如何在 R 中读取文本文件并创建数据框

    需要读取txt文件中https raw githubusercontent com fonnesbeck Bios6301 master datasets addr txt https raw githubusercontent com f
  • SQL Server - 仅使用 .modify() 合并两个 XML

    假设我们有 CREATE TABLE Users id INT PRIMARY KEY name VARCHAR 100 suggestions XML INSERT INTO Users id name suggestions SELEC
  • NodeJS 中的 Pub/Sub 实现

    我一直在尝试 NodeJS 的不同发布 订阅实现 并且想知道哪一个最适合特定应用程序 该应用程序的要求涉及多通道 多用户 3D 环境中对象的实时同步 我开始使用 socket io 创建了一个基本的通道数组 当用户发送消息时 它会循环该通道
  • Activemq 关闭失败然后终止进程

    我正在实施复制的 leveldb activemq 设置 我有 3 个 activemq 实例在同一个盒子上运行 我正在配置文件中更改它们的 rmiPort amqpport 和 openwire 端口 配置看起来像这样
  • Lua 整数类型

    我真的需要 Lua 中有一个整数类型 我所说的整数类型是指定义常用运算符 等 并表现得像整数的类型 内部表示并不重要 用表做这样的事情非常简单 问题是 我尝试过 并且性能非常差 当然 这是我的部分实现 function num op a b
  • 什么时候可以专门针对私有成员类型设计模板?

    鉴于这些定义 template
  • 如何按字符串中的第二个单词的字母顺序对列表进行排序

    如果我有一个列表 并且想继续向其中添加行并按姓氏字母顺序对它们进行排序 该怎么办 排序似乎只是按字符串的第一个字母重新排列它们 line James Edward Example line linesList append join lin
  • 有没有办法为 NavigationLink 添加额外的功能?斯威夫特用户界面

    我想向 NavigationLink 添加一个额外的功能 示例代码是这样的 struct ContentView View func yes print yes var body some View NavigationView Navig
  • while 循环不工作吗? (找不到变量)

    我的 do while 循环遇到问题 找不到变量来测试条件是否为真 这是我的代码 import java util Scanner public class Loops public static void main String args
  • Microsoft Azure 认知服务手写检测边界框参数

    我目前正在使用Microsoft Azure 认知服务手写检测 API https learn microsoft com en in azure cognitive services computer vision quickstarts
  • graph - 如果我用哈希表替换邻接列表中的每个链表,有什么缺点?

    CLRS excise 22 1 8 我是自学 没有在任何大学学习 假设每个数组条目 Adj u 不是链表 而是一个 包含顶点 v 的哈希表 其中 u v E 如果所有 边缘查找的可能性相同 预计的时间是多少 判断图中是否有边 有什么缺点