归纳逻辑编程 (ALP) 是一种计算框架,它将传统逻辑编程与归纳推理(一种专注于生成合理的假设来解释观察结果的逻辑推理形式)相结合。在 ALP 中,逻辑程序(通常以 Prolog 之类的语言编写)会增加一组“可归纳”谓词,这些谓词是系统可以用来填补知识空白的假设。当面临无法直接从现有规则和事实中导出的观察结果时,ALP 会搜索最小的可归纳假设集,这些假设在添加到程序时,会在逻辑上导致观察结果。这种方法允许在不确定或不完整的信息下进行推理。
从技术上讲,ALP 的工作原理是通过使用预定义的可归纳集合(缺乏明确定义但可以假设的谓词)来扩展逻辑程序。例如,考虑一个诊断系统,其中观察结果为“引擎无法启动”。逻辑程序可能包含诸如“如果燃油泵工作且火花塞正常,则引擎启动”之类的规则。如果无法证明“燃油泵工作”或“火花塞正常”,则 ALP 可以推断出其中任何一个(或两者)作为潜在的假设。诸如“如果燃油泵工作,则油表不为空”之类的完整性约束有助于修剪无效的假设。然后,求解器检查哪些可归纳的组合既满足观察结果又满足约束,从而产生可能的解释,例如“燃油泵故障”或“火花塞故障”。
ALP 在需要假设推理的领域特别有用。例如,在医学诊断中,它可以在测试结果缺失时提出解释症状的疾病。在机器人技术中,它可能会推断出未见过的障碍物来解释传感器差异。一个关键优势是它能够将结构化逻辑与动态假设生成相结合,从而使系统能够适应不完整的数据。基于 Prolog 的框架(例如,XSB-Prolog)和专用 ALP 系统等工具提供了实际的实现,允许开发人员以声明方式对问题进行建模,同时利用归纳进行灵活的问题解决。