我想知道是否有任何工作将法律法规与复杂性联系起来。特别是,假设我们有决策问题“考虑到这本法律书和这组特殊情况,被告有罪吗?” 它属于哪个复杂度类?
有结果证明纸牌游戏《魔术:聚会》既是NP又是图灵完备的,所以对于法律代码不应该存在类似的结果吗?
我想知道是否有任何工作将法律法规与复杂性联系起来。特别是,假设我们有决策问题“考虑到这本法律书和这组特殊情况,被告有罪吗?” 它属于哪个复杂度类?
有结果证明纸牌游戏《魔术:聚会》既是NP又是图灵完备的,所以对于法律代码不应该存在类似的结果吗?
Answers:
法律可以包括任意语言,并且任意语言都可以表达NP完全逻辑。因此,从理论上讲,有可能创建一个NP完全的甚至是不确定的法律。但是,实际上,绝大多数刑法都是简单的决策树。
让我们以加利福尼亚刑法(“一级谋杀罪”)的第187(a)节为例。
(a)谋杀是指事先故意恶意杀害人类或胎儿。
(b)本条不适用于以下行为而导致胎儿死亡的任何人:
(1)该行为符合《健康与安全法》第106部分第2部分第2章第2条(从123400节开始)的《治疗堕胎法》。
(2)该行为是由《商业和职业守则》所定义的医师证书和外科医生证书的持有人实施的,如果在医学上确定分娩的结果是胎儿母亲的死亡或她的死于分娩,尽管在医学上不是确定的,但在很大程度上可以确定或更有可能发生。
(3)该行为是由胎儿母亲请求,帮助,教a或同意的。
(c)(b)分节不得解释为禁止根据任何其他法律规定起诉任何人。
这可以表示为一组简单的布尔逻辑。
IF !victim.isAlive
AND victim.species == HUMAN
AND defendant.hasKilled( victim )
AND defendant.hadMaliceForethought
AND !( victim.age < 0
AND wasTherapeuticAbortion
AND defendant.profession == DOCTOR
AND ( victim.survivalChance == 0 OR victim.mom.survivalChance < 0.5 )
AND victim.mom.wantedAbortion )
THEN defendant.moveTo(PRISON)
现在,在这里我当然会轻描淡写很多,例如“什么是恶意的预见”,“什么是治疗性的流产”和“如何确定怀孕的生存机会”。但是,这些也可以表示为类似的布尔决策树。
从软件工程的角度来看,法律系统可以看作是以规则为规则集的业务规则引擎的一种形式。
这意味着大多数定律的计算复杂度为c
。如果您还需要证据审查过程到需要确定所有这些布尔变量的值帐户,那么复杂度变n
这里n
是证据需要进行评估的金额。
但是,有时法律包含的语言根本无法决定,并且需要外部的预言。例如,当提到诸如“合理怀疑”之类的概念时。什么是“合理”?那是由法院决定的。
victim.survivalChance == 0 OR victim.mom.survivalChance < 0.5
不是对法律的正确解释;法律所说victim.mom.survivalChance == 0 OR victim.mom.survivalChance > 0 AND victim.mom.survivalChance < 0.5
,可以简化为公正victim.mom.survivalChance < 0.5
。
x AND y AND z
but x OR y OR z
。
这是无法确定的,因为法律书籍可以包含任意逻辑。审查法的一个愚蠢的例子是“公开任何不停止的计算机程序是非法的”。
MTG的结果之所以存在且令人感兴趣的原因是,因为它具有一组固定的(主要是)明确的规则,这与不断变化的法律,可怕的局部性和无穷无尽的法律不同。
这是一个非常有趣的问题。
法律介于日常语言之间,它具有任意,不断变化且经常为软性规则,而编程语言具有其特定的,已定义的规则。
法律术语实际上定义了其术语,因此法律中使用的许多词(但不是全部!)实际上具有确切的含义。
但是,解释是您向逻辑系统提出案例并获得结果的方法将失败的地方。法律是一个通用定义,需要适应所讨论的具体案例。通常这是一个简单而直接的过程,但不能保证它是,并且也没有非平凡的方式来定义边界。
一个很好的例子就是自卫。在大多数法律制度中,只要您采取自卫行为,就可以合法伤害他人。但是,该措词明确是上下文相关的。例如,英国刑法规定:
一个人可以在适当情况下使用合理的武力预防犯罪[...]
案例法定义了在特定情况下什么是“合理的” ,但书中没有一般性的定义。还有判例法明确了“预防犯罪”的确切含义。根据定义,既然尚未发生犯罪,则更不用说法院裁定该诉讼实际上是犯罪了,在这种特殊情况下,合理的信念就足够了,但实际上并没有法律规定!
要创建有关法律的数字决策者,您不仅需要提供法律本身,还需要提供所有判例法,许多自然语言理解以及有关如何应用所有知识的许多规则,因为有时判例法是可靠的,有时您可以修改它(尤其是如果它是旧的,因为解释会随着时间而变化)。
最后,法律不仅在本书中而且也在其解释上发生变化和适应。有许多著名的例子,说明最高法院否决了他们已有20年历史的裁决。很多时候,对先前判例法的这种挑战之所以发生,恰恰是因为法官决定违背那些既定的法律,并且他宁愿承担被高等法院推翻的风险,也不愿放弃他不支持的裁决。我想知道您将如何在NP完整系统中对这种能力进行建模?
要计算系统的复杂度,我们需要了解输入和输出。但是,法律是一个开放系统。从字面上看,环境中的任何事物都会对其产生影响,尤其是社会和文化的变化。大多数国家的法律都在书本上很少使用,因为社会发生了变化,但法律制定过程却滞后了。反对同性恋的法律就是一个例子。或死刑判决,在大多数国家或地区中,死刑判决在被从法律书籍中删除之前已有数十年或数十年没有实际应用。这不是因为没有在任何情况下都可以应用它,而仅仅是因为法官们尽管有选择仍然没有应用它。
这些环境因素几乎不可能进行复杂度估算,因为除非使用全量变量(例如“每种...”或“所有...”),否则我们无法在有限列表中枚举它们。
与其他复杂度类别一样,NP完整性与输入大小不同的问题有关,我们用n表示大小。尤其是:
如果可以确定任何建议的解决方案是否实际上是n中具有运行时多项式的解决方案,那么NP就是一个问题。
如果问题是NP,那么问题是NP完全的,而且每个NP问题都可以通过运行时多项式为n的简化过程来简化。
在您提出的问题中,即
鉴于这本法律书籍和这种特殊情况,被告是否有罪?
我不确定n是什么意思。看来这里的输入是“一系列情况”和被告的名字。只有前者的长度可能有所不同,但是“情境”又意味着什么呢?我们是否只是输入任意数量的事实,例如“被告拥有紫色袜子”和“法官今天吃了午餐三明治”还是什么?此外,在这些情况下是否有限制,还是我们可以接受“塞维利亚的理发师精确地剃那些不剃自己的理发师”这样的“情况”?
我不认为这个问题是恰当的,也没有任何明显的方法可以使它正确提出。
虽然有一些答案说这还不确定,但我想这不是法律的目的,因为它们不可强制执行。
如果以某种方式限制它使其始终可确定,那么谈论实际的复杂性可能就没有多大意义。这是因为法律作为功能的输入通常不是法律事件的定义,例如在纸牌游戏中,而是事件是否合法的证据。
关于一个事件,可能有很多证据。对于事件,没有客观的输入长度即可定义复杂性。对于给定的一组证据,虽然有一定的输入长度,但是法律通常没有规定某人必须有明确的结论。他们可以而且通常更喜欢尝试收集更多的证据,即使在理论上可以以困难的方式从逻辑上推论出答案。如果嫌疑人必须在没有证据的情况下工作,嫌疑人可能会以一种令人费解的方式承认某些事情,从而人为地增加了复杂性。
如果涉及密码学,将会有更多的问题。从理论上讲,如果可以长时间计算,他们可以逆转强壮的加密算法,但是,它们可能破坏签名算法的置信度,以使其无法同时用作证据。
陪审团成员最终根据法官给予陪审团的适用法律以及陪审团使用陪审团指示中的因素确定的事实作出裁决。特别值得信赖的证人...谁相信。不能归结为算法。