免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3401 | 回复: 4
打印 上一主题 下一主题

[C++] [结贴]STL当中弱序的概念,和偏序/全序有什么区别和联系? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-17 09:18 |只看该作者 |倒序浏览
本帖最后由 centos_71 于 2015-01-17 21:06 编辑

STL里面的关联容器,元素的存储说是按照严格弱序来排列的。我查找了维基百科对于弱序这个概念本身并没有给出特别清晰的解释
我们学过的离散数学里面,只学过"偏序"和"全序"的概念。这个弱序到底是什么含义,和偏序的区别/联系是什么?

求大侠的解释。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
2 [报告]
发表于 2015-01-17 13:35 |只看该作者
回复 1# centos_71

A strict weak ordering is a binary relation < on a set S that is a strict partial order (a transitive relation that is irreflexive, or equivalently,[5] that is asymmetric) in which the relation "neither a < b nor b < a" is transitive.


也就是说“strict weak ordering”满足以下几个条件

1、对于给定集合S,其中任意两个元素a和b都存在ordering,这一点和“partial ordering”不同,后者不能保证任意两个元素之间都存在ordering,所以才叫“partial”
2、transitive指如果a<b且b<c,则a<c
3、irreflexive是指a<a一定为假
4、asymmetric指若a<b,则b<a为假
5、最后一句说的是“(not a<b) and (not b<a)”有传递性,也就是说,如果“(not a<b) and (not b<a)”且“(not b<c) and (not c<b)”,则“(not a<c) and (not c<a)”

STL里的less定义就需要满足以上条件

论坛徽章:
0
3 [报告]
发表于 2015-01-17 18:05 |只看该作者
windoze 发表于 2015-01-17 13:35
回复 1# centos_71

谢谢,你的解释很专业,就是第(5)点有点不太明白:

为什么要用两个not之间加个and? 这个条件逻辑上等价于 ( a<b or b<a )------之前你在第(1)点和第(4)点不是说了吗,必然有a<b成立,或者b<a成立(两个不能同时成立)。如果是要说明这种关系可传递的,那么第(2)点也已经说了啊。

我的理解是,第(5)点是不是想表达,(1)(2)(4)所构成的等价关系(等价关系需要对称,自反,可传递),也是可传递的。这是更高一层的可传递,对吗?

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
4 [报告]
发表于 2015-01-17 20:17 |只看该作者
回复 3# centos_71

“(not a<b) and (not b<a)”咋能等价于“( a<b or b<a )”?明明是等价于“not ( a<b or b<a )”,话说你的数理逻辑要补课…………

(a<b)和(b<a)为啥一定要有一个成立?以自然数为例,难道a=b不行么?这不就是前面说的“(not a<b) and (not b<a)”的情况么?

weak ordering没有定义“=”,所以用了一种比较麻烦的方式。

论坛徽章:
0
5 [报告]
发表于 2015-01-17 21:07 |只看该作者
windoze 发表于 2015-01-17 20:17
回复 3# centos_71

“(not a

因为没有定义相等,所以定义了一个比较麻烦的等价! 这回我理解清楚了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP