Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 排序网络中的比较器列表_Algorithm_List_Comparator_Sorting Network - Fatal编程技术网

Algorithm 排序网络中的比较器列表

Algorithm 排序网络中的比较器列表,algorithm,list,comparator,sorting-network,Algorithm,List,Comparator,Sorting Network,我的作业文档中有一个问题,我很难想象和理解这个问题。问题如下: 我们可以用c比较器将n输入比较网络表示为 范围从1到n的c对整数列表。如果两对 包含一个公共整数,对应的 网络中的比较器由网络中对的顺序决定 名单。给出这个表示,描述一个O(n+c)-时间 (串行)确定比较网络深度的算法 在比较网络的上下文中,有一对整数意味着什么?通常,我们使用下面的符号表示比较网络,其中每条水平线表示一个数字 这意味着,如果你有一对(1,2),那就是其中一条垂直线,即连接水平线1和2的线 因此,这张图片的左上部分

我的作业文档中有一个问题,我很难想象和理解这个问题。问题如下:

我们可以用c比较器将n输入比较网络表示为 范围从1到n的c对整数列表。如果两对 包含一个公共整数,对应的 网络中的比较器由网络中对的顺序决定 名单。给出这个表示,描述一个O(n+c)-时间 (串行)确定比较网络深度的算法

在比较网络的上下文中,有一对整数意味着什么?通常,我们使用下面的符号表示比较网络,其中每条水平线表示一个数字


这意味着,如果你有一对(1,2),那就是其中一条垂直线,即连接水平线1和2的线

因此,这张图片的左上部分将表示为(1,2)(3,4)(1,3)(2,4)


这部分的深度是2。

(2,3)意味着第2行和第3行之间有一个比较器。非常感谢。但还有一件事;我怎么知道(1,2)和(3,4)是平行的?它们也可以在整个网络的其他地方串行,对吗?另外,部分“如果两个对包含一个共同的整数,则网络中相应比较器的顺序由列表中对的顺序决定。”意味着如果答案中有(1,2)和(1,3),它们的顺序应该与图片中的顺序相同。我说的对吗?@MertToka是的。所发生的事情是,这些约束导致了偏序,因此(1,2)和(3,4)可能是有序的,例如,如果你把一个(1,3)放在它们之间,它将与这两个约束一起排序。在这里的例子中,(1,2)和(3,4)是无序的,因为1)它们没有共同点,2)它们之间没有任何东西可以隐式地对它们进行排序。难道你没有一个拥有10k代表的帐户吗?“这个额外的是怎么回事?”哈罗德回答
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)