zou*_*yjs 4 c++ sorting stl partial-ordering strict-weak-ordering
由于无反射性和传递性,operator <始终满足部分排序的定义.严格弱序的定义更严格,总排序的定义更严格.
我还阅读了文档中严格弱排序的定义:StrictWeakOrdering
前三个公理,无反射性,反对称性和传递性,是部分排序的定义; 严格弱排序的定义需要等价的传递性.总排序是满足更强条件的顺序:等价必须与平等相同.
我对这些定义不太确定.一些主要问题:
1. 偏序是否隐含地定义了等价?
2. 严格的弱订货和总订货怎么样?
3.STL在排序算法中需要严格的弱排序,为什么不是部分排序或总排序? 对于这个问题,我通过证明规则满足三个公理来阅读一些证明有效比较规则的教科书:无反射性,反对称性,传递性,这是部分排序的定义,文件指的是运算符<总是满足这个定义,所以为什么我们不能只使用部分排序比较对象,或者等效地使用运算符
部分订购基本上是<=.如果同时a <= b和b <= a那么你就可以说a是相当于b.但它也有可能是既不a <= b也不b <= a-这两个元素是无法比拟的.因此,您不能std::sort在具有部分排序关系的集合上强加总订单(如需要) - 充其量您可以进行拓扑排序.你也不能得出等价关系 - 同样,可能存在无法比拟的元素.
严格的弱排序就像<.它不允许同时使用a < b和b < a,如果两者都a < b没有b < a,你只能发音a和b等效.
总排序只是严格的弱排序,其中两个元素是等价的,当且仅当它们相等时(除了小于谓词之外,如果你有一个相等比较谓词,并且没有使用这两个元素的C++标准库算法,这只是有意义的)与此同时,这个问题在这方面基本上没有实际意义.
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |