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

自然稠密图的例子有哪些?

郝昊天
2023-03-14

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

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

  • 那些对稀疏图有用的(例如邻接列表,约翰逊算法)
  • 那些对稠密图有用的(例如邻接矩阵、Floyd-Warisher)。

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

  1. Web网络形成稀疏图(每个站点都链接到其他几个站点)
  2. 社交网络形成稀疏图(每个人都认识几个其他人)
  3. 电气网络形成稀疏图(大多数电路元件只影响附近的少数电路元件)
  4. 道路网络形成稀疏图(每条道路都连接到其他几条道路)

(请注意,“很少”是相对于场地/人员/要素/道路/等的总数而言的。)

然而,我从来没有找到密集图的算法和数据结构的用例。
我记得遇到的每个图都被证明是稀疏的。

请注意:是的,我知道每个人都认识的一小群人形成了一个密集的图表,但这不是我要问的那种情况,因为:

  1. 社交网络软件从来不是为少数人编写的

这意味着我也不是在寻找像“稀疏图的补码”这样愚蠢的例子<是的,这些都是稠密的,但除非你能给我一个实际感兴趣的问题的例子,并且不能用原始稀疏图合理地解决,否则这不能回答我的问题。

共有3个答案

东门楚
2023-03-14

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

戚俊美
2023-03-14

嗯,一个图变得越密集,它就越接近完整,一个带有加权边的完整图通常更容易表示,并且简单地认为它是一个正方形矩阵,可能会有一些无穷大或负无穷大分散在周围来表示缺少的“边”。或者,它可能会变得接近一个完整的二部图,它也可以表示为一个矩阵(只是一个沿着两个轴使用不同标签集的矩阵)。所以例如,分配问题通常被表示为一个关于矩阵的问题,而不是一个关于密集边加权二部图的问题。

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

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

秦彦君
2023-03-14

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

从我的头顶...

  • 小型社交网络(例如,俱乐部中的人可能与俱乐部中的大多数其他人都是Facebook朋友)

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

 类似资料:
  • 我正在构建一个模型,该模型使用递归层(GRU)将一个字符串转换为另一个字符串。我试过将稠密层和时间分布(稠密)层作为最后一层,但当使用return\u sequences=True时,我不理解这两个层之间的区别,尤其是因为它们似乎具有相同数量的参数。 我的简化模型如下: 网络的总结是: 这对我来说是有意义的,因为我对时间分布的理解是它在所有时间点应用相同的层,因此密集层有16*15 15=255参

  • ResNet中的跨层连接设计引申出了数个后续工作。本节我们介绍其中的一个:稠密连接网络(DenseNet) [1]。 它与ResNet的主要区别如图5.10所示。 图5.10中将部分前后相邻的运算抽象为模块$A$和模块$B$。与ResNet的主要区别在于,DenseNet里模块$B$的输出不是像ResNet那样和模块$A$的输出相加,而是在通道维上连结。这样模块$A$的输出可以直接传入模块$B$后

  • 我正在训练一个神经网络来计算3x3矩阵的逆。我使用的是一个具有1层和9个神经元的Keras密集模型。第一层上的激活函数为“relu”,输出层上的激活函数为线性。我正在使用10000个行列式1的矩阵。我得到的结果不是很好(RMSE有数百个)。我一直在尝试更多的层次、更多的神经元和其他激活功能,但收获很小。代码如下: 我在网上查过,似乎有关于逆矩阵近似问题的论文。然而,在更改模型之前,我想知道是否还有

  • 问题内容: This is my test code: The output is: 但是发生了什么? 文件上说: 注意:如果层的输入的秩大于2,则为 在初始点积之前先展平带核。 当输出被重塑时? 问题答案: 目前,与文件中所述相反的是, 层[应用在输入张量的最后一个轴上](网址:keras.com/https://github- 团队/KERA/问题/10736#问题建议-406589140):

  • 在过去的三天里,我一直在学习生命周期主题,现在它们对我来说开始有意义了。然而,我做了很多实验,但没有设法以一种会导致运行时不安全行为的方式指定生命周期,因为编译器似乎足够聪明,可以通过不编译来防止此类情况。因此我有以下问题链: Rust编译器会抓住每一个使用不安全生命周期说明符的情况,这是真的吗? 如果是的话,那么为什么Rust需要手动指定生命周期,而它可以通过推断不安全的场景来自行指定生命周期?

  • 引用脚本的内容: ; NSIS 中自动替换背景图片的例子 ; 需要新版的 nsWindows 插件与头文件 ; 脚本编写: ; X-Star @ ; zhfi @ !addincludedir .\include !addplugindir .\plugins ;替换图片的时间间隔(ms) !define TimeForChange 3000 ;图片数量范围 !define MinBg