首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用n个公共属性连接图中的边?

如何用n个公共属性连接图中的边?
EN

Stack Overflow用户
提问于 2022-09-06 14:06:54
回答 2查看 41关注 0票数 0

我想要创建一个NFT图,其中每个nft是一个节点,如果两个nfts至少有n所有者,它们之间就会有一个边缘。

例如:

nft1拥有所有者'a','b','c','d','e‘

nft2拥有所有者'g','h','e','s','a','b','d‘

nft3拥有'g','h','s','c‘

这里是n=3。

所以现在:

nft1和nft2之所以相连,是因为它们有四个共同的所有者('a','b','d','e')

nft2和nft3之所以相连,是因为它们有三个共同的所有者(“g”、“h”、“s”)

但是 nft1和nft3是而不是连接的,因为它们只有一个共同的所有者('c')

描述图的结果

有人知道我怎么能做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-06 14:24:21

代码语言:javascript
复制
SORT nfts into order of decreasing number of owners
LOOP A over sorted nfts
   LOOP B over sorted nfts starting at A+1
      Count common owners of A and B
      IF count > N
          Add edge between A and B
票数 0
EN

Stack Overflow用户

发布于 2022-09-06 22:02:35

https://stackoverflow.com/a/26028865/585411背后的想法适用于这里。

  1. 对于每个NFT,都会发出(owner, NFT)对。
  2. MapReduce按所有者分组。
  3. 对于每个(owner, [NFT1, NFT2, ...]),都会发出带有i < j((NFTi, NFTj), owner)对。
  4. MapReduce按NFT对分组。
  5. 对于每个拥有足够所有者的((NFTi, NFTj), [owner1, owner2, ...])对,发出(NFTi, NFTj)(NFTj, NFTi)对。
  6. MapReduce组
  7. 每个NFT现在都有一个边缘列表。

这可以用一个真正的MapReduce以分布式方式完成。或者像上面描述的那样使用假的MapReduce。或者使用hashmap,如果您的所有者和NFT相对较少。但逻辑模式保持不变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73623424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档