慕慕的玩具(4):疯狂对对碰背后的数学模型 Steiner System和Finite Projective Plane(下)

书接上回,我们考虑如何构造这个游戏。这里就是研究如何构造一个7阶的Finite Projective Plane。这篇的内容,大量参考 The what, how and why of Finite projective planes。然后我又找到了一个更好的视频资料:Module 4: Projective and Affine Planes

Continue reading

慕慕的玩具(4):疯狂对对碰背后的数学模型 Steiner System和Finite Projective Plane(上)

慕慕的玩具和游戏背后有很多有趣的算法话题。之前已经写三篇(如下):

第四篇的游戏是一组卡牌,称为疯狂对对碰,网上很容易买到,如下图:

这个游戏是由一组卡牌,每个卡牌上有一些图标(这里是不同国家的国旗),任何两张卡牌的国旗组合里,有且只有一个共同点(这是我们的游戏经验)。家人陪慕慕玩这个游戏的办法是,洗牌,然后每个人分同样多的牌,每次各出一张,最快发现唯一相同国旗的人,赢走两张牌。最后计赢取的牌的数目决定胜负。

Continue reading

HyperBit: 比HyperLogLog用更少的内存

我时不时会浏览一些大佬的个人主页(如Knuth和Sedgewick),好久好久之前我就看到了Sedgewick关于HyperBitBit的研究了,一直就等他论文发表了。后来才想,不会这大爷忘了更新主页吧,去搜其他合作者,果然,论文刚刚都发布了。本文先罗列资料,然后再贴我的分析笔记。

Continue reading

华容道

华容道之水,不下赤壁。—— 孔明(火凤燎原)

问题

慕慕妈妈给慕慕外卖凑单,多买了一个华容道游戏。

看到这种面板,脑子里自然而然的涌现几个问题:

  1. 所有可能的排列有多少种?分别是什么?
  2. 所有可能的关卡有多少种?分别是什么?(有答案的排列才能称之为关卡)
  3. 给定一个关卡,怎么写一个程序自动求解?

针对这些问题,一个一个的解决。所有代码和数据文件在 https://github.com/kainwen/misc/tree/main/dancing_links

Continue reading

DEPTH-FIRST SEARCH AND LINEAR GRAPH ALGORITHMS

Knuth教授的第28届圣诞讲座的视频:Stanford Lecture: Dr. Don Knuth – Strong Components and Weak Components (2024),这引导我们继续去读一读这个Knuth教授这辈子最喜欢的算法,来自他的学生TARJAN(图灵奖得主)。

其中Knuth教授在上面的手稿里引用了一个别人对Tarjan这个算法的评论:

这更加让人想深刻理解这些科学家们的思路了。

Continue reading

COMPLEMENTS AND TRANSITIVE CLOSURES

Knuth教授近期在自己的个人主页上强烈呼吁大家要更正对弱连通分量的定义,不要用大部分教材里三心二意的定义,而是要用上个世纪70年代一篇关于离散数学的论文里的定义。Knuth教授的呼吁在此:https://www-cs-faculty.stanford.edu/~knuth/news22.html#weakcomps,部分引用如下:

Let’s all agree as soon as possible to use the easily understood term undirected components, or (as suggested by Doug West) underlying components, for what many people have unfortunately been calling weak components, and to celebrate the properties of directed graphs whose weak components are defined in a truly useful way.

本文研究学习上个世纪70年代一篇离散数学的话题,它有一个很好的关于图(Graph)的弱连通分量的定义。论文信息如下:

Continue reading

快速排序性能分析——Analytical Combinatorics方法

多键值排序是把快速排序(Quick Sort)和基数排序(Radix Sort)结合起来的算法。论文为 Fast Algorithms for Sorting and Searching Strings (J. Bentley, R. Sedgewick) 。Greenplum 6里面有实现,本文是我自己按论文搜索资料,一步一步复习、学习、整理的记录。

教授的讲座资料:

Continue reading

往事可追:从约瑟夫环问题到FFT算法重排

过河拜码头,上岸数人马。能走(苟)多远走(苟)多远,送死的人来了。

《好家伙》主题曲

从2023的国庆节到现在都龙年春节了,过去几个月,一言难尽。偶尔翻出来了上学期间写的一个小blog,看着那时候中二的文字,也是难以启齿。但也算乐于思考。往事可追,这里回顾这两个很有趣的算法,作为2024年思考的开始。

Continue reading

👻幽灵捕手——Dancing Links

缘由

之前一阵子,慕慕妈妈给慕慕买了一个益智小玩具——👻幽灵捕手。

刚刚通了一关的吕小慕

这个游戏的介绍视频可以参考: 幽灵捕手玩法视频。整整一年前我恰好看了Knuth的Dancling Links(参考之前的blog: https://kainwen.com/2022/01/03/dancing-links/ ) ,最近看着吕小慕玩儿这个游戏,顿时觉得,这就是一个可以用Dancling Links解决的Exact Cover Problem。那就让我们来试试看吧。

Continue reading

🐶🐰谜题

背景:Greenplum Team的Big Standup

Greenplum Team有一个源自从Pivotal时代的晨会仪式,称为Big Standup。2020年4月,被收购成为VMware Greenplum后,由于VMware的未来办公模式,永久的远程办公(甚至可以改Base),中国团队每天的Standup改为线上的zoom,为了更加活泼有趣,主持人需要想一个游戏,或者做一个小分享。这个活动成为了每天最吸引人的事情了。

谜题介绍:Dog Bunny Puzzle

有一个同事,找了一个有趣的类似华容道的益智游戏,对应的网站是 https://www.dogbunnypuzzle.com/。2022年12月24日的那个关卡如下图:

2022年12月24日的犬兔谜题
Continue reading