如何仅基于“小于”的关系来对对象进行排序?
-
29-09-2020 - |
题
假设我有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 。
不隶属于 cs.stackexchange