什么是自然密集图的例子?

时间:2014-12-12 05:02:37

标签: algorithm data-structures graph sparse-matrix

图形对于模拟现实世界的现象和关系非常有用。

从广义上讲,图形数据结构和算法分为两类:

但是,在我能想到的每种情况下,真实世界的图表都很稀疏。例如:

  1. 网络形成稀疏图表(每个网站链接到少数其他网站)
  2. 社交网络形成稀疏图表(每个人都知道少数其他人)
  3. 电气网络形成稀疏图形(大多数电路元件仅影响附近的少数其他)
  4. 道路网络形成稀疏图表(每条道路都链接到少数其他道路)
  5. (注意"少数"与站点数/人/元素/道路/等相比。)

    但是,我从来没有找到密集图的算法和数据结构的用例。
    我记得遇到的每一张图都变得很稀疏。

    我需要使用密集图形算法来处理哪些真实世界的图形?

    请注意:是的,我知道每个人彼此认识的一小群人会形成一个密集的图表,但那种不是那种我问的问题,因为:

    1. 社交网络软件永远不会为少数人编写
    2. 任何算法都适用于小数据;不需要密集图算法。
    3. 这意味着我也不会寻找愚蠢的例子,例如"稀疏图的补充"无论是。
      是的,那些是密集的,但除非你能给我一个实际感兴趣的问题的例子,并且用原始的稀疏图来合理解决,那就不行了回答我的问题。

3 个答案:

答案 0 :(得分:0)

稀疏图的补充是密集的(想想给定网页没有链接到的所有网站)。所以有一个开始。

脱离我的头顶......

  • 小型社交网络(例如俱乐部中的人可能是与俱乐部其他大部分人共享的Facebook朋友)
  • 图表的传递性闭包,或至少部分(例如朋友的朋友)
  • 真正写得很差/紧密耦合的代码(想象一个有向图,如果A引用B,则A类指向B类;可能作为成员,方法的返回值等)

更一般地说,如果您想要更密集的图表,请尝试放宽某些旅行限制。

答案 1 :(得分:0)

嗯,图表越密集,它越接近完整,并且带有加权边缘的完整图形通常更容易表示并且仅仅作为方形矩阵思考,可能有一些无穷大或负无穷大分散到代表缺失"边缘"。或者,它可以变得接近完整的二分图,其也可以表示为矩阵(只是沿着两个轴使用不同标签集的矩阵)。 Assignment Problem通常表示为关于矩阵的问题,而不是关于密集边缘加权的二分图。

我认为使用密集图算法的一个原因是为了保证密集图上的良好最坏情况行为。

还有一些问题与图形的补码上的其他问题有关 - 即图形中每对顶点之间都有边缘,如果它们之间没有边缘的话。原版的。例如。如果你在一个图表中寻找最大集团,其中包含超过30%的可能边缘(真的在这里猜测),你认为这个集团会很大,你可能会更好创建补图,然后寻找它的minimum vertex cover,因为补图中这样的顶点覆盖的补集将是原始图中的一个集团。虽然这两个问题都是NP难的,但是当存在小覆盖时,最小顶点覆盖要快得多,将O(1.2378 ^ k * n ^ O(1))用于大小为k的覆盖(对应于大小为nk的集团)。 O(1.1888 ^ n)代表最大集团。

答案 2 :(得分:0)

我能想到的一个例子是加密货币,其中每种货币都可以转换为其他所有货币。为了在市场波动时跟踪所有转化率,您需要一个密集的图形表示和算法。