我想知道一个简单的蛮力回溯数独求解算法的 Big-O 是什么。
数独有 4 个约束:
- 单元格 - 一个单元格最多可以包含一个数字
- region - 区域中的数字必须完全不同
- row - 同一行上的数字必须完全不同
- column - 同一列上的数字必须完全不同
给定 9x9 网格:
3|___|___________
_|_ _|_ _ _ _ _ _
_|___|_ _ _ _ _ _
_|_ _ _ _ _ _ _ _
_|_ _ _ _ _ _ _ _
_|_ _ _ _ _ _ _ _
_|_ _ _ _ _ _ _ _
_|_ _ _ _ _ _ _ _
_|_ _ _ _ _ _ _ _
我认为行、列和区域约束都是 O(n!) 因为 (n)(n-1)(n-2)(n-3)(n-4)(n-5)(n-6) (n-7)(n-8) 为每行、列和区域填满。
但是鉴于必须至少有 17 个给定的解决方案才能存在唯一的 9x9 数独解决方案,所以我现在不确定。排列的数量是 O(n^(n^2 - k)) 其中 k = 17 对于纯蛮力但这不包括约束满足,我确定它是指数 O(c^n) 或阶乘 O (n!)至少。
所以问题又是什么是数独的 Big-O 使用蛮力回溯和约束满足,为什么?O(log n!)?