In his seminal paper of 2004, Ulrich Junker proposed the QuickXPlain algorithm, which provides a divide-and-conquer computation strategy to find within a given set an irreducible subset with a particular (monotone) property. Beside its original application in the domain of constraint satisfaction problems, the algorithm has since then found widespread adoption in areas as different as model-based diagnosis, recommender systems, verification, or the Semantic Web. This popularity is due to the frequent occurrence of the problem of finding irreducible subsets on the one hand, and to QuickXPlain's general applicability and favorable computational complexity on the other hand. However, although (we regularly experience) people are having a hard time understanding QuickXPlain and seeing why it works correctly, a proof of correctness of the algorithm has never been published. This is what we account for in this work, by explaining QuickXPlain in a novel tried and tested way and by presenting an intelligible formal proof of it. Apart from showing the correctness of the algorithm and excluding the later detection of errors (proof and trust effect), the added value of the availability of a formal proof is, e.g., (i) that the workings of the algorithm often become completely clear only after studying, verifying and comprehending the proof (didactic effect), (ii) the shown proof methodology can be used as a guidance for proving other recursive algorithms (transfer effect), and (iii) the possibility of providing "gapless" correctness proofs of systems that rely on (results computed by) QuickXPlain, such as numerous model-based debuggers (completeness effect).
翻译:Ulrich Junker在2004年的创举文件中提议了QuickXPlain算法,它提供了一种分化和化计算策略,在给定的设置中找到一个不可复制的子集,带有特定的(monotone)属性。除了最初在限制满意度问题领域的应用外,该算法此后在模型诊断、建议系统、核查或语义网络等不同领域被广泛采用。这种受欢迎性是由于一方面发现不可复制子集的问题经常发生,另一方面又由于QuickXPlain的一般适用性和有利的计算复杂性。然而,尽管(我们经常经历的)人们正在困难的时间理解QuickXPlain,并且看到它为什么运转正确,但这一算法的正确性却从未被公布在模型、建议系统、验证系统、验证和检验方法等不同领域被广泛采用。我们之所以在这项工作中解释的就是QuickXPlain, 提供了一种不易复制的正式证据。除了显示算法的正确性外, (校正和信用性) 也只是提供了一种精确性的证据(证明的正确性) 。