问题标签 [adjacency-list-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 相邻列表模型树,防止循环
示例表:
我正在创建的树将在同一个表中有多个“root”用户(当 parent_id = NULL 时)。这些“root”用户可能会在某个时候从某个“叶”用户(没有任何人的用户)那里获得 parent_id。我的疑问是如何确保我不会创建类似于以下的“循环”:
示例树设计:
- 一个
- b
- C
- d
- e
- F
- G
如果用户“a”获取用户“g”作为其父级,则创建的循环将是:
问题:当用户“a”想要转到树中的用户“g”下时,检查用户“g”是否在用户“a”下的好方法是什么?(以便在这些特定情况下可以防止该动作)
需要考虑的关键点:两棵树合并为一棵树的情况经常发生。如果树中的级别数假设为 80,则进行检查以防止循环所花费的时间可能相当可观,这就是我正在寻找一种有效方法的原因。
编辑: 我目前的选择(尽管我持怀疑态度)是:
创建一个额外的列,显示表中每个用户的当前“root”用户。在这种情况下,每次“root”用户获得父用户时,他下面的每个人都必须更新为新的“root”用户,而我担心的是这会给服务器带来多大的压力,特别是如果有很多用户,如果“root”用户获得父母的频率很高。
在给他父母之前检查“root”用户路径。如果在上述情况下,用户“g”通过逐个循环遍历 g 以上的每个用户(查看他们的父级,一遍又一遍直到到达根目录)来检查他的路径,并发现根是用户“a” ,然后是的,可以阻止该操作,尽管我不确定这会对服务器造成多大的压力。如果有人有想法,请告诉我!
c++ - BGL反序列化的另一个问题
我正在尝试以图形格式序列化和反序列化数据。我的图表的定义如下。
在我看来,我在序列化过程中没有问题,而在反序列化部分有一些问题。事实上,在将这段代码添加到我的源代码之前,我没有链接错误:
我试图在这里阅读一些问题并阅读 Boost 手册,但它们并没有解决我的问题。特别是,我有这个错误:
顺便说一句,我正在序列化和反序列化字符串和无符号整数,这似乎是 boost 支持的“本机数据类型”:
编辑是的,我将我的源代码链接到 BGL 和 Boost 的序列化。这是通过这部分 CMake 脚本实现的:
php - 从序列列表创建邻接结构
我想从我的 php.ini 序列列表中构建一个邻接列表。问题是,我的序列列表在数组中,它看起来像这样:
现在,我想对其进行转换,使其处于邻接列表模型中,如下所示:
因此,我的 $arr1 将在表中表示树视图(jsTree)的“parentId”。
可以请有人指出我正确的方向,或者我应该从哪里开始寻找解决方案。
谢谢你。
r - 在 R 中正确绘制大型邻接矩阵
我有一个相当大(但非常稀疏)的邻接矩阵(500x500),我试图在视觉上表示。在我看来,类似于力有向图的东西是我最好的选择,在试图找出实现这一点的最佳方法时,我遇到了不止一个 R 资源。最有帮助的是http:/上的网络可视化/kateto.net/network-visualization虽然我以前从未使用过 R,但它似乎为这种可视化提供了许多有用的功能。
我设法在下面生成了一个图,但图像相当小并且节点是堆叠的。
如果我打印到 pdf 而不是 PNG,分辨率会稍微好一些,但我仍然有堆叠问题。因此,我的问题是,我将如何在 R 中正确绘制一个大的邻接矩阵来解决这些问题。
到目前为止,我的代码如下(最后几行我尝试了几种不同的方式来绘制我的数据)。非常感谢任何提示。先感谢您。
为方便起见,我在https://github.com/BStricklin/DataViz上传了引用到我的 GitHub 的两个文件。
编辑:对于任何想知道我最终是如何做到这一点的人,我必须使用 MATLAB 并使用图形和绘图函数。它看起来和 R 图像一样糟糕,但是通过对节点的一些自定义和缩放功能的使用,它运行得很好。不过,我仍然会对如何在 R 中做到这一点感兴趣。
python - 如何更改此 prim 的算法函数以接收并返回邻接列表?
我想在结构为邻接列表的图中找到最小生成树。我能够使用 Prim 算法找出 MST,但我当前的解决方案不使用邻接列表。
我需要它来取回这样的东西:
谢谢你!
sql-server - SQL复杂递归CTE
我在 SQL Server 2014 中工作。我有一个奇怪的数据层次结构情况。(至少,我以前没有经历过类似的事情。)
在我的层次结构中,有几个根/最高级别的对象。根级别以下的每个对象都映射到它上面的一个且只有一个对象。并非每个节点路径的长度都相同。例如,一条路径中可能有 2 个对象级别,而另一条路径中可能有 20 个对象级别。
层次结构中的每个对象都有一个IsInherited
属性,以及一些其他属性(称为它SomeAttribute
)。该属性指示给定对象是否从其最直接IsInherited
的父对象继承 的值。SomeAttribute
自然地,如果一个对象的IsInherited
属性是'Y',那么,给定的对象SomeAttribute
从其最直接的父级继承值(反过来,它可以继承其最直接的父级的值,等等)。否则,指定对象的SomeAttribute
值。
现在,以上所有情况都不一定不常见。使这种情况不常见的是这种继承的特定实现。此层次结构存储在单个表中(这是否使其成为邻接列表模型?),如果其属性为“Y” ,SomeAttribute
则不会为给定对象/行填充的值。IsInherited
我的目标是返回SomeAttribute
层次结构中所有对象的值。
表格示例如下:
这为我们提供了以下节点路径:
因此,使用此示例表,我希望返回:
我知道这可能需要递归 CTE。我正在努力为此编写 SQL。如何返回我想要的输出?
sorting - jqGrid TreeGrid 不排序,除非节点被分组
我有一个 jqGrid TreeGrid,我从服务器加载的排序很好,其中节点包含资产(叶子)。一些资产被分组到组件中,这些节点是可扩展的。当树第一次加载时,树看起来很完美,并且在所有节点上都正确排序。所有叶节点都与它们应有的完全一样,并且较低级别的叶节点也与父节点相应地排序,无论单击什么可排序的列标题。
但我也允许用户在没有分组的“平面视图”中加载树。树再次从已根据第一列排序的服务器加载。平面视图删除了装配布局并将所有资产作为叶子返回。该树包含服务器提供的完美顺序的所有节点。但在“平面视图”中,树根本不再通过单击任何可排序的列标题进行排序。因此,我的代码中的某些内容很可能没有正确定义。
这是 TreeGrid 创建代码(使用版本 4.5.4):
以及从数据库获取资产的服务器端 PHP 函数:
以及使用资产加载树的 javascript 函数:
为了在页面加载时初始加载树,我们使用 php 以分组模式将资产放入数组中,使用 php json_encode() 将其编码为 JSON,然后我们将调用 loadTree($assets) 嵌入到 document.ready( ) 事件如下:
当用户想要从组视图更改为平面视图时,将向服务器发送一个 ajax 请求,然后以 JSON 编码字符串返回的结果资产被传递给相同的 loadTree(assets) javascript 函数。这里没有 AJAX 调用,只是处理成功的 AJAX 返回的函数:
谁能告诉我为什么这棵树在初始加载时排序完美,但在平面视图中加载时,树本身按名称完美排序,但单击列标题没有明显变化?
以下是在平面视图中加载资产时 AJAX 提交返回的完整 JSON:
stored-procedures - 使用 ON DELETE CASCADE 删除深度嵌套的子树
我正在研究删除存储在邻接表模型中的树的子树的方法。我设置了这段代码,它使用 ON DELETE CASCADE 删除了一个完整的树。当我将max_设置为 > 14 的值时,MariaDB (Windows) 会抛出此错误:
得到错误 193 ' mydb
。tree
, 约束外tree_ibfk_1
键 ( parentid
) 引用tree
( nodeid
) ON DELETE CASCADE' 从 InnoDB
是我的代码还是数据库的限制?