趣题:怎样向别人证明两个图不同构?

若干个顶点(vertex)以及某些顶点对之间的边(edge)就构成了一个图(graph)。如果图 G 和图 H 的顶点数相同,并且它们的顶点之间存在着某种对应关系,使得图 G 中的两个顶点之间有边,当且仅当图 H 中的两个对应顶点之间有边,我们就说图 G 和图 H 是同构的(isomorphism)。直观地说,两个图是同构的,意思就是它们本质上是同一个图,虽然具体的画法可能不一样。下面的两个图就是同构的。其中一种顶点对应关系是: 1 – a, 2 – c, 3 – d, 4 – b, 5 – e, 6 – g, 7 – h, 8 – f 。

目前,人们还没有找到任何高效的算法,能迅速判断出两个图是否同构。在普通计算机上,判断两个图是否同构,这需要花费大量的时间。因此,人们经常以图的同构为例,来解释复杂度理论和现代密码学中的诸多概念。

假设你家里的计算机十分强大,能很快判断出两个图是否同构,还能在两个图确实同构的情况下,给出一种顶点对应关系。但你的同桌家里的计算机却非常弱,没法做什么大型运算。课堂上,老师向全班展示了两个很复杂的图,不妨把它们叫作图 G 和图 H 。老师布置了一个特别的选做题:判断出这两个图是否同构。每个同学都可以提交答案,答案里只需要写“是”或者“不是”即可。按时提交答案并答对者,期末考试会获得 5 分加分;按时提交答案但答错了的,期末考试成绩将会倒扣 30 分;不参与此活动的同学,期末考试既不加分也不扣分。显然,每个同学都不敢随意提交答案,除非百分之百地能保证自己获得的答案是正确的。回到家后,借助家里的超级计算机,你很快判断出了这两个图是同构的。你给你的同桌发送了信息:“我已经算出来了,这两个图是同构的。”但是,你的同桌却回复说:“你不会是骗我的吧?”你打算怎样说服他,这两个图确实是同构的呢?

你只需要把两个图的顶点对应关系发送给他即可。他家里的计算机非常弱,没法找出满足要求的顶点对应关系。但若有了一个顶点对应关系,验证其确实满足要求,这是非常容易的,几乎不需要什么计算量——只需要枚举图 G 里的顶点对,看看它们之间有边是否当且仅当图 H 中的对应顶点之间有边即可。完成验证之后,他就知道了,这两个图确实是同构的。

总结起来,刚才我们面对的是这样的困境:

  • 你拥有无限的计算能力。
  • 对方的计算能力非常有限。
  • 你想要向对方证明,图 G 和图 H 确实是同构的。

判断两个图是否同构可能很难,但若给出一段证据后,很容易验证两个图确实同构,上述困境也就得以解决了。这就是复杂度理论中 NP 问题的大致意思。

但是,如果把两个图同构的证据直接交给你的同桌,你的同桌或许又会用同样的办法去帮助别人,最后搞得班上所有人都获得了加分,这就没意思了。有没有办法说服你的同桌,这两个图确实是同构的,但却又让他无法拿到这两个图同构的证据呢?也就是说,现在我们面对的是这样的困境:

  • 你拥有无限的计算能力。
  • 对方的计算能力非常有限。
  • 你想要向对方证明,图 G 和图 H 确实是同构的。
  • 你不想泄露这两个图的顶点之间的对应关系。

这看上去似乎是不可能实现的——不把顶点之间的对应关系告诉对方,怎样说服对方两个图确实是同构的呢?然而,这竟然是能做到的。整个过程分为很多轮进行。在每一轮里,你随机生成一个与图 G 同构的图 G′ 。如果图 G 和图 H 真的同构,那显然图 G′ 也与图 H 同构。然后,你把图 G′ 发送给对方。对方可以随机提出下面两个要求之一:提供 G′ 与 G 同构的证据,或者提供 G′ 与 H 同构的证据。不管对方提出的是哪个要求,你都可以放心大胆地把证据发给对方,这不会泄露图 G 和图 H 之间的对应关系。另外,如果图 G 和图 H 不是同构的,那么这两个要求你不可能都做得到;面对对方的抽查,总能如约作答的概率是很低很低的。很多轮过去后,对方便慢慢确信,图 G 和图 H 真的是同构的了。在现代密码学中,让对方相信命题的正确性,但又不泄露任何其他的信息,这就叫作“零知识证明”(zero-knowledge proof)。

现在,让我们再来看一种情境。去掉上述第四点要求,但把第三点要求改一下:

  • 你拥有无限的计算能力。
  • 对方的计算能力非常有限。
  • 你想要向对方证明,图 G 和图 H 确实是同构的。

你打算怎么办?注意,你的办法应该普遍适用于一切情况。在某些特定的情况下,你当然可以告诉对方,“这两个图显然不同构,因为它们的边数就不一样多”,但这不适用于两个图的边数一样多的情况。

isomorphic graphs 图同构相关推荐

  1. 图论基础(一)图的引入和基本概念

    目录 顶点&边 问题引入 七桥问题 问题描述: 故事版: 正经版: 图论基础知识--顶点 图论基础知识--边 有向图&无向图 问题引入 度&图的同构 图的同构 解释一下 同构要 ...

  2. 关于图计算图学习的基础知识概览:前置知识点学习(PGL)[系列一]

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 0.1图计算基本概念 首先看到百度百科定义: 图计算(Graph Processin ...

  3. GraphX 在图数据库 Nebula Graph 的图计算实践

    不同来源的异构数据间存在着千丝万缕的关联,这种数据之间隐藏的关联关系和网络结构特性对于数据分析至关重要,图计算就是以图作为数据模型来表达问题并予以解决的过程. 一.背景 随着网络信息技术的飞速发展,数 ...

  4. 图学习笔记(一):图

    图学习笔记(一):图与图学习 一. 图是什么? 1. 图的定义 2. 图的基本表示方法及概念 2.1 图的构成 2.2 图的概念 3. 例子:空手道俱乐部图 二. 如何存储图?存储图的方式:三种 第一 ...

  5. A.关于图计算图学习的基础知识概览:前置知识点学习(Paddle Graph L)【一】

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  6. 图神经网络学习笔记-01基础

    图神经网络-01基础-图与图学习 文章目录 图神经网络-01基础-图与图学习 图是什么 图的定义 图的基本表示方法 e.g 图的存储 图的类型和性质 图算法 1. 寻路和图搜索算法 1). 搜索算法 ...

  7. 【图数据挖掘】— 子图同构问题、单射函数和双射函数、同构(isomorphic)和同态(homomorphism)

    子图同构问题 子图同构(Subgraph Isomorphism)是指在图论中,两个图之间是否存在一种关系,使得其中一个图的顶点集合和边集合可以通过对应的方式映射到另一个图的顶点集合和边集合上,且保持 ...

  8. 论文翻译——Multi-Constrained Graph Pattern Matching in Large-Scale Contextual Social Graphs

    文章目录 Abstract 附加 Introduction Background 附加 Problem 附加 Contribuitions 附加 Related Work (1) 附加 (2) 附加 ...

  9. CS224W: Machine Learning with Graphs - 09 How Expressive are GNNs

    How Expressive are GNNs 0. Theory of GNNs How powerful are GNNs? Many GNN models have been proposed ...

最新文章

  1. MathJax 支持的 Latex 符号总结(各种数学字体)
  2. C# HashTable的用法总结
  3. AutoLayouterLib第一版基本完成
  4. boost::hana::is_embedded用法的测试程序
  5. String,char,数组,列表 相互转化 (更新中)
  6. 看视频时,类加载器没太理解,现在再整理下几个要点
  7. Linux做施压机的最大线程数,关于性能测试的几个要点
  8. OPENQUERY用法以及使用需要注意的地方
  9. 初学者必备Linux指令
  10. pytorch神经网络解决回归问题(非常易懂)
  11. 双系统下Mac可以这样卸载windows系统
  12. 修改WiFi/BT模组—R329智能语音开发板入门
  13. 高频分类ISO1443, ISO15693, ISO18000-3
  14. 游戏十五大基本游戏类型介绍
  15. Xshell6复制粘贴快捷设置
  16. 云计算机应用论文,关于云计算应用的研究(本科毕业论文)
  17. 主观能动性存在的一个理论根据
  18. java jive歌词翻译_Java Jive歌词 Java JiveLrc歌词
  19. 百鸡问题用计算机什么法解决,《穷举法解决问题》教学设计
  20. Neo4j-Cypher

热门文章

  1. 解决ios下拍照自动旋转问题
  2. 毕业论文开题报告---范文---基于Android的学生考勤管理系统的设计与实现
  3. 【推荐】PHP源码加密 给源码限制域名使用
  4. 使用xlsx.full.min.js导出有复杂表头的excel(亲测有效)
  5. python包 pypinyin 中文转化为拼音
  6. Darknet实现YoloV3(2)
  7. 自媒体平台企鹅号怎样三天快速过试运营
  8. Apple Watch 1.0 开发介绍 1.1 简介 开发苹果手表
  9. 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题
  10. 2022无线蓝牙耳机哪个牌子好?无线蓝牙耳机排行榜