我正在尝试编写一个程序,该程序将检查简单游戏的状态空间。
该程序将使用启发式函数,并且我想按照该启发式函数的给定值以最小堆对生成状态进行排序。
但是堆的大小应该是多少?我认为可以生成的最大状态数是9 !!如果我不想一次分配那么大的内存空间,该如何管理?
我正在用C编写代码。有什么想法吗?
答案 0 :(得分:0)
假设您将需要为每个状态存储一个整数值。 总大小= 9! * sizeof int(4byte)= 1.384MB。不是很多!另外,如果没有内部循环来计算状态,则时间复杂度应为O(10 ^ 6),并需要几毫秒的时间来计算。
是的。您可以在不知道最终大小的情况下创建堆。只需使用链表和动态内存分配即可。