难以理解两次通过连接组件的伪代码

问题描述

我在理解Wikipedia用于使用两遍算法标记连接组件标签的伪代码时遇到了一些麻烦。这是伪代码

algorithm TwoPass(data) is
linked = []
labels = structure with dimensions of data,initialized with the value of Background

First pass

for row in data do
    for column in row do
        if data[row][column] is not Background then

            neighbors = connected elements with the current element's value

            if neighbors is empty then
                linked[NextLabel] = set containing NextLabel
                labels[row][column] = NextLabel
                NextLabel += 1

            else

                Find the smallest label

                L = neighbors labels
                labels[row][column] = min(L)
                for label in L do
                    linked[label] = union(linked[label],L)

Second pass

for row in data do
    for column in row do
        if data[row][column] is not Background then
            labels[row][column] = find(labels[row][column])

return labels

我的问题在于行linked[NextLabel] = set containing NextLabel。它永远不会初始化NextLabel并仍然使用它。另外,“包含NextLabel的集合”是什么意思?这段代码让我很困惑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)