问题标签 [adjacency-list]

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.

0 投票
3 回答
2683 浏览

php - PHP/MySQL:在邻接列表模型中检索单个路径

是否有任何有效的方法可以在不限制深度的情况下根据节点的 ID 在邻接列表模型中检索单个路径?就像我有一个名为“香蕉”的节点的 ID,我可以获得以下路径:食物 > 水果 > 香蕉

如果不可能的话,这不是一个大问题,但我想是否可以通过 while 循环或其他方式运行连接?直到父母变成0。

0 投票
1 回答
749 浏览

c - 邻接表中的边长

在邻接列表实现中放置边长的最佳位置在哪里?我使用这个网站作为参考。我在想的是把它放在边缘节点中,以便找到从一个顶点到另一个顶点的长度,你去一个顶点节点并找到它的连接边并访问相关成员。(参见链接页面上的第 5 部分:“实现的数据类型”)

这对我来说似乎听起来不错,但我浏览了许多网站,但没有网站确认这有效。我还记得在某处读到过,在相邻矩阵中实现长度要容易得多,但没有说是否可以在邻接列表中实现长度或者更难。

0 投票
1 回答
7022 浏览

php - 邻接表与嵌套集模型

我一直在研究 Adjacency List 和 Nested Set Model 以找到最佳的树解决方案。

到目前为止,我认为嵌套集模型的主要优点之一是我可以使用一个 SQL 查询和一些代码来获得一棵完整的树。但是更新/插入节点很复杂,整个树很容易损坏。

然后我偶然发现了这两个帖子:

具有单个查询的递归类别?

http://www.sitepoint.com/forums/showthread.php?t=570360

以下代码允许我将邻接列表与一个 SQL 查询一起使用。在我看来,邻接列表更容易更新并且不太可能破坏整个树。

你觉得这段代码怎么样?

生成多维数组来反映树形结构

准备一个带有嵌套节点的无序列表

0 投票
2 回答
583 浏览

sql - 从邻接列表中选择并从下到上排序

给定以下表结构:

是否有可能以首先返回孩子的方式查询它(自下而上)。

目标是将这些加载到 Zend_Acl 的addRole方法中,该方法需要在添加子项之前添加角色。

我当前的方法是次优的(并且可能是错误的),需要 2 个查询。一个获取所有叶节点(其中父节点为 NULL),另一个获取父节点排序的父节点(DESC)。

任何帮助总是非常感谢。

0 投票
2 回答
584 浏览

mysql - 邻接列表模型或嵌套集模型,我应该使用哪种数据模型来存储我的分层数据?

我必须将我的网络应用程序从 Twitter 获取的消息存储到本地数据库中。存储消息的目的是我需要以分层顺序显示这些消息,即用户通过我的应用程序输入的某些消息(即状态更新)是其他人的子节点(我必须将它们显示为父消息的子列表项)。我应该使用哪个数据模型邻接列表模型或嵌套集模型?我必须管理四种类型的消息,每个类别中的消息可以有两个子节点。这里还有一个问题是,我在这两种情况下看到(意识到)输入是手动控制的,即如何在嵌套列表中给出对邻接模型中父节点或右、左的引用。我的应用程序从 twitter 获取消息数据,例如:

所以它没有手册,任何数量的消息都可以随时可用。我如何在来自它的消息之间建立父子关系。目前,用户在对应于四种类型消息的不同窗口中输入消息,我的应用程序添加关键字并获取这些关键字以显示在差异窗口中。所有这些消息目前都是父消息。现在我如何让用户输入可以作为另一个子节点保存到数据库中的消息。

0 投票
4 回答
5820 浏览

php - 用于邻接列表显示的递归 PHP 函数

我有一个这样的数据库:

所以我试图捕捉我列出父母的树结构。我知道另一个选项(我认为是嵌套集?)但我现在要坚持这个。我现在正试图将数据从数据库中取出并放入 PHP 中的嵌套数组结构中。我有这样的功能:

所以我想提出的是某种嵌套的关联数组树,但我不知道该怎么做。似乎什么都没有写入我传入的数组,而且我在递归中有点迷失自己。任何人都可以帮助我克服这最后一个问题,这将导致如下结果:

而且我不太关心输出的具体形式。它将被转换为 JSON,我还没有处理编写客户端处理程序,所以不用担心确切的结构。

谢谢!

0 投票
2 回答
479 浏览

sql - 邻接模型中的复制

我需要创建一个复制邻接模型中的节点的 sql 存储过程(Sql Server 2008 - T-SQL)。

可以将表视为具有两列,Id 和 ParentId(FK 到 Id)。复制意味着所有的下属也需要被复制。

我认为使用 WITH 是一个好的开始,但我很好奇是否可以在不使用光标的情况下完成此副本。

0 投票
1 回答
2070 浏览

python - 如何动态调整 SQLAlchemy ORM 中预加载的递归深度?

我有一个两表分层设置,其中表 A 引用表 B,然后引用回表 A 中的不同记录,依此类推......但仅限于给定的递归深度。

我使用 SQLAlchemy 和声明性的方法很好地工作。我还成功地使用了表关系上的lazyjoin_depth属性的预加载。这是根据SQLAlchemy 文档

但是,这种安排在程序加载时将递归深度固定在 ' join_depth' 一次......但是根据我正在使用的数据,我知道我每次应该使用的递归深度。 如何更改每个查询使用的递归深度?

我考虑过摆弄join_depth基础 ORM 对象上的 master 属性,但这不起作用,因为我有一个多线程 scoped_session 应用程序,这会很危险(更不用说参数很难在运行时在 SQLAlchemy 中定位!)。

我也看过使用joinedload查询,但不知道如何改变深度。

我也知道通过CTEsWITH RECURSIVE在某些数据库中可用的 ' ' SQL 语法,但尽管如此,我想暂时避免这种情况,因为一些数据库仍然不支持它(SQLAlchemy 也不支持 - 至少目前没有,也没有很多方言定制)。

0 投票
2 回答
1571 浏览

ruby - 如何在 Ruby 中使用 BFS 存储地图并生成图形

所以我想这对于在 CS 中拥有 MSC 的人来说是一个经典问题。

我有 N 个元素,我也有距离。假设我有 3 个具有以下距离的元素。它是对称的,所以

它看起来像一个矩阵:

我的问题是:

  • 我怎样才能有效地存储它(什么数据结构)
  • 获得距离总和最小的链表的最有效方法是什么

在这种情况下,最好的是

其他情况:

我的印象是 BFS 可能适合这个。英文文档的链接很好,即使是亚马逊上的书籍......

0 投票
1 回答
2028 浏览

java - 寻找使用hibernate存储嵌套数据的有效方法

我一直在尝试找到一种有效的方法来表示 java/hibernate 中的嵌套数据。我最初的解决方案是使用自引用连接的父/子列表,但是在使用 SQL 构建报表时,这种技术存在明显的缺陷。我正在研究嵌套集和物化路径,但我希望有一种方法可以表示 hibernate 原生的嵌套数据,这对于通过 SQL 查询也很有效。