我的数独算法是否被视为 "expert system"?
Is my Sudoku algorithm considered an "expert system"?
我编写了一个代码,其中写入了数独的所有规则(每列、每行和每个方格出现一个数字)。该代码采用输入(未填充的数独网格)和 returns 通过将逻辑子句转换为 DIMACS 格式并使用 SAT 求解器的解决方案。
假设算法遵守规则,接收数据,并使用该数据根据含义得出结论(例如,如果第一个单元格中有 1,则第二个单元格中不可能有 1),是此代码被视为 "expert system"?谢谢你。
一个程序是否是专家系统是主观的,但我想说除非你的程序编码从领域专家那里获得的重要知识,否则它不是专家系统。如果你不能教另一个人实际做你的程序正在做的事情,它就不是专家系统。
根据这个定义,您所做的可能不是专家系统,因为一个人使用相同的技术太耗时了。我已经使用我认为是专家系统的生产系统 (https://sourceforge.net/p/clipsrules/code/HEAD/tree/branches/63x/examples/sudoku/) 编写了一个数独求解器。编码知识是从具有先进技术的网站获取的,供人类用于解决数独游戏。所有的编码技术都可以被人类实际用于解决难题(尽管一些更复杂的技术突破了这个界限)。
虽然我的数独解算器可以解出比我复杂得多的谜题,但称它为专家系统并不能说明它的复杂性。有比模拟人类可能采用的方法更好的方法来解决极其复杂的数独谜题。
在 80 年代,我编写了 Emycin 专家系统引擎的克隆。一个重要的特征是用户能够询问 为什么 专家系统得到了一些结论。系统可以(用几乎自然的语言)回答说它应用了这样那样的规则来得出结论。
使用这种系统,知识被建模并作为一组明确的规则(由认知工程师)实施。这些规则是引擎已知的对象。引擎可以触发规则(向前或向后或者可能使用元规则......)并且可以记录触发的规则并因此解释其结论。
(这是我对专家系统的感觉)。
我编写了一个代码,其中写入了数独的所有规则(每列、每行和每个方格出现一个数字)。该代码采用输入(未填充的数独网格)和 returns 通过将逻辑子句转换为 DIMACS 格式并使用 SAT 求解器的解决方案。
假设算法遵守规则,接收数据,并使用该数据根据含义得出结论(例如,如果第一个单元格中有 1,则第二个单元格中不可能有 1),是此代码被视为 "expert system"?谢谢你。
一个程序是否是专家系统是主观的,但我想说除非你的程序编码从领域专家那里获得的重要知识,否则它不是专家系统。如果你不能教另一个人实际做你的程序正在做的事情,它就不是专家系统。
根据这个定义,您所做的可能不是专家系统,因为一个人使用相同的技术太耗时了。我已经使用我认为是专家系统的生产系统 (https://sourceforge.net/p/clipsrules/code/HEAD/tree/branches/63x/examples/sudoku/) 编写了一个数独求解器。编码知识是从具有先进技术的网站获取的,供人类用于解决数独游戏。所有的编码技术都可以被人类实际用于解决难题(尽管一些更复杂的技术突破了这个界限)。
虽然我的数独解算器可以解出比我复杂得多的谜题,但称它为专家系统并不能说明它的复杂性。有比模拟人类可能采用的方法更好的方法来解决极其复杂的数独谜题。
在 80 年代,我编写了 Emycin 专家系统引擎的克隆。一个重要的特征是用户能够询问 为什么 专家系统得到了一些结论。系统可以(用几乎自然的语言)回答说它应用了这样那样的规则来得出结论。
使用这种系统,知识被建模并作为一组明确的规则(由认知工程师)实施。这些规则是引擎已知的对象。引擎可以触发规则(向前或向后或者可能使用元规则......)并且可以记录触发的规则并因此解释其结论。
(这是我对专家系统的感觉)。