1.首先
这篇文章是针对Jeff Tupper在他发的paper中提及的作品:Tupper自我指涉方程的相关解读。 该Paper在线阅读地址为:点击该处 该公式的作用是在一个指定的公式里使用一个常数k就可以唯一指定一张二值图。 其公式为:

k=4858450636189713423582095962494202044581400587983244549483093085061934704708809928450644769865524364849997247024915119110411605739177407856919754326571855442057210445735883681829823754139634338225199452191651284348332905131193199953502413758765239264874613394906870130562295813219481113685339535565290850023875092856892694555974281546386510730049106723058933586052544096664351265349363643957125565695936815184334857605266940161251266951421550539554519153785457525756590740540157929001765967965480064427829131488548259914721251530530642522971503
可以生成如下图(这里用的是\frac{1}{6},但是对于公式本身而言毫无影响,至于为什么请看下一部分):

2.原理
现在我们这么假设:对于一张(106,17)的二值图(由1和0组成),图中所有取值为1的像素点对应的(x,y)为满足上面式子的x,y的集合,并存在一个k与之对应。下面我们来进行充要条件的寻找。 此处我们不妨假设17\leq k,因为这里我们只要找到那么一个k就可以了,所以这么假设下没有什么问题。然后对于这个式子:





\lfloor mod(M2^{-j},2)\rfloor=1









17\leq k\leq 2^{1802}
总结
这个功能我们可以用Python代码来进行实现,只是需要注意的是,我们的图片中的坐标是按照左上角为(0,0)的,而我们在上述进行讨论的时候则是按照左下角(也就是一般的坐标系的零点位置)来进行的说明,所以需要进行反转一下,不过这个都是些简单的操作,提一提就好。 最后再用Tupper不等式生成我的名字,如图所示:

984107829042985472604796234718239406952573306558267124934037870944567482829146390093221988350003902420037970380063906594457568676371421068434047704461047660191379664044458042915914971631073786198841819014350817387799790991913967915133414137791725109750813163520
这里k值得获得我觉得比较简单,就是只要把图像中所有的点的坐标得到后,进行公式②③的一个逆向操作之后就可以得到对应的k值,在此就不再进行演示了。 k对应的二进制展开序列为:
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001111110000000000000000000000000000000000000011100000000000000000000000000000000000000000000000000000000000110001000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000001100100111011001111000011111001111001111100001100000000000000000000000000000000000000000000000000000000000111110001110100100110011011001100110110011000110000000000000000000000000000000000000000000000000000000000011001000110000001111001101100100011011001100011000000000000000000000000000000000000000000000000000000000001100000011000001101100111100110000101100110001100000000000000000000000000000000000000000000000000000000000110001001100001100110011100001000110110011000110000000000000000000000000000000000000000000000000000000000011001100110000110111101111100110110011001100011000000000000000000000000000000000000000000000000000000000001111110111100001100101100010000110001100110011110000000000000000000000000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000011111100000000000000000000000000000000000000111000000000000000000000000000000000000000000000000000000000001100010000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000011001001110110011110000111110011110011111000011000000000000000000000000000000000000000000000000000000000001111100011101001001100110110011001101100110001100000000000000000000000000000000000000000000000000000000000110010001100000011110011011001000110110011000110000000000000000000000000000000000000000000000000000000000011000000110000011011001111001100001011001100011000000000000000000000000000000000000000000000000000000000001100010011000011001100111000010001101100110001100000000000000000000000000000000000000000000000000000000000110011001100001101111011111001101100110011000110000000000000000000000000000000000000000000000000000000000011111101111000011001011000100001100011001100111100000000000000000000000000000000000000000000000000000000000000000000000000000000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
不过说到底,这个公式的实用性不是很强,因为对于一张越大的图,其需要的二进制位数就越多,这就导致我们的计算机处理性能就要更强,而且如果要是看过作者原文的话就会知道作者在那篇文章中所讨论的问题比这个还要复杂的多了。 对于我们公式中的17、mod2都是可以进行改变的,只要符合一定的规则即可,而这里谈到的规则也就是我们在上面进行推导的时候,改变了数据后,依旧能那么推导即可。 本文到此为止,谢谢大家!