我的作业文件中有一个问题,我很难有时间想象和理解这个问题。问题如下:
我们可以用c比较器表示一个n输入比较网络 c对整数的列表,范围从1到n。如果两双 包含一个共同的整数,对应的顺序 网络中的比较器由对中的顺序决定 列表。给定此表示,描述O(n + c)时间 (串行)算法,用于确定比较网络的深度。
在比较网络环境中拥有整数对意味着什么?通常我们使用下面的符号表示比较网络,其中每条水平线代表一个数字。
答案 0 :(得分:2)
这意味着如果你有一对(1,2),那就是那些垂直线之一,即连接水平线1和2的线。
因此,这张照片的左上角部分将表示为(1,2)(3,4)(1,3)(2,4)。
该部分的深度为2。
答案 1 :(得分:1)
for i = 1, n
depth[i] = 0
total_depth = 0
for j = 1, c
i1 = comparators[j].entry1
i2 = comparators[j].entry2
new_depth = 1 + max(depth[i1], depth[i2])
depth[i1] = new_depth
depth[i2] = new_depth
total_depth = max(total_depth, new_depth)
print(total_depth)