关于“如何检测节点网络中是否存在闭环之java实现”的程序bug修复

之前由于编码过程中没有考虑到节点信息异常(节点关系节点包含自身)对函数本身结果的影响,因此之前的函数在运行期间可能由于本身网络节点的信息异常导致返回结果错误,在这里增加了如下的解决方案:

节点关系节点包含自身(异常信息:在nodeA的relList里面包含nodeA)

nodeB nodec nodec

nodeNamendoeA
relList
nodeB
nodeC
nodeA
curRelIndex-1
beforeNdoenull


请大家在“如何检测节点网络中是否存在闭环之java实现”代码片段的122行增加如下代码段

          /**
	  * 如果不是起始"视野",但是nextNode和curNode相同的,
	  * 说明在一个节点上可能存在包含自身的关系,这样的数据是异常数据
	  * 顺序不可调整至调用head()和back()的语句前面
	  */
		if(nodeName.get("curNode").equals(nodeName.get("nextNode")) &&
				!nodeName.get("curNode").equals(nodeName.get("beforeNode"))){
			int curRelIndex = (Integer) nodeCollections.get(nodeName.get("curNode")).get("curRelIndex") ;
			throw new Exception("节点参数异常:节点" + nodeName.get("curNode")+
					"的关系节点不能包含自身,在relList的第"+ 
					(curRelIndex + 1)+"元素上");
		}


本次修改增加了对节点关系节点包含自身的校验,如果节点关系节点包含自身,抛出节点信息异常。

不过由于起点选取的随机性,对这种异常的检验并不是严格的,即遍历到了那个节点的那个关系才能检测到,若在检测到这种异常之前就已经发现存在闭环,则程序运行完毕,这种参数异常将会被忽略。因此,也可以说对于不存在闭环的网络中,对这种数据异常的检测是严格的,但是在存在闭环的网络中是不严格的。
虽然这种校验时不严格的,不具有确定性,反正给人不太靠谱的感觉;但是我认为这种校验时最节省资源的。节点异常信息的校验并不是本函数的初衷,本次增加的校验只是确保函数的运算结果符合预期,不至于被节点异常信息的干扰而发生错误。所以本函数完全没有必要因为实现对节点异常信息的校验而大大增加开销。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值