问题标签 [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 投票
2 回答
408 浏览

c++ - 如何提高邻接表分配速度?

在确定邻接矩阵不适用于80513个节点和5899882 个边之后,我决定应用adjacency list。这是我第一次实现邻接表,基本上我决定应用向量方法的向量。

因此,例如,vectorOfVectors[5]将包含邻居节点5的邻居。我正在使用的数据集可以在这里找到

目前我已经编写了这段代码,它可以正常工作,但是在我的计算机上需要 26 秒(i5 2.4,6 gb ram,运行 Win7)。我想知道是否可以改进我的代码以降低分配速度。

PS:我正在使用fstream库并从.csv文件中读取。

0 投票
1 回答
729 浏览

mysql - 选择树节点的所有后代

我正在使用邻接列表模型在 MySQL 数据库中存储(非常动态的)树结构。我需要一种方法来选择给定节点的所有后代,最好是通过对存储例程的一次调用。我知道嵌套集模型会让这件事变得简单,但它会让其他事情变得非常困难,所以不幸的是它不是我的选择。这是我到目前为止所得到的:

这个想法是继续向下钻取并将子代附加到后代表,直到我到达叶子。然后我可以从程序外部访问临时表......我希望。(我不能从存储的函数返回结果集,这真的很糟糕。)

我需要以某种方式遍历结果并为每一行发出一个新的 SELECT 语句。我读过游标在这里可能会有所帮助,但我不知道如何。似乎使用游标您必须预先选择所有内容,然后进行迭代。

0 投票
1 回答
1122 浏览

scala - 用 HashMap[Int, Vector[Int]] (Scala) 表示图(邻接表)?

我想知道如何(如果可能)通过HashMap[Int, Vector[Int]]. HashMap当然是可变的。

目前我将它设置为HashMap[Int, ArrayBuffer[Int]],但我可以更改 ArrayBuffer 中的每个单元格的事实让我感到不舒服,即使我相当确定我没有这样做。我会使用 aListBuffer[Int]但我希望快速随机访问邻居,因为我需要在图表上进行快速随机游走。AVector[Int]会解决这个问题,但有没有办法做到这一点?

据我所知(在 REPL 中试过),这是行不通的:

我需要能够随时附加到它,也需要随机访问其中的任何元素(给定索引)。这可能吗?

谢谢!-kstruct

0 投票
2 回答
552 浏览

sql - sql邻接列表CTE:过滤/限制为仅完整路径

我已经构建了一个函数/查询,该函数/查询将 [paths] 作为邻接列表返回,如下所示,它运行良好,但是我试图弄清楚如何将结果限制为仅完整的路径,而不是深度(n)的每次迭代。

例如,在下面显示的以下结果中,只有这些是有效的,我想要返回或过滤的完整路径:

测试

select * from fn_Get_SubTreePaths('S11', 11) order by DPath

结果

换句话说 - 我如何才能确定仅包含遍历/深度中最底部项目的那些路径?

任何帮助将不胜感激!我正在阅读 Joe Celko 为 Smarties 编写的 SQL 中的树和层次结构 - 但到目前为止,我还没有思考如何正确限制结果......

这是代码;

CTE 使用的视图:

0 投票
3 回答
3213 浏览

c# - 图构建的邻接表

有人可以告诉我我必须制作什么样的邻接列表来构建具有适当节点和链接的图形吗?我必须创建一个树结构来定义 ajdacency 列表吗?还是有其他方法?
现在对矩阵不感兴趣,谢谢。

例如,我可以在边缘的其他节点的每个位置与其他 arralists 一起创建一个数组列表,以具有如下所示:

所以我有和arraylist或我的邻接列表[a[c],b[c],c[a,b]]

0 投票
0 回答
436 浏览

mysql - 文件权限的嵌套集或邻接列表模型 (MySQL)

问题:

在 MySQL 数据库中存储所有用户文件/文件夹权限时应该使用什么设计?

细节:

我无法确定嵌套集是否需要太多插入时间,或者邻接列表是否需要太多访问分层数据的时间。我很确定随着文件/文件夹数量的增加,嵌套集会花费很长时间。例如,插入一个节点(行)需要在遍历该节点之后更新每个单个节点。是否可以在路径上使用字符串标记化(即/home/user/pictures --> /, /home, /home/user)并在查询中使用它,相当于可变长度邻接列表模型?第三种选择是拥有一个parent_folders执行完全相同功能但使用更多空间而不是更多时间的表。

以下是对filesfolders表的简要描述:

文件:

文件夹:

这是上面的两个表,经过修改并带有潜在parent_folders表:

文件:

文件夹:

父文件夹:

0 投票
3 回答
299 浏览

php - 使用递归 PHP 组织 mySQL 数据

我正在为客户创建一份问卷,要求将问题按 3 层级别组织。我已经成功创建了 UI,但是在过去的 3 个小时里我一直在尝试从数据库中提取数据,以使所有内容都加载到正确的位置。数据库是由客户端组织的,所以我无法控制它:

因此,任何 parentId 为 0 的内容都是顶层,并且将包含 parentId 为 1 的任何第二级内容,依此类推。令人困惑的是,我几乎无法理解这一点,但这就是我被告知这样做的方式。

什么方法是执行这样的事情的最佳方式?下面附上了我用作参考的另一个问题的示例(尽管不起作用)

任何帮助将不胜感激。干杯

0 投票
4 回答
5974 浏览

mysql - MySQL - 邻接列表模型 - 获取深度

我有一个组织表,其中包含一个id、一个parent_id和一个name列。此表中大约有 50k 行。只有一个顶级父级,其余的都在此之下。在 Oracle 中,我可以使用level伪列轻松检索特定组织的当前深度:

我不知道在 MySQL 中执行上述操作的正确方法是什么。我需要在一个查询中获取整个树以及节点的深度。

StackOverflow 上有很多与此有关的问题,但似乎都没有一个很好的答案,主要是指向具有可疑解决方案的博客的链接。当然,这以某种直接的方式是可行的吗?

不幸的是,以任何方式修改表都不是一种选择,因此嵌套集是不可能的。

0 投票
1 回答
775 浏览

graph - 图和树表示

谁能告诉我如何通过邻接矩阵和列表使用向量表示图形。还有如何在 c & c++ 中表示树。如何在 C 中使用邻接矩阵和列表来表示图形。

0 投票
1 回答
1302 浏览

php - 如何在 html + php(codeIgniter) 中渲染树

我有一个邻接模型列表,这是查询:

这是一个使用邻接模型列表进行 24 级深度的查询

然后我做了这个:

它只渲染每一行的字段,我真的不知道热使它分层,我正在使用codeigniter,在这里使用行或对象更好吗?

我需要做这样的事情:

没有重复是可能的吗?