以多故障为对象的D算法从一个故障的故障原始D立方开始向输出端传播。若遇到另一个故障,则根据故障取值的可能组合决定另一个故障点的值。例如a点的取值为
D,若D传播到g点则其值为D,而D传播到g点,则其值取0。若欲使g点为1,则是不允许的。若从第一个节点开始算法失败后,再从第二个故障出发再次执行D算法。
  对图7.13的电路,a点的故障s-a-1(
D)要向输出端传播,首先使b点为0,e点为D。选择 D前沿中的G为敏化路径,则得c点为1,g点为D。该值满足前述要求,故取g点为D。D再向F传播,要求h为1,得f点为D。h为1要求d与e同时为1,因e已为D,要求不能满足。回溯到D向F传播,用二重D立方,使h为D。因e为D,h为D也是不可能的。于是从a点出发算法失败。再从g点出发,设为D,向F传播,要求h为1, 得f点为D。h为1要求d与e同时为1。这时,G的输入端c设为0即可使g为D。e为1 可使a, b均为1,满足故障点值的要求。不管a点是否有故障,都可使e为1。这样,就得到检测a和g同时有故障(as-a-1, gs-a-0)的测试输入向量为(1, 1, 0, 1)。
  
本节介绍的是多故障的D算法。从基本概念来讲,与单故障是不同的。多故障算法的不同点是:(1)测试向量所得到的故障点的正常值,与故障值可以有任何一个不同,也可以都不同,因而出现多个正常值的组合。各组正常值与故障值组合成多个D值组合。(2)可以从任意一个故障点出发,当传播到另一故障点时要与该种组合的故障值吻合,如果不吻合则不允许继续传播。判断是否吻合是指在D交时不出现冲突,即D交结果中不含
  三故障和更多的多故障情况下的算法与故障的算法类似。读者可以考虑一下3故障的情况下怎么做。
  因为D算法只要求求出一个测试向量即可,因而如果已经得到一个测试向量,就不需要在从别的故障点出发再求测试向量。