云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_流量攻击服务器_企业级

小七 141 0

答案集编程(ASP)是一种软件范例,可以用来表示知识和解决组合和信息密集型问题。组合搜索问题是那些被认为没有有效方法来缩小解空间的问题(NP-hard),本文给出了一些这类问题的例子。知识的概念是非常广泛的,云服务器报价,并且非常依赖于领域。它包含了各种程度的信念、事实和规则,这些信念、事实和规则可以用来进行推理,以及我们对世界的常识性理解。

这里的难题是在我制作的一个编程工具中解决的,这个工具的灵感来自于Datalog和Clingo,后者是波茨坦大学(University of Potsdam)开发的ASP。与Datalog不同,这里报告的脚本基于特定于域的语言,并且它们利用Scala的强类型编译器。本论文的目的不是提供一种更有效的方法来进行ASP,而是构建工具来继续我正在进行的项目,并探索这种模式在其他领域的潜力,数据分析和大数据,如数据管理和规则系统。我希望传达这样一种意识,即这种软件范式在弹性和完整性方面为现实世界场景带来了优势。ASP已被用于:

决策支持系统,以帮助航天飞机控制器处理多重故障造成的紧急情况。Gioia Tauro海港的高效劳动力管理受到大量限制。分类意大利电信用户的个人资料和实际需求(每天100万个电话),创造个性化的客户服务体验。产品和服务的配置受铁路安全控制、旅游、汽车、计算机硬件、软件包等复杂规则的约束。

ASP是一种逻辑编程形式,其中规则(或参数)可被视为可执行规范。ASP程序不侦听查询,而是递归地应用所有条件,直到生成的知识不再演化。当没有更多可满足的条件运行时,系统返回结果列表,即所谓的稳定模型或答案集。让我们用素数的例子来看看。

什么是素数?只能被自身和一整除的数。在逻辑上,为了评估一个陈述是否有效,大数据产业,我们必须取消任何可能的反例。如果一个数是两个不同于一个数的数和它本身的乘积,那么它就不是素数。从这个角度重新定义我们有:

让我们通过生成给定范围内所有可能的因子组合,得到一个复合(或复合)数的列表,然后检查它们的模(除法的余数)是否为零。

在前提(X:=(1到N))的第一个子句中,我简单地将一个列表赋给一个变量X。在第二个子句中,每个X都有一个Y的列表,它们的对应组合是所有X和Y的笛卡尔积。最后一个子句将检查X的任何一个实例是否可以被Y整除,如果可以,则生成一个新的原子"化合物"。最后,下面的参数将实例化"prime"原子:

这里的新特性是not关键字,称为negation,表示失败。它检查原子实例"compound"::X是否存在于知识图中,如果不存在则返回true。完整的程序是:

在ASP中,至少有两个主要阶段表示程序的执行:

接地。可能的解决方案的空间被充分扩展。解决问题。根据定义的约束条件过滤出不匹配的解。

图着色

这是一个经典的组合问题,大数据学习,图中的节点是通过考虑到一个节点的颜色必须不同于相邻节点的颜色来着色的。输入图形包含节点、边和给定颜色:

在接地阶段,所有可能的赋值颜色/节点排列:

在这里,为每个节点和知识库中的每个颜色生成原子"颜色"。假设一个节点被分配了一种颜色,我们创建了所有可能的排列,并指定(使用操作^(1)),在每个解决方案中,参数(1)中的字段是唯一的。FactBuilder是一个辅助工具,用于以比上一个示例更方便的方式写入原子。

解算器部分将放弃所有相邻两个节点具有相同颜色的解:

程序是:

N皇后问题

如果你已经下棋,你知道皇后是棋盘上最有力的棋子,失败通常是失败的前奏。在这个谜题中,问题是在一个N*N棋盘中找到N个皇后的所有部署,在这个棋盘上任何皇后都不能攻击任何其他皇后。ASP程序将生成棋盘上所有皇后的排列,并过滤掉所有配置:

两个或两个以上皇后在同一行中。两个或多个皇后在同一列中。两个或两个以上的皇后在同一对角线上。

如何检查两件是否在对角线上?当X轴的差值与Y轴的(绝对)差值相同时,它们位于同一对角线上。请遵循数据和程序:

数独

很遗憾,我无法向您显示此程序的任何结果。在这个难题中,这种探索性ASP引擎的局限性是显而易见的。对于我使用的简单接地算法,解的空间是禁止的。无论如何,工具的效率和有效性不是本文的重点。相反,我邀请您在Clingo上运行一个等效的程序。它需要一秒钟的时间来解析矩阵,怎么可能呢?好吧,云服务器一年多少钱,多亏了懒惰的基础,冲突驱动的解决者,甚至在逻辑编程领域也取得了巨大的飞跃。这种算法的发展归功于学术研究。最短路径