关于多agent论证的简单Prolog实现

关于多agent论证的简单Prolog实现,prolog,multi-agent,Prolog,Multi Agent,新的逻辑编程(Prolog)。遇到一个简单的问题,但不知道如何用prolog编写 这个问题就像你们有几个论点:论点(a),论点(b)…和几个攻击关系,比如攻击(a,b),这意味着论点a攻击论点b。所以给出一个论点,我想知道它是否是有根据的。对于一个参数a来说“接地”意味着如果b攻击a,那么存在另一个参数,比如c攻击b。如果没有参数攻击c,那么我们说a和c是固定的 你能举一个例子说明如何实施这个扎根的/1计划来实现这个目标吗 我不确定我是否说得很清楚……但欢迎提供任何建议(或代码) 我从你的解释中

新的逻辑编程(Prolog)。遇到一个简单的问题,但不知道如何用prolog编写

这个问题就像你们有几个论点:论点(a),论点(b)…和几个攻击关系,比如攻击(a,b),这意味着论点a攻击论点b。所以给出一个论点,我想知道它是否是有根据的。对于一个参数a来说“接地”意味着如果b攻击a,那么存在另一个参数,比如c攻击b。如果没有参数攻击c,那么我们说a和c是固定的

你能举一个例子说明如何实施这个扎根的/1计划来实现这个目标吗


我不确定我是否说得很清楚……但欢迎提供任何建议(或代码)

我从你的解释中了解到,一个论点是有根据的,当没有其他有根据的论点攻击它时

您可以定义一个过程
grounded/1
,该过程在prolog中直接遵守此规则:

grounded(A):-
  argument(A),    % A is an argument
  \+              % for which there does not exist
  (
    attack(B, A), % an attacker
    grounded(B)   % which is grounded
  ).
[评论后由OP编辑]: 如果您必须处理周期,那么您可能需要保留访问“攻击”列表,无禁止周期:

grounded(A):-
  grounded(A, []).


grounded(A, L):-
  argument(A),
  \+
  (
    attack(B, A),
    \+ member(B, L),  % Here we forbid cycles
    grounded(B, [A|L])  % We add the current argument to the list of forbidden arguments
  ).

我不知道如何在Prolog中编写,但是根据参数树,从没有受到攻击的参数开始计算基础语义

(希望它能引导您找到此线程的正确答案。)

为了解释它是如何计算的,我将介绍以下函数F(x)={x防御y},其中:

  • 如果一个被辩护的参数被另一个被辩护的参数攻击,那么被攻击的参数将从集合中移除
  • 依此类推,直到函数不能用更多的参数进行更多的扩展,它在F中达到了最小的固定点
(例1)给定以下论证图,接地扩展是Eg={c,e,f,a}

因此,第一个函数开始于:

现在考虑带周期的接地扩张的计算。< /P> (示例2)在下面给定的论证图中,e保护b和d,但b受到d的攻击,则不能包含在固定语义中。从这一点,我们有一个无冲突集{e,d}。从{e,d}我们可以在函数F({e,d})={e,d,a}中应用,其中d保护a与b。再次应用函数F({e,d,a})={e,d,a},表明{e,d,a}是F中的最小不动点。因此,{e,d,a}是固定扩展

(示例3)在下面的论证树中,是固定的扩展,因为没有未被攻击的参数。否则,如果参数e没有攻击自身,则接地扩展应该是,事实并非如此


在最后一个示例中,循环上升到不同的首选扩展,您可以使用Martin Caminada在其他地方定义的参数标记的等效概念作为支持。

在您的示例中(b攻击a,c攻击b)这三个都是固定的?如果你也有d攻击c,哪一个会被禁足呢?例如(b攻击a,c攻击b)给出a,c被禁足,b不被禁足。如果d攻击c,则a和d接地。c不再接地,因为它被d攻击,并且没有任何参数通过攻击d来保护c。但在最后一种情况下(d攻击b),b不也应该接地吗?因为b也受d保护…在我最后的评论中,我的意思是“d攻击c的地方”。对不起,我犯了一个错误。所以如果c攻击b,b攻击a,那么c,a被接地。如果d攻击c,c攻击b,b攻击a,那么d,b被接地。很抱歉造成混淆。我发现了一个错误:如果像参数a和b这样的关系互相攻击,那么程序将永远循环。如何修复此问题?@user16125:如果您需要处理周期,您可能需要根据周期跟踪攻击(请参见编辑的答案),固定语义可能是空集,将争论引向不同的观点,或正式的首选扩展。它可以是一个很好的练习,找出所有的首选扩展,当接地语义是空的。@ GuSbro,考虑我的论点的论据接地语义,作为指导PROlog等价的答案。应该重新制定,还有更多的考虑因素需要了解。也许你是对的,或者还缺少什么。