当前位置: 首页 > 知识库问答 >
问题:

无向加权图的实现

白学
2023-03-14

我想知道什么是实现无向加权图的有效方法。我想在上面执行Prims和Kruskal算法。我知道邻接列表,但这不会浪费内存;为。假设我有两个顶点A和B,由权重为“x”的边连接,所以我需要在邻接列表中添加两个条目:

A,B,x
B,A,x

我是不是漏掉了什么?

共有1个答案

索曾琪
2023-03-14

邻接列表是实现图的高效内存方式,而不是邻接矩阵。

实际上,你有两个选择。

  • 如果你想要更少的时间和更多的内存,你应该做你写的东西。
  • 如果需要更多的时间和更少的内存,可以实现边A、B、X其中A>B。但是,在获取任何顶点的相邻顶点时,您将花费大量的时间。

你说了算。但如果您要处理的节点少于数百万个,则不首选第二个项目符号。

 类似资料:
  • 问题内容: 使用Redis实现加权图的最佳方法是什么? 我们将主要在图上搜索最短路径(可能使用Dijkstra算法) 目前我们考虑将边缘添加到Redis 对于每个节点,我们将使用nodeId作为键,并使用引用节点的键的sortedset,sortedSet中每个nodeId的分数就是边缘的权重。 你怎么看?如果我错了,请纠正我,但这里唯一的遗憾是,对于sortedset中的下一个节点的每个查询,我

  • 我知道Bellman Ford算法使用负权值,但我希望我可以修改我现有的最短路径方法。

  • 背景:我是图论的新手,特别是“图割”。请不要太技术和速度。谢谢。 假设我有一个加权无向连通图G=(V,E)。我有一个变量a,它包含一个整数值,我想从图G中删除/裁剪所有权重低于a值的边。 问题1:如果图论中已经存在这一点(我看到了max-cut、min-cut、s-t cut,等等),它怎么称呼? 问题2:我如何使用数学符号正式表达/定义这种方法。 谢谢你的建议。

  • 假设我们有一个加权无向图,其中,对于任意两个顶点,都有一条唯一的路径连接它们。有n个顶点和1个边,每条路的成本是c\u i。 现在,如果连接两个给定顶点的每条路径都有一定的成本,这取决于它所经过的道路,那么我们如何有效地计算所有城市对之间的总成本? 例如,每条道路的成本可以是它经过的第一条道路和最后一条道路的总和,或者是它经过的每条道路的成本的某些幂的总和,或者是成本的最大值减去它经过的道路的最小

  • 我试图将这个问题概念化,然后为它编写Java代码。我知道这里有一些讨论,但我没有看到很多回答者,所以我想通过写下我的想法来重申这个问题,我希望从你们那里得到一些反馈。谢谢 我的想法:对于每个叶节点,找到从根节点到它的最长路径。对于所有路径,找到最大路径长度 然而,这不就是蛮力吗,对此还有更优雅的解决方案吗? 我听说过使用Djikstra的负权重算法,但在某些地方它说这只适用于特定情况?我也看到了关

  • 我有一个文本文件中的数据,我想创建一个无向加权图,因为我从文件中读取它。数据由tweet组成。对于tweet中的每个单词,我在图中创建一个节点。对于其他单词,我在它们之间创建一条边,并为它们的权重增加1。因此边缘的权重应该是所有tweet中出现的两个单词的数量。 我创建一个图表: 我使用两个节点的ID获取它们之间的边: 但是,即使图形是无向的,也无法找到从id2到id1的边。因此,我使用了以下方法