加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 生成随机约束图

发布时间:2020-12-16 07:16:14 所属栏目:百科 来源:网络整理
导读:我需要生成一个具有固定数量顶点的随机图.我每次都在寻找解决方案时遇到一些困难. 图规则 每个顶点将具有一个随机数量的连接,最多为N-1,其中N是顶点的总数. 顶点不能包含与自身的直接连接 顶点不能包含与其他顶点的重复连接. 如果顶点A连接到顶点B,则顶点B必
我需要生成一个具有固定数量顶点的随机图.我每次都在寻找解决方案时遇到一些困难.

图规则

>每个顶点将具有一个随机数量的连接,最多为N-1,其中N是顶点的总数.
>顶点不能包含与自身的直接连接
>顶点不能包含与其他顶点的重复连接.
>如果顶点A连接到顶点B,则顶点B必须连接到顶点A.
>每个顶点必须连接至少3个其他顶点.因此每个顶点将在[3,N-1]个边之间.

我在70%的时间内得到了正确的解决方案,但有时候我在图中相当远,那么就没有剩下有效的顶点了.我需要对顶点连接有什么约束来保证解决方案?

到目前为止我在做什么

>随机化[3,N-1]之间每个顶点的多个连接.
>检查连接总数是否均匀.如果A指向B,B指向A,那么图中的连接总数应该是偶数,否则就没有解决方案.如果是奇数修改顶点,那么总数是偶数.
>填写完全约束的每个顶点.因此,具有N-1个连接的顶点必须指向所有其他顶点.填写从该顶点到所有其他顶点的连接,并为所有其他顶点提供与完全约束的顶点的连接.
>按照约束的程度处理每个顶点.因此,通过生成的随机顶点索引处理所有具有N-2个连接的顶点,然后是N-3连接,然后是N-4等.
>如果新的随机索引有效,则连接它们然后继续,如果它无效则重新随机索引,直到获得有效值. (这些图表最多只能是7-15个节点,所以这不会花费很长时间).

一般来说,我到达最后2个顶点,但是这个方法没有剩下有效值.每个都需要1个连接,但它们已经相互连接.任何人都有更好的算法或对连接数量的额外约束可以帮助我吗?

如果存在偶数个边缘,应该有很多解决方案,但我上面的算法显然不能保证找到一个.

解决方法

>创建一个边数少于3的所有顶点的矢量. >随机选择矢量中的顶点. >复制已移除所选顶点的矢量(您可以交换选定的椎骨和最后一个并调整大小). >同时删除已连接到所选顶点的所有目标顶点. >从复制的矢量中选择一个顶点,并在两个选定的n个顶点之间的每个方向上创建一条边 >只要边长少于3的所有顶点的矢量不为空,重复步骤1..5

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读