找到所有周期(或每一个周期的初始节点)在一个非常大的有向图(12米节点,6.7米的边缘)

7视图(30天)
你好,如果任何人都可以帮我出这个问题我一直停留一段时间,将会很感激你的帮助,
上下文
我有大约700万之间的交易账户,事务是一行描述买方帐户和卖方帐户是谁,和销售的对象。所以一行的一个例子是:[0 x3,年代:0 x1, O:中的Object1)或更好的理解 0 x1出售中的Object1 0 x3
我有买方和卖方即连接对象 0 x1-object1 - > 0 x3-object1 (因为一个帐户可以出售多个不同的对象)和创建了一个有向图的数据创建一个历史的所有对象之间传输账户。
问题:
我希望所有的账户的列表对象返回给账户它最初从出售,例如:
如果我有交易: Account1-Object1 - > Account2-Object1 - > Account1-Object1 然后输出应该:Account1 中的object1
因为资产最终骑回Account1。
当前Non-Feasible解决方案:
这是解释为:0 xc中的Object1卖给0 x5, 0 x5出售Object2 0 xc xc Object3卖给0 x0, x5 Object5卖给0 x0,等等
到目前为止我的代码:
%连接对象买方和卖方
销售。BuyerAndObject = strcat(字符串(sales.Buyer),“-”字符串(sales.Object));
销售。SellerAndObject = strcat(字符串(sales.Seller),“-”字符串(sales.Object));
买家= ' (sales.BuyerAndObject);
卖家= ' (sales.SellerAndObject);
%有向图:卖方- >买家
G =有向图(卖方,买方);
%,然后我一直在使用allcycles (G)找到所有的周期,
周期= allcycles (G)
然后返回每个周期的第一个节点,但数据太大,我有大约1200万个节点和670万条边和时间去完成超出合理。我不是擅长图论,不知如何,我需要做什么,非常apreciated和任何的帮助。

接受的答案

克里斯汀Tobler
克里斯汀Tobler 2021年8月9日
编辑:克里斯汀Tobler 2021年8月9日
你试着用“MaxNumCycles”只计算第一个100 / 1000/1 e4周期?可能会提供一些暗示,如果是计算每个周期低于可接受的你的问题,或者如果有很多周期。
它也可能是值得看一看其中的一些周期,确保他们都是合法的结果(即,也许你看到几个周期,可以以不同的方式重组,这可能会导致有更多的周期比你期望返回)。
7评论

登录置评。

更多的答案(0)

类别

找到更多的在图和网络算法帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!