Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数据结构存储一步一步的指南

数据结构存储一步一步的指南
EN

Stack Overflow用户
提问于 2016-09-25 21:48:01
回答 1查看 54关注 0票数 0

我试图在Javascript中建立一步一步的指南(想想任何IKEA指南),其中每一步都可以链接到一个或多个后续步骤,2.一个步骤可以对前面的步骤有0或n个依赖项,3.始终有最后一个步骤。就像这样:

代码语言:javascript
运行
AI代码解释
复制
       o
      / \
o -> o   o -> o
      \ /
  o -> o

首先想到的是有向图的结构,但是由于这个图的唯一性,所有节点都指向“前进”,所以我想知道是否有更好的方法。感觉应该是一棵树和一幅图的混合。

最后,我想使用这个结构来优化建议的执行计划。我不会太担心对插入、删除、更新或查询进行优化,因为这些指南的步骤总是少于100个。我只是在寻找一种数据结构,使编码“更容易”。

在这个结构中我要查询的内容:

  • 关键的道路是什么?
  • 步骤X的依赖项/下一步是什么?
  • 将这些步骤的执行并行/序列化的最有效方法是什么?
EN

回答 1

Stack Overflow用户

发布于 2016-09-25 23:03:17

有向图应该是最简单的方法。在阅读剩下的课文之前,请记住,我并没有谈论数据结构的并行化,因为我不知道如何做到这一点。无论如何,您将不会处理大量的数据,所以您将不会有任何效率问题。

我们将为每个步骤存储两个数组:一个用于下一个步骤,另一个用于依赖项。将支持下列行动:

  1. 在O(1)中插入步骤:为它创建两个空数组
  2. O(1)中的依赖项插入:只需在所涉步骤的依赖项/下一步数组的末尾添加一个条目即可
  3. O(N)中的步骤删除:设S为要删除的步骤。迭代S的依赖数组,对于数组中的每个元素,转到该元素的下一步数组并删除包含S的条目,然后遍历S的下一步数组,对于数组中的每个元素,转到该元素的依赖数组并删除包含S的条目,然后删除与S相关的两个数组。
  4. O(N)中的依赖项删除:只需在dependency/next步骤数组中查找与要删除的依赖项相关的条目,并删除它们
  5. 检查O(N)中步骤S的所有依赖项和下一步步骤:只需迭代与步骤S相关的两个数组
  6. 求O(N+M)中的临界路径,其中M是依赖关系的总数:我们将运行一个动态规划算法:设f( v )是从顶点v开始的最长路径,如果v没有下一步,我们可以计算f(v) =1,否则f(v) = max(f( u )+1),对每一步运行动态规划算法,并且临界路径是所有最长路径中的最大值。

注意,有些操作可以使用BST或哈希表加速,但是由于要处理小数据,所以我尽量保持它的简单性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39695468

复制
相关文章
Baidu与Google地图API初探
前天周六,有个好友过来玩,他说想在他的站点中加入地图导航模块,但不知道选择哪个第三方Map API
全栈程序员站长
2022/07/12
1.8K0
Baidu与Google地图API初探
Baidu与Google地图API初探
前天周六,有个好友过来玩,他说想在他的网站中加入地图导航模块,但不知道选择哪个第三方Map API
阳光岛主
2019/02/19
2.6K0
java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]
离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。
全栈程序员站长
2022/11/08
1.7K0
java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]
google地图简单示例
要先获取Google地图的API 密钥:http://code.google.com/intl/zh-CN/apis/maps/signup.html
liulun
2022/05/09
4450
以客户为中心
最近一直在思考一个问题,如何才能带领团队把事情做好,如何才能把产品做好。过程中也用了很多方法,比如戴明环,比如事情安排的“行人准则”,效果也是非常不错,交代的事情基本也能满足要求,但是总谈不上优秀。 正好最近看了雷军的第三次年度演讲:穿越人生低谷的感悟,结合自己平时做事的理念,觉得“以客户为中心”最能作为核心团队乃至公司的核心业务理念。 什么是以客户为中心 除了以客户为中心 以技术为中心 以产品为中心:腾讯 以股东为中心: 以员工为中心:谷歌(工程师文化) 为什么要以客户为中心 世界上只有客户给你钱
十毛
2022/08/23
2800
以业务为中心
一直觉得没有啥好写的,什么技术,业务什么的都比较简单。最近幡然醒悟,有什么是不能用文字表达的呢?
李子健
2023/05/25
1900
Google JavaScript API
You can use the JavaScript client library to interact with Google APIs, such as People, Calendar, and Drive, from your web applications. Follow the instructions on this page to get started.
拿我格子衫来
2022/01/24
6220
Google 发布 Google Friend Connect API
Google Friend Connect 是 Google 推出的社会化网络工具,通过此工具你可以将各种支持 OpenSocial 的应用通过 Google Friend Connect 在你的网站上应用,并且可以和已有的社会化网络进行整合应用。今天 Google 更是开放了 Google Friend Connect 的 API,让你能够访问到更多 Google Friend Connect 核心的数据和功能。 Google Friend Connect 提供两种 API,JavaScript API 允许你能够直接集成社会化社区到你的网页中。REST API 能够允许你把网站的现有的登陆系统和数据集成新的社会化数据和活动,并能实现让你的网站实现通过 Gmail 账号,Yahoo 账号,OpenID 等方式实现单点登录。
Denis
2023/04/14
6720
Google 地图切片URL地址解析
Google地图采用的是Web墨卡托投影(如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道半径为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]。具体投影解释请参考墨卡托投影:
全栈程序员站长
2022/07/04
1.8K0
Google 地图切片URL地址解析
来自Google的经验:以用户为中心的机器学习七大技巧
作者 | Josh Lovejoy 编译 | 聂震坤 设计面向用户的机器学习时需要注意的7点 如果你刚开始接触机器学习并且感觉有些无所适从,不要惊慌或者怀疑自己,给自己时间适应。此篇文章中指出了七个要
用户1737318
2018/07/20
5600
Openlayers中Google地图的加载
在实现的时候,参考了mygisforum的文章http://blog.csdn.net/mygisforum/article/details/7582449的内容,同时结合gwc的gridset,实现了google切片在Openlayers2中的调用与展示。
牛老师讲GIS
2018/10/23
2K0
Openlayers中Google地图的加载
使用Google翻译Api
将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为包含服务帐户密钥的JSON文件的文件路径。在Linux或macOS系统中设置方法如下:
职场亮哥
2020/10/10
4.6K0
腾讯地图Javascript API GL
腾讯位置服务在多平台为开发者提供了丰富的地图展现形式,帮助从属于不同领域的开发人员轻松完成构建地图并在其基础上打造专属内容的工作。同时配合海量数据、个性化定制、可视化等能力满足各个行业场景下对地图的需求。
鱼找水需要时间
2023/02/16
2.5K0
腾讯地图Javascript API GL
高德地图应用(4)设置地图的中心点
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> <script type="text/javascript" src="https://web
贵哥的编程之路
2021/06/08
1.7K0
高德地图应用(4)设置地图的中心点
GitHub标星8W,Google面试指南
作为全球最顶尖的互联网公司,进入Google工作一直是很多工程师的梦想,自 1996 年诞生以来,Google 至今已推出多款改变世界的互联网产品,旗下也汇聚了一大批优质的工程师与科学家。 与此同时,因其崇尚自由开放,不作恶的互联网理念,也受到了许多互联网优秀人才的认可,Google 也成为了他们最想去的互联网企业之一。
xiangzhihong
2022/11/30
2270
Google JS API 授权 失败
// 初始化OAuth2.0授权 const authenticate = () => { return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/driv
拿我格子衫来
2022/01/24
4.1K0
Google JS API 授权 失败
Google短网址的API
除了速度快,goo.gl还提供详细的点击统计。比如,Yahoo首页的短网址是http://goo.gl/QuXj,那么它的统计数据就在http://goo.gl/info/QuXj。加上后缀".qr",还能得到这个网址的二维条形码,Yahoo的就是http://goo.gl/QuXj.qr。
ruanyf
2018/09/21
4.4K1
Google短网址的API
离线地图开发:google地图坐标和百度地图的相互转化
jQuery.MapConvert = { x_pi : 3.14159265358979324 * 3000.0 / 180.0, /// <summary> /// 中国正常坐标系GCJ02协议的坐标,转到 百度地图对应的 BD09 协议坐标 /// point 为传入的对象,例如{lat:xxxxx,lng:xxxxx} /// google地图坐标转换成百度地图坐标 /// </summary> Convert_GCJ02_To_BD
用户1220053
2022/01/07
1.3K0
Google MAP API 初步尝试
今天看了一下午Google的API,发现还挺简单的。稍微懂点Javascript就可以了。 写了个小例子
EltonZheng
2021/01/26
1.6K0
Google JavaScript API 的使用
您可以使用JavaScript客户端库与Web应用程序中的Google API(例如,人物,日历和云端硬盘)进行交互。请按照此页面上的说明进行操作。
拿我格子衫来
2022/01/24
3.1K0

相似问题

无法在Google地图中以标记为中心

20

不能让Google地图以带有角度的标记为中心

17

iframe中的Google地图不以标签/标记为中心

20

以Google地图API为中心的标记+地理定位

210

移动google地图中心javascript api

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档