假设我有n个对象,每个对象具有未知值,并且由n矩阵z.使得z(i,j)= 1如果对象i的值小于对象j的值,并且z(否则,i,j)= 0。我如何只给出这些对象,只给出矩阵z?

有帮助吗?

解决方案

您正在寻找的是a 比较排序。请看看那篇文章。


让我们清楚地说明在最终排序列表中出现的任何两个给定对象,对象I和对象j的要求。对象我应该发生在Object J(i,j)= 1.在对象j(i,j)= z(j,i)= 0之前或之后发生对象。

作为vonbrand提到的,我们应该假设矩阵z指定一个定义的“小于”关系,或者在数学条目中,在对象的值上的总严格顺序。否则,可能无法排序给定的对象。

  • z [i,j]= 0如果z [j,i]= 1.否则,我们不能对对象I和对象j进行排序。
  • z [j,i]= 0如果z [i,k]= 1和z [k,j]= 1表示一些k。否则,我们无法对对象I,J和K进行排序(想起纸张剪刀岩)。

假设z指定明确的“小于”关系。然后它还定义了“ $ \ Le $ ”自然“比较操作。即,如果z(j,i)= 0,则对象i $ \ le $ 对象j。因此,我们可以应用任何比较排序来对给定的 $ n $ 对象进行排序。

几乎所有排序算法都是比较排序。例如,Quicksort,Pergeort,Insertion排序,选择排序和泡沫排序。一个值得注意的例外是 counting sort

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top