测试图灵机模拟程序

时间:2013-02-24 17:48:55

标签: java testing turing-machines

我正在尝试用Java中的图灵机模拟器程序提出大型测试用例。

程序从输入文件中读取数据,并根据测试用例字符串和图灵机规则列表运行模拟。执行下面的规则后,程序将打印字符串是否被接受,拒绝或在给定的步骤中不停止。

该程序基本上模拟了在纸上手动穿过图灵状态机,给出了一些输入字符串。

我发现测试这个程序很困难。该程序适用于所有基本的图灵机和相对较小的测试用例。给定一个非常大的测试字符串(~30个字符),5000个步骤,以及一些大数或规则和状态,我想测试这个程序。

我想知道是否有人可以帮助我为此提出一个好的测试用例?

示例测试用例

7 15 //number of states and number of rules
0 0 3 B R //[current state, transition character, destination state, value to write, direction to move]
0 B 2 B R
0 x 2 x R
3 x 3 x R
3 B 1 B R
3 0 6 x R
6 x 6 x R
6 0 4 0 R
6 B 5 B L
4 x 4 x R
4 B 2 B R
4 0 6 x R
5 0 5 0 L
5 x 5 x L
5 B 3 B R
3 15 //number of testcases and number of steps to come to a halt
00
000
000000

非常感谢提前

1 个答案:

答案 0 :(得分:2)

如果您正在寻找测试用例来对您的实现进行压力测试,您可能需要查看busy beaver Turing machines,它们是具有指定状态数量的图灵机和已知运行的磁带符号终止前最长的时间。我们知道这些机器完成运行所需的时间的确切界限,因此您应该能够在已知使用大量时间和空间的TM上测试您的模拟器并确认您的步数计数器正常工作。

希望这有帮助!