7 :我们使用bool值创建一个数组(显然,文中未对此进行解释)。我们分配当前值(value = index)“true”
18 :此时,我们可以有一个数组,其中所有值都可以为“true”并达到k = len(父项)的条件 19-22 :这会创建一个无限循环
我错过了什么吗?
论文:用于组合优化问题的部分映射交叉的多父扩展。 Chuan-Kang Tinga ,, Chien-Hao Lee,Chien-Nan Leeb,
http://www.sciencedirect.com/science/article/pii/S0957417409006800
//编辑:这是我的代码PYTHON-2.6
def MappingListDetermination(parents):
mapping_list = []
startparent = parents[random.sample(xrange(0, len(parents)), 1)[0]]
ptr = random.sample(xrange(0, len(startparent)), 1)[0]
temp_value = startparent[ptr]
boolean = [False] * listSize
for j in xrange(0,len(startparent)):
mapping_list.append(temp_value)
boolean[temp_value-1] = True
arr = random.sample(xrange(0, n), n)
if arr[0] == parents.index(startparent):
arr[0] = arr[random.sample(xrange(1, len(arr)), 1)[0]]
endparent = parents[arr[0]]
ptr = endparent.index(temp_value)
k = 0
while((boolean[startparent[ptr]-1] is True) and (k is not len(parents)-1)):
k = k + 1
startparent = parents[arr[k]]
if((boolean[startparent[ptr]-1] is True) and (k is len(parents)-1)):
while(boolean[startparent[ptr]-1] is True ):
startparent = parents[random.sample(xrange(0, len(parents)), 1)[0]]
ptr = startparent[random.sample(xrange(0, len(startparent)), 1)[0]]-1
temp_value = startparent[ptr]ere
答案 0 :(得分:2)
我刚刚下载了一份纸张并撇去了它。它确实看起来很有趣,但你确定boolean
没有定义。在上下文中,它似乎是一个数组,其长度是父项的数量,它跟踪在算法的特定阶段选择了哪些父项。因此 - 它从所有条目false
开始,在伪代码中的第7行之后只有一个条目是true
- 因此没有无限循环的危险(假设至少有三个父项)
随着伪代码的出现 - 这不是非常有用。我建议几乎忽略伪代码,而是集中在周围的讨论和图表上,并尝试使用像Python这样的语言来实现它,你应该能够获得比文章伪代码更短的工作函数。