51nod 1676 无向图同构 hash

题意

如果一个无向图重标号后与另一个无向图完全一致(即对于任意两点,他们之间的边在两个图中都存在或都不存在),则称两个无向图同构。
给定两个n个点m条边的无向图,判定两个无向图是否同构。
n<=200,m<=4000

分析

初始时设每个点为点权为1,之后进行n次迭代,每次迭代每个点的值更替为与其相邻的点和他本身上一次迭代后的权值排序后计算出的hash值。
如果两个无向图同构则n次迭代后,所有权值排序后应该对应相等。
1.如果是两个同构的无向图,则最后算出来的值排序后必定相同。
2.如果是两个不同构的无向图,这张图上的权值相当于是基于这张图的形状而给出的随机值,
两个不同构的无向图上的权值相等的概率只有1/p,p为hash时的取模数,当p取非常大时几乎可以认定两个图同构当且仅当hash值相同。
也可以通过多取几个取模数、增加迭代次数等增加正确率,但此题只需取一个p,迭代n次已经完全足够了。
复杂度O(T*nmlogn)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值