什么是Splay树,红黑树,AVL树,B树和T树?
我正在寻找好的实施方案.
对于二分图,您可以将邻接矩阵替换为所谓的biadjacency矩阵:
二部图的邻接矩阵A,其部分具有r和s顶点,具有形式
A = O B
BT O
其中B是r×s矩阵,O是全零矩阵.显然,矩阵B唯一地表示二分图,它通常被称为它的双邻性矩阵.
现在,DAG是一个二分图,例如,您可以在拓扑上对其进行排序,并使U和V集合分别是奇数或偶数拓扑级别的节点.
这意味着,对于具有n个节点的DAG,我只需要(n/2)2矩阵(平均)而不是2矩阵.问题是,我不知道如何构建它.任何提示?
给定一个无向图,检测它是否包含循环的最佳算法是什么?
在跟踪被访问节点的同时进行广度优先或深度优先搜索是一种方法,但它是O(n ^ 2).有什么更快的吗?
首先是的,这是我的Perl课程的家庭作业项目.我不是在寻找答案(尽管那会很好).据我了解,我需要使用BFS和正则表达式来组织我的数据以供使用.我需要一些方向.我如何使用BFS?我是否使用大量堆栈并浏览堆栈中的每个项目?我应该使用巨型哈希表吗?有没有人解决过这个问题?你是怎么做的?我只是需要一些方向.这类似于BST吗?这可能不使用图形模块吗?这是否可以使用哈希值?
在调试工具栏上,您可以单击一个按钮,该按钮显示由所选单元格直接调用的单元格的有向箭头(我将这些直接先例称为"第一层").但是,当您Precedents在单元格上使用该属性时,它将返回单元格所依赖的工作表上的所有单元格.
例如,我有DT836以下公式的单元格:
=DP836+DR836+DS836
Run Code Online (Sandbox Code Playgroud)
"Trace Precedents"调试工具栏显示将这三个单元格连接到单元格的漂亮蓝色箭头DT836.
Range("DT836").Precedents 包含70,000+细胞范围(据我所知)无法区分依赖者与其先例的距离.
有没有办法用VBA识别这个?
我正在玩Perl的历史股市分析.一个方面涉及分析过去股票评级的研究公司的准确性.最基本的评级量表是买入,持有,卖出.然而,这些公司中有许多使用不同的术语,有些术语的规模超过3分.
我所拥有的是数百个不同公司(来自雅虎财经)发布的数千个升级/降级列表,如下所示:
Action From To
==================================================
Upgrade Add Buy
Downgrade Add Hold
Upgrade Hold Add
Downgrade Buy Outperform
Upgrade Hold Outperform
Downgrade Hold Reduce
Upgrade Add Outperform
Run Code Online (Sandbox Code Playgroud)
所以基本上它是一个比较列表,如A> B,D <C,B> C,D <A
我需要为每个研究公司提供一长串的这些比较,这是一个有序列表,如下所示:
A> B> C> D> E.
我已经考虑了很多这个问题并且无法提出解决方案.如果每次升级/降级只跳过一个增量,我想我可以做到但我无法绕过如何插入比较像C <A,它跳过两个增量.
有人有什么想法吗?
更新:
谢谢@ikegami.我用原始数据测试过,你是对的.
我还通过Graph :: Easy运行了一些数据,这些数据呈现图形.
码:
use Graph::Easy;
my $graph = Graph::Easy->new( );
# Note that these are all in 'Upgrade' direction
$graph->add_edge ('Hold', 'Add');
$graph->add_edge ('Hold', 'Buy');
$graph->add_edge ('Hold', 'Outperform');
$graph->add_edge ('Buy', 'Outperform');
$graph->add_edge ('Reduce', 'Hold');
$graph->add_edge ('Add', …Run Code Online (Sandbox Code Playgroud) 我需要在N阶直接无环图上找到拓扑排序的最大数量.我通过在各种直接非循环图上运行深度优先搜索算法进行检查,看起来它是在图上运行DFS后创建的深度优先搜索算法林的大小.或许我完全错了或错过了什么.我还需要证明一下.任何帮助将不胜感激.谢谢.
math graph-theory combinatorics topological-sort directed-acyclic-graphs
我有一个边缘列表如下(简单示例):
DT <- data.frame(x = c(letters[1:7],"a","b","c","a","d","e","f"), y = c(letters[1:7],"b","a","a","c","f","f","d"))
> DT
x y
1 a a
2 b b
3 c c
4 d d
5 e e
6 f f
7 g g
8 a b
9 b a
10 c a
11 a c
12 d f
13 e f
14 f d
Run Code Online (Sandbox Code Playgroud)
然后我使用以下代码绘制了这个图:
require(igraph)
myadj <- get.adjacency(graph.edgelist(as.matrix(DT), directed=FALSE))
my_graph <- graph.adjacency(myadj)
layout <- layout.fruchterman.reingold(my_graph,niter=500,area=vcount(my_graph)^2.3,repulserad=vcount(my_graph)^2.8)
plot(my_graph, vertex.size=10,
vertex.label.cex=1,
edge.arrow.size=0, edge.curved=TRUE,layout=layout)
Run Code Online (Sandbox Code Playgroud)

我现在想要的是提取所有封闭节点的集合.我不确定一个典型的符号会是什么样子,但我可以想象:
node set
1 a 1
2 b …Run Code Online (Sandbox Code Playgroud) 我有一个4 GB的文件,其中有大约20亿个有向边,格式为User1 FOLLOWS User 2,如下所示.
User1 User2
7 37
5 24
7 8383932
24 1
3 8538
37 7
DF = structure(list(User1 = c(7L, 5L, 7L, 24L, 3L, 37L), User2 = c(37L,
24L, 8383932L, 1L, 8538L, 7L)), .Names = c("User1", "User2"), row.names = c(NA,
-6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
等等.我希望能够有效地获得以下结果
User NumberFollowers NumberFriends
1 1 0
7 1 1
24 1 0
37 1 1
8383932 1 0
8538 1 0
5 0 0
3 0 0
Run Code Online (Sandbox Code Playgroud)
等等,其中NumberFollowers是带有链接的"User1"的数量,NumberFriends是他们也相互关注的追随者的数量.
我目前正在尝试使用
aggregate()
Run Code Online (Sandbox Code Playgroud)
然而,它似乎忽略了用户5和用户3没有朋友或关注者的情况,但他们自己跟随人. …
假设图G是有向无环图,其中'n'没有顶点.如果我从图表中删除所有边缘并使其完全断开,这会是DAG吗?
algorithm graph-theory directed-graph topological-sort directed-acyclic-graphs