我正在阅读 Dijkstra 的 EWD 316,我遇到了一个例子。在第 53 页,Dijkstra 给出了以下定义:
考虑由 1、2 和 3 组成的序列,它们仅包含不同的相邻非空子序列对。
他称这样的序列很好。考虑到至少有一个长度为 100 的好序列这一事实,问题是按字母顺序列出所有好的序列,直到并包括第一个长度为 100 的序列。
首先,我认为 Dijkstra 所说的“子序列”是指“子字符串”(我指的是 Wikipedia 上的定义),但这不是真正的问题。据我所知,这个定义是对称的,如果一个序列是好的,那么排列序列中的 1、2 和 3 将产生另一个好的序列。因为定义没有提到具体的数字。然而,Dijkstra 给出了前几个好的序列(按字母顺序),即使序列 21、13、23、31 和 32 不在列表中,例如,12 也在列表中。此外,他的算法删除了试验序列中的最后 3 个。
我很确定我错过了一些微不足道的东西,但我不知道是什么。另外,我不是以英语为母语的人,所以即使您以完全形式/数学符号表达良好的属性,我也会很感激。
ps:我找不到合适的预先存在的标签。