2

我有以下伪代码: http://i.imgur.com/ls6NECn.png?1

7:我们创建一个带有布尔值的数组(显然,这在论文中没有解释)。我们将当前值 (value = index) 赋值为“true”

18:此时,我们可以有一个数组,其中所有值都可以为“真”并达到 k = len(parents) 的条件 19-22:这将创建一个无限循环

我错过了什么吗?

论文:组合优化问题的部分映射交叉的多父扩展。Chuan-Kang Tinga, , , Chien-Hao Sub, , Chung-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
4

1 回答 1

2

我刚刚下载了一份论文并略读了一遍。它看起来确实很有趣,但你是正确的,boolean没有定义。在上下文中,它似乎是一个数组,其长度是父母的数量,它跟踪在算法的特定阶段选择了哪些父母。因此——它从所有条目开始,false在伪代码中的第 7 行之后只有一个条目true——因此没有无限循环的危险(假设至少有三个父项)。

就像伪代码一样——这不是很有用。我建议几乎忽略伪代码,而是专注于周围的讨论和图表,并尝试使用像 Python 这样的语言来实现它,你应该能够获得比文章的伪代码更短的工作函数。

于 2015-12-31T15:10:50.820 回答